kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




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:
  1. Neuronale Netze
  2. Backtracking
  3. Implementierung
  4. Java Schnittstellen
/67_Echtzeitsysteme/08_NeuronaleNetze
/80_Robuste_Systemintegration/10_EvoFuzzy/04_NeuronaleNetze
  • Java / Processing
/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.
Visualisierung von TicTacToe03_ZUFALL_GEGEN_OPTI.

Bild 0-1: Visualisierung von TicTacToe03_ZUFALL_GEGEN_OPTI.

Optimaler Spieler A gegen Zufallsspieler B:
TicTacToe04_ZUFALL_GEGEN_OPTI.zip
Optimaler Spieler gegen Zufallsspieler nach einiger Zeit (Pause wurde deaktiviert).

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
  1. Allgemeines Wissen über Neuronale Netze (NNs) und Deep Learning
  2. Von Hand Ausgabe eines kleinen NNs berechnen, wenn sigmoide Funktion angegeben.
  3. Von Hand Backtrackingschritt eines kleinen NNs berechnen, wenn Formel gegeben.
  4. NN als Java-Funktion implementieren.
  5. Threads und Schnittstellen programmieren (Java).
  • Projektarbeitsthemen

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