Übung
(EN google-translate)
(PL google-translate)
Aufgabe 1
|
Aufgabe 2
|
Wieviele Gewichte gibt es bei dem Beispielnetz aus Neuro_DA_Wandler_Mini?
Hinweis: Es sind alle beteiligten Neuronenschichten vollständig vernetzt.
Aufgabe 3
|
Funktioniert das Netz auch für Werte, die zwischen den gelernten Input-Werten liegen?
Aufgabe 4
Exportieren Sie nach dem Lernvorgang im Sketch Neuro_DA_Wandler_Mini die Gewichte.
Hinweis: Ein Beispiel, wie Gewichte in einem File gespeichert und wieder benutzt werden können, finden Sie in den beiden anderen Library-Beispielen in neuro: TicTacToe50_LIBRARY und TicTacToe51_Turnier_NEURO_Library. TicTacToe50_LIBRARY: Hier werden Gewichte gelernt und gespeichert. Sie dort im Tab "Lerprozess" die Methode: public void speicherGewichteAlsInDatei(String name, iNetz netz).
Programmieren Sie dann auf möglichst direkte und einfache Weise selber ein neuronales Netz, das dem von Neuro_DA_Wandler_Mini entspricht und verwenden die exportierten Gewichte von dort. Es soll die sigmoide Funktion verwendet werden mit o(u) = 1/(1+exp(-u)).
Weitere Hinweise finden Sie im Skript:
Überprüfen Sie ob Ihr Netz die gleichen Ausgänge liefert, wie das aus Neuro_DA_Wandler_Mini, wenn beide mit exakt den gleichen Gewichten arbeiten.
Hinweis: Um das durchzuführen, müssen die zuvor exportierten Gewichte auch in einer Variante von Neuro_DA_Wandler_Mini wieder importiert und verwendet werden, da durch die zugrundeliegenden Zufallsprozesse bei jedem Lernvorgang leicht andere Gewichte herauskommen.
Aufgabe 5
Versuchen Sie nun auch selber einen Backpropagation-Algorithmus zu implementieren. Dieser muß lediglich genau für Ihr in Aufgabe 4 erstellten Netz funktionieren. Es muß also keine allgemeine Implementierung sein.
Überlegen Sie sich dazu zunächst genau, welche Gewichte und Neuronen jeweils beteiligt sind, wenn ein bestimmtes ausgewähltes Gewicht verbessert werden soll. Sie könnten dazu Ihr Netz aufzeichnen, ein Gewicht herausgreifen und dazu farbig markieren, was aus der Formel im Skript dann in Ihrem Netz wo zu finden ist.
Hier ist das entsprechende Kapitel im Skript:
Aufgabe 6
Schauen Sie sich in der Library-Referenz den Quelltext der Klasse Netz an und vergleichen insbesondere die Implementierung des SDA-Verfahrens mit der im Skript angegebenen Formel:
Stimmt die Implementierung mit der Formel überein?
Aufgabe 7 -- Schnittstellen
Laden Sie sich das Projekt TicTacToe08_Turnier_P_korrigiert herunter:
Um das Konzept der Schnittstelle zu üben: Schreiben Sie selber einen TicTacToe-Spieler, in dem Sie einfach Ihre eigene Strategie mit Hilfe von Kontrollstrukturen (if...else) implementieren.
Lassen Sie dann Ihren Spieler gegen den optimalen Spieler antreten.
Aufgabe 8 -- Bilderkennung
Benutzen Sie das Ihnen mit der Library neuro bereitgestellte Framework, um ein neuronales Netz zur Bilderkennung zu schreiben.
Ihr Netz soll erkennen, ob Linienzüge in einem 4x4-Bild offen oder geschlossen sind.
Nachfolgend zeigen einige Beispiele, was gemeint ist. . soll dabei ein leerer Platz (weiss) in dem 4x4-Bild sein und # ein gesetztes Pixel (schwarz).
.### .#.# .#.# .### .... .#.# .#.# .### ###. #.#. .... .... .... #### ##.# .###
Code 0-1: Geschlossene und offene Figuren (Beispiele).
Überlegen Sie gut, wie Sie die Art und Lernmenge zunächst einfach und dann nach und nach immer schwieriger und allgemeiner gestalten können.
Überprüfen Sie im Verlauf Ihrer Arbeit, wann Under- und wann Overfitting bei Ihrem Netz geschieht und skalieren Sie ein neues Netz daraufhin in besserer Weise.
Schreiben Sie eine interaktive Anwendung, mit der es möglich ist, ein belerntes Netz auszuprobieren. Man könnte sich beispielsweise in einem Fenster eine Figur zusammenklicken und sie dann von Ihrem Netz beurteilen lassen.
Aufgabe 9 -- Verbesserung von neuro
Überlegen Sie sich, was man an neuro verbessern könnte, insbesondere:
|
Im folgenden kann die neuro-Library samt einiger Skripte zu deren Generierung heruntergeladen werden:
Beachten Sie auch die Hinweise zum Erstellen von Processing-Libraries hier:
Erstellen Sie auf dieser Grundlage eine eigene Neuro-Library.
Update der Library.
|
Hinweis: Für die Übung kann nach wie vor weiter die Library neuro verwendet werden.
https://www.youtube.com/watch?v=SacogDL_4JU&list=PLrUdxfaFpuuLyYmu__kWChp_F0weDD6yj -- Neuronales Netz lernt Musik zu komponieren, Teil 1
https://www.youtube.com/watch?v=nA3YOFUCn4U -- Neuronales Netz lernt Musik zu komponieren, Teil 2