Neuronale Netze, Fuzzy Control, Genetische Algorithmen Prof. Jürgen Sauer 12. Aufgabenblatt: Projektvorschläge für WS 2010/2011 Hinweis: Alle Projekte sind angemessen zu dokumentieren. Die Dokumentation erfolgt im Rahmen eines PDF- File oder einer HTML-Seite. Regelmäßige Absprachen mit dem Dozenten sind während der Bearbeitung eines Projekts unbedingt erforderlich. Abgabetermin für ein Projekt ist der 15. Januar 2011. 1. Aufgabe: Zwei-Spiralen-Problem a) Die Aufgabe ist, zwischen 2 Trainingsmengen die auf unterschiedlichen Spiralen in der x-y Ebene liegen (im Bild grün und rot) 1 zu unterscheiden. Beide Spiralen winden sich 3mal um den Nullpunkt und um sich selber. Eine mögliche Lösung ist ein MLP (2-20-10-1) 2. Löse das Problem im Rahmen eines MLP (z.b. mit 2 Eingabeneuronen, 2 hidden layer mit 20 bzw. 10 Neuronen und einem Ausgabeneuron. Realisiere das MLP auf der Basis dieser Angaben in einem MATLAB Skript unter Verwendung der MATLAB Toolbox. Nutze zur Darstellung der Lösung die Möglichkeiten von MATLAB (Graphical User Interface) 3. Zeige insbesondere die Klassifikation (0,1) der Netzausgabe über die Netzeingabe in dreidimensionalen Darstellungen (unterschiedliche Initialisierungen ergeben unterschiedliche Darstellungen). b) Gib ein MATLAB-Skript an, das das 2-Spiralenproblem mit Hilfe eines RBF-Netzes 4 unter Verwendung der MATLAB-Toolbox löst. Nutze auch hier zur Darstellung der Lösung die Möglichkeiten von MATLAB (Graphical User Interface) 5. c) Realisiere das unter a) angegebene Problem mit Hilfe eines Cascade Correlation Netzes. d) Die unter a) und b) angegebenen Aufgaben können mit Java, C++ und C# gelöst werden 2. Aufgabe: cascade-correlation-network 6, 7 a) Beschreibe bzw. implementiere den cascade-correlation network growing algorithm in MATLAB- Umgebung am Bsp. des XOR bzw. Zwei-Spiralen-Problem. b) Die Aufgabe kann auch mit Hilfe von Java, C++ und C# gelöst werden. 3. Aufgabe ( für Informatiker) Gegeben ist ein Matlab-Skript, das mit einer einfachen grafischen Benutzeroberfläche ausgestattet ist, die die Anordnung der zweidimensinalen Eingabemuster in folgender Form gestattet: Rechteck, Dreieck, Kreis, Ring, Buchstabe A. Die Dimension des Ausgaberaums kann eindimensional oder 2-dimensional (eckig) gewählt werden. Diese Vorgabe finden in einer Self-Organizing-Map Berücksichtigung, die Ausgabe der Feature Map beweist dies. 1 http://www.informatik.htw-dresden.de/~iwe/belege/2005/boerner/index.html 2 Vgl. http://www.neurocomputing.de/galerie.html 3 vgl. http://www.neurocomputing.de/galerie.html 4 Bodgan M. Wilamowski: Neural Network Architectures and Learning 5 vgl. http://www.neurocomputing.de/galerie.html 6 http://www.lac.inpe.br/~demisio/cap351/m11-2slidep.pdf 7 http://www.es.embnet.org/doc/courses99/software/ai/funet/cascor1.c 1
Die Aufgabe kann auch im Rahmen eines Java-Applets gelöst werden. 4. Aufgabe a) (für Informatiker): Applet zur Lösung des XOR mit Backpropagation 8 -- Überprüfung der Funktions- und Verfahrensweise, Test der Implementierung -- Einbau des Momentum (Erweiterung der Funktionsfähigkeit) -- Falls nötig: Korrektur und Anpassung der Benutzeroberfläche -- Einbau des Applets in das Skript bzw. Übernahme in meine Homepage b) (auch für Mathematiker) Die vorliegende Java-Lösung (Applet) soll daraufhin überprüft werden, ob ein geeignetes MATLAB-Skript (mit Elementen einer grafischen Benutzeroberfläche) dafür möglich ist. Auch die Bezeichnungen vom Java- Quellcode sollen in das MATLAB-Skript aufgenommen werden. 5. Aufgabe Schreibe ein Matlab-Skript, das mit Hilfe von Backpropagation aus 2 Vektoren das Kreuzprodukt errechnet. Das Skript soll eine geeignete GUI enthalten. 6. Aufgabe Gib ein MATLAB-Skript an, das eine Lösung des XOR-Problems mit Hilfe der MATLAB-Toolbox produziert und zeige anhand 3-dimensionaler Darstellungen (über die Eingabe die Netzwerkausgabe), wie unterschiedliche Initialisierungen unterschiedliche korrekte Lösungen produzieren. 9 7. Aufgabe: a) Zeige mit Hilfe eines MATLAB-Skripts am Bsp. des XOR, wie der Quickprop-Algorithmus (vorgeschlagen von Fahlmann) funktioniert. b) Zeige mit Hilfe eines MATLAB-Skripts am Bsp. des XOR, wie der Levenberg-Marquardt -Algorithmus funktioniert 10. 8. Aufgabe: a) Gib ein MATLAB-Skript an, das das im Skript veröffentlichte Java-Applet 11 als Vorlage benutzt. Das MATLAB-Skript soll dann auch eine entsprechende grafische Benutzeroberfläche realisieren b) Gib ein MATLAB-Skript an, das im Rahmen eines BAM Großbuchstaben (26 Buchstaben des Alphabets) in entsrechende Kleinbuchstaben umsetzt. 12 9. Aufgabe: (für Informatiker: Simulator für Backpropagation Netze) 8 vgl. Skriptum, 2.4.3.1 9 vgl. http://www.neurocomputing.de/galerie.html 10 Bodgan M. Wilamowski: Neural Network Architectures and Learning 11 http://fbim.fh-regensburg.de/~saj39122/vhb/nn-script/script/gen/applets/dosch/bam.html 12 IEEE Transactions on Neural Networks, Vol. 11, No. 4, July 2000: A Feedforward Bidirectional Associative Memory 2
Der Simulator 13 soll hinsichtlich einer besseren Bedienung durch eine Überarbeitung der grafischen Benutzeroberfläche neu gestaltet werden. 10. Aufgabe (Erlernen einer Funktion mit der Boltzmann-Maschine 14 ) a) Eine spezielle Funktion soll mit einer Boltzmann-Maschine erlernt werden. Das im Skriptum angegebene Java-Applet soll durch ein MATLAB-Skript ersetzt werden 15. b) Die unter a) festgelegte Anzahl der Eingabe- und Ausgabezellen auf 3 soll auf 5 erweitert werden. Sie sollen eine Invertierung der Bitfolgen bewirken. Als Eingabe sind wie unter a) nur Belegungen zugelassen, bei denen genau ein Neuron 1 und alle anderen auf Null gesetzt sind. Für 5 verdeckte Zellen mit einem Lernfaktor ε = 0.8 soll das Netz nach 500 Iterationen in der Lage sein, mit 90%iger Sicherheit die richtige Funktionsausgabe im Recall auszugeben. Die unter a) definierte grafische Benutzeroberfläche soll übernommen werden, die Anzahl der Ein- und Ausgabeneuronen sowie der verdeckten Neuronen soll zu Beginn des Lernverfahrens eingelesen werden können. 11. Aufgabe Hopfield-Netze bieten die Möglichkeit, Informationen assoziativ zu speichern. Fragt man nach einem bestimmten Begriff, so fallen dem Rechner bzw. demnetz weitere Eigenschaften ein, z.b.: Gegeben sind folgende Informationen: - Hans ist groß, schwarz und dick - Anna ist klein, blond und dünn - Ulrich ist klein, blond und dick Erinnert man sich an die blonde Anna, so weiß man, dass Anna zudem klein und dünn ist. Die Erinnerung an die blonde Anna aktiviert weitere Erinnerungen, das assoziativ strukturierte Gedächtnis arbeitet. Die vorliegenden Eigenschaften können folgendermaßen codiert sein Hans Anna Ulrich groß klein schwarz blond dick dünn 11 10 01 1 0 1 0 1 0 Die vorliegenden Informationen erhalten die folgenden Verschlüsselungen: - Hans ist groß, schwarz und dick 11111 - Anna ist klein, blond und dünn 10000 - Ulrich ist klein, blond und dick 01001 Diese Bitfolgen lassen sich als Muster eines Hopfield-Netzes auffassen, d.h. die zum Netz gehörende Energiefunktion nimmt an den Stellen der Muster Energieminima an. Sind Teilinformationen bekannt, lassen sich die restlichen assoziativ zugehörigen Informationen abrufen, wenn man das Netz wie ein Boltzmann-Netz behandelt. Bekannte Informationsteile werden als Eingabe betrachtet, alle restlichen Neuronen als Ausgabe, z.b.: Für die blonde Anna ist das zugehörige Muster 10x0y. Hier sind die Bitwerte 1, 0, 0 Eingabe und x, y Ausgabe eines Boltzmann-Netzes. Simuliertes Kühlen liefert x=0 und y=0, d.h. Anna ist klein und dünn. 12. Aufgabe a) Gegeben ist ein Matlab-Skript 16, das mit einer einfachen grafischen Benutzeroberfläche ausgestattet ist, die die Anordnung der zweidimensionalen Eingabemuster in folgender Form gestattet: Rechteck, Dreieck, Kreis, 13 http://fbim.fh-regensburg.de/~saj39122/wabrpi/index.html 14 vgl. Skriptum 2.6.4.2 15 vgl. lehrbrief6/fi-bolz Matlab 3
Ring, Buchstabe A. Die Dimension des Ausgaberaums kann eindimensional oder 2-dimensional (eckig) gewählt werden. Diese Vorgabe finden in einer Self-Organizing-Map Berücksichtigung, die Ausgabe der Feature Map beweist dies. Gegeben ist auch eine Anwendung in C#, die ungefähr dasselbe tut wie das gegebene Matlab-Skript. Die Präsentation soll im Rahmen einer HTML-Seite erfolgen, die grafische Benutzeroberfläche soll der des C#- Programms entsprechen. Das Programm soll ein Java-Applet werden, das in HTML-Seiten gestartet und ablaufen kann. Die HTML-Seite soll ins Skript eingebaut werden b) Schreibe ein MATLAB-Skript, das diese Aufgabe mit Hilfe von Neural Gas löst. 13. Aufgabe (Auffangen eines Balls) 17 Schreibe ein MATLAB-Skript mit grafischer Benutzeroberfläche, das das Auffangen eines Balls ermöglicht. 14. Aufgabe (Necker Cube Example) 18 Die Lösung ist in Java oder C++ oder C# anzugeben. 16 sof1.m bzw. Verzeichnis haneder im Verzeichnis lehrbrief7 17 http://www.htw-dresden.de/~iwe/belege/schneider/som.html 18 http://www.cs.cf.ac.uk/dave/java/boltzman/necker.html 4
15. Aufgabe (Comparison of Fuzzy and Neural) 19 Löse mit Hilfe der Fuzzy-Logic Toolbox folgende Probleme: - TRUCK BACKER-UPPER CONTROL SYSTEMS 20 - Fuzzy Truck Backer-Upper Systems - Neural Truck Backer-Upper System (Nguyen, Widrow) - Adaptive Fuzzy Truck Backer-Upper - Fuzzy Truck-and-Trailer Controler - BP Truck-and-Trailer Control systems 16. Aufgabe 1. Fallstudie: Transportkran Krankopf v (Krangeschwindigkeit) θ (Auslenkungswinkel) Last Ziel: Schwingungsfreies Transportieren von Lasten Aufgabenstellung: Solange Wunsch auf Bewegung des Krans besteht, d.h. Sollgeschwindigkeit v 0, soll Wunsch realisiert werden. Sobald Kran gestoppt wird, d.h. v 0 soll vorhandene Schwingung ausgeglichen werden. Lösung mit Fuzzy-Logik soll soll Sollgröße v soll θ Fuzzy- Motorleistung System Kran d θ FS dt 2. Funktionsapproximation mit anfis 19 Bart Kosko: Neural Networks and Fuzzy Systems, Prentice Hall, Englewood Cliffs, NJ 07632 20 Bart Kosko: Neural Networks and Fuzzy Systems, Prentice Hall, Englewood Cliffs, NJ 07632 5
a) Die Funktion y = 1./((x-3).^2+.01)+1./((x-.9).^2+0.4)-6 kann in MATLAB unter dem Namen humps aufgerufen 21 werden. Diese Funktion soll im Bereich von [0 2] approximiert werden. 2 b) Die Funktion y = f ( x) = 2x x soll im Bereich von x=[-10,10] approximiert werden. 21 vgl. 8. Aufgabenblatt, 4. Aufgabe 6