Deep Learning day by day Wintersemester 2018/19
(EN google-translate)
(PL google-translate)
----------------
Deep Learning:
Im Skript verfügbare Themen:
1 Neuronale Netze
2 Backtracking
3 Implementierung
4 JNI
5 BlueJ & Processing
6 Selber Processing-Libraries erstellen
Neue speziell auf Deep Learning bezogene Themen
7 Theorie Deep Learning
8 Testimplementierung
9 DL4J verstehen
10 DL4J benutzen
11 DL4J einbetten: Android / Processing
Termine:
22.11. 1, 2 Neuronale Netze, Backtracking
29.11. 3, 4 Implementierung, JNI
06.12. 5, 6 BlueJ & Processing, Selber Processing-Libraries erstellen
13.12. 7, 8 Theorie Deep Learning, Testimplementierung
20.12. 9, 10, 11 DL4J-Beispiele / eigene Umsetzung
10.01. *** Projekt ***
17.01. *** Projekt ***
24.01. *** E-Test / Projekt ***
* Projekt kann in Zweiergruppen bearbeitet werden.
* E-Test-Note und Projektnote zählen jeweils zu 50% in dieser LV.
* Projektthemen ev. mit Elektrokutschen: Objekterkennung / Navigation
Code 0-1: Entwurf für den Ablauf der LV.
Donnerstag 22.11.2018:
- Neuronale Netze
- Backtracking
- Implementierung
- Java Schnittstellen
|
/67_Echtzeitsysteme/08_NeuronaleNetze
/80_Robuste_Systemintegration/10_EvoFuzzy/04_NeuronaleNetze
/83_AV/02_Architekturen/02_Entwurfsmuster (Schnittstelle == interface in Java)
/78_Processing
/93_Android_Proc/02_Eigene_Library (Erstellen einer eigenen Processing-Library)
/92_Soundinstallation/03_material/11_Snippets
Übung: Einfacher Anwendungsfall: Tic-Tac-Toe
- Sämtliche Spielverläufe ermitteln
- Für jeden Zug Gewinnwahrscheinlichkeit ermitteln
- Automatischen Spieler selber implementieren
- Neuro-Spieler entwerfen
|
TicTacToe001.zip -- Musterlösung1: Alle Permutationen von 012345678 finden
TicTacToe002.zip -- Musterlösung2: Aus den Permutationen alle gültigen Partien extrahieren.
Neue Versionen (Grandlage für nächsten Unterricht):
TicTacToe01_Partien_rekursiv.zip -- rekursive Ermittlung der Partien (schneller, besser!)
TicTacToe02_GUETE.zip -- Implementierung und Test einer Gütefunktion
Basisversion für das Training: Zufallspieler gegen Zufallspieler:
TicTacToe03_ZUFALL_GEGEN_OPTI.zip
- Wer beginnt wird vor jeder Partie zufällig festgelegt.
- Bei der Trainer-Klasse müssen zwei Spieler registriert werden.
- Es wird aufgezeichnet, wer wie oft gewonnen hat und die unentschiedenen Partien.
- Derzeit ist der Durchlauf durch eine Pause verlangsamt. Für das richtige Training muß diese Pause entfernt werden.
- A ist rot, B ist grün. Sind die Kreuze rot, hat in der aktuellen Partie A begonnen.
- Der der beginnt macht immer Kreuze.
|
Bild 0-1: Visualisierung von TicTacToe03_ZUFALL_GEGEN_OPTI.
Optimaler Spieler A gegen Zufallsspieler B:
TicTacToe04_ZUFALL_GEGEN_OPTI.zip
Bild 0-2: Optimaler Spieler gegen Zufallsspieler nach einiger Zeit (Pause wurde deaktiviert).
Effizientere Umsetzung als neue Basis:
TicTacToe05_effizient.zip
TicTacToe06_effizient.zip
TicTacToe08_Turnier.zip
Erstes Neuronales Netz ("klassisch"):
TicTacToe09_feldfrei.zip
Verbesserte objektorientierte Programmstruktur bei Neuronalem Netz, Es lernt, wo es setzen darf
TicTacToe32_Neuro_strukturiert.zip -- Dieses Netz lernt, was es lernen soll.
Donnerstag 06.12.2018:
- Neu: Diese LV heißt ab jetzt "Informatik-Ergänzungen".
- Es wird ein größeres Gewicht auf Programmierkenntnissen gelegt.
- Dafür wird der Einstieg in Deep-Learning weniger weit getrieben, wenn auch weiterhin DL das Hauptthema bleiben soll, bzw. dasjenige, anhand dessen die Programmiertechniken erlernt werden.
- Die Prüfungsform bleibt wie letzte Woche angekündigt.
|
Agenda 6.12.
- Teil 1: Programmiertechnik
- Teil 2: TicTacToe mit Rekursion
- Teil 3: Klassische Neuronale Netze am Beispiel eines Perceptron-Netzes, das richtig setzen lernt bei TicTacToe.
- Teil 4: Übung: Von Teil 3 ableiten, selber ein Netz zu erzeugen, das TicTacToe spielen kann.
|
Teil 1: Programmiertechnik, Themen:
Nr. |
Konzept |
Darstellung durch Beispiel |
Bemerkungen |
1. |
Callback-Funktionen |
mousePressed(), draw() |
Datenaustausch über Variablen |
2. |
Random |
Brownsche Atombewegung |
z.B. Generierung von Testwerten |
3. |
Tabs |
eigene Klassen schreiben |
Quelltext organisieren |
4. |
Schnittstellen |
Kontroll-Ausgabe |
Anwendung: Spieler austauschbar machen. |
5. |
Threads |
Echtzeitsimulation |
Trennung von Simulation und Visualisierung |
6. |
Zustandsvariable |
Abbilden verschiedener Phasen in einer App |
Umsetzung über switch-case-Blöcke |
7. |
Late Binding |
Grundproblem bei Threads: fehlende Instanzen |
Objekte erst erzeugen, wenn sie benötigt werden |
8. |
BlueJ |
Java-Entwicklungsumgebung |
Klassendarstellung mit UML / strukturierte Entwicklung / eigene Libraries |
9. |
Eigene Libraries |
Permutation |
Dinge, die man sich einmal erarbeitet hat, kann man sich über Libraries dauerhaft verfügbar machen. |
Tabelle 0-1: Programmiertechnik-Themen heute.
Permutation001.zip -- zu 9.
Teil1_06Dez_alle_Sketche.zip
Teil2: 79_Deep_Learning/02_TicTacToe/01_Rekursiv
Teil 3 und 4: 79_Deep_Learning/02_TicTacToe/02_Perceptron
Donnerstag 13.12.2018:
- Nachtrag/Korrektur zum optimalen Spieler:
|
79_Deep_Learning/02_TicTacToe/01_Rekursiv -- siehe unten: "Optimaler Spieler -- Nachtrag"
- Deep-Learning-Umsetzung mit Hilfe des SDA-Algorithmus
|
79_Deep_Learning/02_TicTacToe/03_SDA
- Übung zur Festigung des bisher Erarbeiteten und zur Erarbeitung neuer Inhalte und Fertigkeiten
|
Donnerstag 10.01.2019:
- Ankündigung der Inhalte für den E-Test
|
- Allgemeines Wissen über Neuronale Netze (NNs) und Deep Learning
- Von Hand Ausgabe eines kleinen NNs berechnen, wenn sigmoide Funktion angegeben.
- Von Hand Backtrackingschritt eines kleinen NNs berechnen, wenn Formel gegeben.
- NN als Java-Funktion implementieren.
- Threads und Schnittstellen programmieren (Java).
|
In allen Fällen geht es darum, die Fragestellungen anhand praktischer Umsetzungen zu beantworten.
- Abzugeben/zu Erstellen sind:
|
Ergebnisposter (Ergebnisbeschreibung, corporate design, A0, pdf)
Projekt/Quelltexte
- Außerdem: ca. 10Min. Abschlußpräsentation mit Vorführung der Software am Donnerstag 24.1.
|
- Beispielposter (Design könnte besser sein), siehe: Poster im Gang von IWZ135.
|
- Außer 5. und 8. werden alle Projekte mit Processing implementiert.
|
Corporate Design (bitte in rot): https://informatik.th-brandenburg.de/fileadmin/user_upload/fb-informatik/dokumente/Vorlage_Poster_Abschlussarbeit/Abschlussposter_A2_FBIM_Corporate_Design.ppt
NEU: Präsentation findet als "Postersession" statt, d.h.:
- ... Es werden keine Folien für die Präsentation benötigt.
- Die Poster müssen wirklich fertig werden.
- Falls der Ausdruck nicht kurzfristig möglich ist, wird das Poster am Beamer gezeigt.
- Trotzdem soll in jedem Fall auch die eigene Software/das eigene Gerät in Aktion gezeigt werden.
|
1. Thema: Over- / Underfitting bei TicTacToe
- Untersuchen Sie das Lernverhalten verschieden großer Netze für TicTacToe.
- Weisen Sie anhand konkreter Beispiele (TicTacToe) den Effekt des Over- und den des Underfitting nach.
* Lassen sich auch Unterschiede für verschiedene Netzwerkformen aufweisen?
2. Thema: Pong
- Überlegen Sie sich ein Konzept, wie ein NN auf das Pong-Spiel angewendet werden kann.
- Implementieren Sie eine einfache Variante von Pong mit NN als Spieler.
- Einfach kann heißen: Es gibt nur einen Spieler. Bälle werden nie reflektiert.
* Umsetzung eines Spiels, bei dem ein menschlicher Spieler gegen ein NN spielt.
3. TicTacToe Mit/ohne Vortraining
- Wieviele Neuronen-Schichten können noch ohne weiteres ohne Vortraining belernt werden.
- Wieviel aufwändiger ist das Belernen mit gegenüber dem ohne Vortraining.
* Wie groß sollten die Lernfaktoren bei den verschienen Lernmethoden und deren Teilen sein?
* Wie sollte der Lernfaktor am besten gesteuert werden?
4. SDA zur Filterung von Bildern
- Untersuchen Sie praktisch die Möglichkeit mittels SDA Störungen aus Bildern heruaszufiltern.
- Beispiel: Konturen schließen.
* Bereinigung der Einzelbilder historischer Trickfilme (prinzipieller Nachweis): https://archive.org/details/silent_films
5. DL4J
- DL4J-Installation auf PC-Pool-Rechnern testen.
- Anleitung zur Verwendung von DL4J schreiben.
* TicTacToe mit SDA auf der Grund von DL4J umsetzen (nicht vorhandenes Beispiel nehmen)
6. NN lernt Regelalgorithmus
- Nehmen Sie sich ein einfaches regelungstechnisches Problem vor.
- Legen Sie dafür einen Regelkreis aus.
- Belernen Sie ein NN mit dem In- und Output dieses Regelkreises.
* Lassen Sie ein NN eine das Ausregeln einer Regelstrecke erlernen ohne des Verhaltens eines anderen Regelalgorithmus'
7. Snake
- NN soll das Spiel Snake erlernen. (Überlegen Sie sich, wie ein Spielsituation und ein nachfolgender Zug bewertet werden kann.)
- Implementierung NN steuert Schlange alleine.
* Implementierung Mensch gegen Maschine.
siehe z.B.:
https://de.wikipedia.org/wiki/Snake_(Computerspiel)
8. TicTacToe mit NN als Gegner auf Mikrocontroller
- Übertragen Sie ein belerntes Netz zu TicTacToe auf einen ArduinoMicro.
- Bauen Sie eine Mikrocontroller-Testschaltung auf, die es einem Spieler erlaubt gegen das NN zu spielen.
* Erstellen Sie ein Release, das ernsthaft von beliebigen Personen benutzt werden kann (Punkte-Anzeige, Info, wer dran ist usw.)
9. Audio-Analyse
- Unterscheidung dreier Sinustöne verschiedener Frequenz durch ein NN
- Welche Größe eines NNs ist hier mindestens erforderlich?
- Wie reduziert man den Datenumfang einer Audiodatei?
* Implementierung eines Codeschlosses, das mit Tonfolgen arbeitet (prinzipieller Nachweis durch praktische Variante) / idealerweise PC-Mikrofon verwenden.
10. Reinforced Learning
* Wie funktioniert "Reinforced Learning"? / Anwendung: Regelung eines "Fahrzeugs" in einer sehr einfachen Simulationsumgebung.
studentische Vorschläge:
??. z.B. anderes Spiel, bei dem ein NN Gegner für einen Menschen ist.
Code 0-2: Projektarbeitsthemen