Day by Day
(EN google-translate)
(PL google-translate)
Nachfolgend wird chronologisch verzeichnet, welche Inhalte in den Einzellehrveranstaltungen in Informatik-Ergänzungen für den Bachelor Ingenieurwissenschaften der Studienrichtung Mechatronik5 im Wintersemester 2021/22 behandelt wurden.
#1 Dienstag 23.11.2021
Übersicht und Vereinbarungen zur Ausgestaltung des Unterrichts
36_Java -- 1.1) Allgemeines zu Java78_Processing -- 1.2) Java Processing
30_Informatik3/07_Modifikatoren -- 1.3) Vergleich Java / C++
73_COACH3/09_Algorithmen/03_Evoopt 2.1) Themen im Bereich Softcomputing: Evolutionäre Algorithmen
62_Regelungssysteme/18_Fuzzy -- 2.2) Themen im Bereich Softcomputing: Fuzzy
67_Echtzeitsysteme/08_NeuronaleNetze -- 3.1) Neuronale Netze
79_Deep_Learning -- 3.2) Thema Deep Learning
Selbstorganisierte Karten am Beispiel der Kohonen-Netzwerke
79_Deep_Learning/01_day_by_dayhttps://de.wikipedia.org/wiki/Selbstorganisierende_Karte
Im Kurs entstandene Quelltexte:
Grafik1.zipGrafik2.zip
Grafik3.zip
Wichtige Hinweise:
Morgen, 24.11. ist Regelungstechnik in Präsenz in IWZ135
Donnerstag, 25.11. ist Informatik-Ergänzungen online von 8:30 bis 11:45
Ab kommender Woche (KW48) finden die Kurse Informatik-Ergänungen IE und Regelungstechnik RT online statt: RT Mittwochs von 8:30 bis 15:45, IE Donnerstags von 8:30 bis 15:45
#2 Donnerstag 25.11.2021 (online, siehe Moodle)
Teil 1: Beginnen mit Objektorientierter Programmierung
|
Einführung:
|
92_Soundinstallation/03_material/11_Snippets -- Kleine einführende Beispiele zu Processing
30_Informatik3/01_Vom_struct_zur_Klasse/06_Objektabstraktion -- Was heißt Objektorientierung?
30_Informatik3/09_Java/02_GettingStarted -- Java, einfache Datentypen
30_Informatik3/06_Vererbung/01_MesswerteUML -- Einführung von Vererbung
30_Informatik3/07_Modifikatoren -- Vergleich Modifikatoren in C++ und in Java
Beispiele zur Verwendung von Interfaces (Schnittstellen) in Java:
30_Informatik3/15_Rasterlayout/02_interfaces -- komplexes Beispiel
30_Informatik3/07_Modifikatoren -- ergänzende Hinweise zu Modifikatioren
Teil 2: Evolutionäre Algorithmen und ihre Implementierung
73_COACH3/09_Algorithmen/03_Evoopt#3 Donnerstag 02.12.2021
Thema: Neuronale Netze
|
Einführung zu Neuronalen Netzen
67_Echtzeitsysteme/08_NeuronaleNetzeÜbung
|
aus dem Unterricht: Neuronales Netz mit drei Neuronen, um die Funktionalität eines UND-Gatters abzubilden
public double neuron(double signal1, double w1, double signal2, double w2) { // 1. gewichtete Summe u bilden: double u = signal1*w1 + signal2*w2; // 2. Übergabe der gewichteten Summe an die Schwellwertfunktion: double d = 1.0; double out = 1.0/(1.0+Math.exp(-d*u)); // 3. Rückgabe des Wertes, den die Schwellwertfunktion liefert: return out; } public double netz(double in0, double in1, double[] ww) { double out10 = neuron(in0, ww[0], in1, ww[1]); double out11 = neuron(in0, ww[2], in1, ww[3]); double out20 = neuron(out10, ww[4], out11, ww[5]); return out20; } public void setup() { double[] ww = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0}; double[][] testpattern = { {0.0,0.0}, {1.0,0.0}, {0.0,1.0}, {1.0,1.0} }; double[] sollwerte = {0.0,0.0,0.0,1.0}; //UND-Gatter for(int i=0;i<testpattern.length;i++) { double output = netz(testpattern[i][0],testpattern[i][1],ww); println("Input: ["+testpattern[i][0]+"|"+testpattern[i][1]+"] out:"+output+" soll:"+sollwerte[i]); } } public void draw() { }
Code 0-1: aus dem Unterricht: Neuronales Netz mit drei Neuronen, um die Funktionalität eines UND-Gatters abzubilden
Hausaufgabe
|
#4 Donnerstag 16.12.2021
Thema 1: Fortsetzung OOP, Interfaces / Schnittstellen
Beispiele zur Verwendung von Interfaces (Schnittstellen) in Java:
30_Informatik3/15_Rasterlayout/02_interfaces -- Weiteres Beispiel: Bauteile in einem Programm zur Darstellung elektronischer Schaltungen
...aus dem Unterricht:
Schnittstelle.zipBild 0-1: BluJ-Projekt zu Schnittstellen
Bild 0-2: Processing-Version zu Schnittstellen
Übung
|
Erweiterungen
Schnittstelle002.zip -- sich farblich ändernde "Christbaumkugel"Schnittstelle003.zip -- verschiebliche Figuren.
Übung
Ergänzen Sie auch in Schnittstelle003 eine neue geometrische Figur und analysieren Sie das Programm in Ruhe
Thema 2: Fortsetzung Neuronale Netze, Einfache Optimierung eines einfachen Netzes
Grundlage soll das Netz aus drei Neuronen von letzter Woche sein. Die Weiterführung erfolgt in folgenden Schritten:
|
Neuron_mit_fehlerberechnung_aequivalenz.zip -- studentische Lösung variiert: Versuch ein Äquivalenzgatter abzubilden. Jedoch scheint dafür das Netz zu klein zu sein.
Thema 3: Fortsetzung Neuronale Netze, Backpropagation als Lernmethode für überwachtes Lernen
Motivation: Grundprinzip ist es, nicht selber ein sinnvolles Verhalten eines Softwaresystems zu programmieren, sondern dieses ein optimales Verhalten selbst erlernen zu lassen. Hier gibt es Unterschiede bei der Lernmethode, im Wesentlichen:
|
67_Echtzeitsysteme/08_NeuronaleNetze
Methode für überwachtes Lernen mit gelabelten Lernpattern (vergl. Vorlesung):
67_Echtzeitsysteme/08_NeuronaleNetze/03_Umsetzung -- Umsetzung des Lernverfahrens Backpropagation
#5 Donnerstag 06.01.2022
Motivation: Grundprinzip ist es, nicht selber ein sinnvolles Verhalten eines Softwaresystems zu programmieren, sondern dieses ein optimales Verhalten selbst erlernen zu lassen. Hier gibt es Unterschiede bei der Lernmethode, im Wesentlichen:
|
Die Prüfung wird als E-Test gemeinsam mit Simulations- und Regelungstechnik 2 am Donnerstag 20.01. ab 8:30 in IWZ140 durchgeführt. Siehe auch: Infos auf moodle.
Themen in Informatik-Ergänzungen werden sein (alles auf der Basis von Java/Processing):
|
Themen heute:
|
Thema 1: Besprechung des Backpropagation-Verfahrens (Wiederholung)
67_Echtzeitsysteme/08_NeuronaleNetze/02_Backpropagation -- Theorie des Lernverfahrens Backpropagation67_Echtzeitsysteme/08_NeuronaleNetze/03_Umsetzung -- Umsetzung des Lernverfahrens Backpropagation
Bild 0-3: Bild zur Erklärung der Backpropagation-Formeln.
Thema 2: E-Test-Aufgaben, u.a. Backpropagation-Verfahren
|
Thema 3: Objektorientierte Umsetzung eines skalierbaren Neuronalen Netzes
Beachten Sie: Anders als ein prozedurales Programm, werden bei objektorientierten Strukturen keine festen Abläufe implementiert, sondern Möglichkeiten zur Benutzung.
Objektorientiert mit Java sollen in gemeinsamer Diskussion die Klassen für ein skalierbares Neuronales Netz entworfen und implementiert werden.
Dabei soll von vorn herein auch darauf geschaut werden, ob die Umsetzung später eine leichte Implementierung des Backpropagation-Verfahrens ermöglicht.
|
Projektstand 001: Klasse Neuron implementiert und getestet:
Bild 0-4: UML-Klassendiagramm der Klasse Neuron in BluJ.
Projektstand 002: Klassen Netz und Schicht wurden ergänzt:
Bild 0-5: UML-Diagramm zu Netz.
Bild 0-6: UML-Diagramm zu Schicht.
Vorläufige Endversion, auf die dann gleich die erste Aufgabe aus dem E-Test übertragen wurde:
Bild 0-7: UML-Diagramm von Netz, jetzt mit get- und set-Methoden für die Gewichte w[][].
Thema 4: Objektorientierte Umsetzung des Backpropagation-Verfahrens
Bitte als Hausaufgabe probieren auf der Grundlage von NN003_Netz.zip.
Auf die vorangehende objektorientierte Implementierung eines Neuronalen Netzes aufsetzend, soll nun das Lernverfahren für überwachtes Lernen "Backpropagation" implementiert werden.
Thema 5: Lernvorgänge anhand zu lernender einfacher logischer Tabellen
|
#6 Donnerstag 13.01.2022
Themen:
|
67_Echtzeitsysteme/08_NeuronaleNetze/03_Umsetzung -- Backpropagation Beispiel.
50_Simulationstechnik/07_Genalgorithmus -- Genetische Optimierung
Übung: Ermittln einer geeigneten Netztopologie mittels eines evolutionären Algorithmus
|
Teil 2: Implementierung des Backpropagation-Algorithmus
Im Unterricht entstandene Teilprojekte:
NN005_Backpropagation.zip -- Backpropagation implementiert.
Zwischenübung: Kopie erzeugen NN006_Backpropagation und darin das Verfahren testen.
Bild 0-8: Konsolenausgabe des Fehler vor und nach dem Backpropagation-Prozess.
NN008_Evoopt.zip -- Aufruf des genetischen Algorithmus ergänzt.
Musterlösung zu Übung: Ermittln einer geeigneten Netztopologie mittels eines evolutionären Algorithmus
NN009_Evoopt.zip -- Processing-ProjektNN009b.zip -- Variante auf BlueJ übertragen.
Bild 0-9: Mittels BlueJ dargestellte "Uses-Hierarchie" (UML) der Klassen dieses Projektes.
Bild 0-10: Mittels BlueJ dargestelltes UML-Klassendiagramm der Klasse Evoopt. Man beachte das Objektattribut fehlerklasse vom Typ iFehlerklasse.
Fragen zur Musterlösung (vergl. auch Konsolenausgabe weiter unten):
|
Übung: Verändern Sie NN009_Evoopt so, dass schneller bessere Ergebnisse erzielt werden.
In0:0.0 In1:0.0 SOLL OUT:0.0 IST OUT:0.39920786503269345 In0:1.0 In1:0.0 SOLL OUT:1.0 IST OUT:0.3728375622072977 In0:0.0 In1:1.0 SOLL OUT:1.0 IST OUT:0.37419182430913195 In0:1.0 In1:1.0 SOLL OUT:0.0 IST OUT:0.356020762557117 Aktueller Fehler:1.0349329925243131 In0:0.0 In1:0.0 SOLL OUT:0.0 IST OUT:0.002142635151660366 In0:1.0 In1:0.0 SOLL OUT:1.0 IST OUT:0.9841678524106813 In0:0.0 In1:1.0 SOLL OUT:1.0 IST OUT:0.9837736136111899 In0:1.0 In1:1.0 SOLL OUT:0.0 IST OUT:0.021913859467224718 Fehler nach Backpropagation:0.031603174439782764 ITERATION NUMMER 1 von 20 mit evoopt Nach 0. Generation: Kleinster Fehler: 0.013285600828299321 Bei folgendem bestem Gen: 5 8 796 942 ITERATION NUMMER 2 von 20 mit evoopt Nach 1. Generation: Kleinster Fehler: 0.013239956475773968 Bei folgendem bestem Gen: 5 6 927 942 ITERATION NUMMER 3 von 20 mit evoopt Nach 2. Generation: Kleinster Fehler: 0.01021815552715307 Bei folgendem bestem Gen: 5 8 796 942 ITERATION NUMMER 4 von 20 mit evoopt Nach 3. Generation: Kleinster Fehler: 0.009720004753841799 Bei folgendem bestem Gen: 5 7 804 942 ITERATION NUMMER 5 von 20 mit evoopt Nach 4. Generation: Kleinster Fehler: 0.009531237757722896 Bei folgendem bestem Gen: 5 7 804 942 ITERATION NUMMER 6 von 20 mit evoopt Nach 5. Generation: Kleinster Fehler: 0.010585946269101292 Bei folgendem bestem Gen: 5 7 927 942 ITERATION NUMMER 7 von 20 mit evoopt Nach 6. Generation: Kleinster Fehler: 0.009730812882161922 Bei folgendem bestem Gen: 5 6 927 942 ITERATION NUMMER 8 von 20 mit evoopt Nach 7. Generation: Kleinster Fehler: 0.011733660827950637 Bei folgendem bestem Gen: 5 7 927 942 ITERATION NUMMER 9 von 20 mit evoopt Nach 8. Generation: Kleinster Fehler: 0.010381104171369294 Bei folgendem bestem Gen: 5 8 796 942 ITERATION NUMMER 10 von 20 mit evoopt Nach 9. Generation: Kleinster Fehler: 0.008452496338560066 Bei folgendem bestem Gen: 5 8 796 993 ITERATION NUMMER 11 von 20 mit evoopt Nach 10. Generation: Kleinster Fehler: 0.009061167557766316 Bei folgendem bestem Gen: 5 8 744 993 ITERATION NUMMER 12 von 20 mit evoopt Nach 11. Generation: Kleinster Fehler: 0.010720122828470123 Bei folgendem bestem Gen: 5 7 560 993 ITERATION NUMMER 13 von 20 mit evoopt Nach 12. Generation: Kleinster Fehler: 0.009307253790545627 Bei folgendem bestem Gen: 5 8 796 993 ITERATION NUMMER 14 von 20 mit evoopt Nach 13. Generation: Kleinster Fehler: 0.0103844810238656 Bei folgendem bestem Gen: 5 8 796 993 ITERATION NUMMER 15 von 20 mit evoopt Nach 14. Generation: Kleinster Fehler: 0.010605470275184832 Bei folgendem bestem Gen: 5 8 796 993 ITERATION NUMMER 16 von 20 mit evoopt Nach 15. Generation: Kleinster Fehler: 0.010881599258811643 Bei folgendem bestem Gen: 5 3 987 993 ITERATION NUMMER 17 von 20 mit evoopt Nach 16. Generation: Kleinster Fehler: 0.009396354893348526 Bei folgendem bestem Gen: 6 8 987 993 ITERATION NUMMER 18 von 20 mit evoopt Nach 17. Generation: Kleinster Fehler: 0.008631972427069078 Bei folgendem bestem Gen: 5 8 987 993 ITERATION NUMMER 19 von 20 mit evoopt Nach 18. Generation: Kleinster Fehler: 0.009191181141937633 Bei folgendem bestem Gen: 5 8 931 993 ITERATION NUMMER 20 von 20 mit evoopt Nach 19. Generation: Kleinster Fehler: 0.009696550864876606 Bei folgendem bestem Gen: 5 8 796 993 Das beste gefundene Gen hat die Werte: 5 8 796 993 Bestes Ergebnis nochmal überprüfen: Anzahl Neuronen in erster Schicht: 5 Anzahl Neuronen in zweiter Schicht: 8 d = 0.993 lernfaktor = 0.796 In0:0.0 In1:0.0 SOLL OUT:0.0 IST OUT:0.003898731367617084 In0:1.0 In1:0.0 SOLL OUT:1.0 IST OUT:0.996224648820531 In0:0.0 In1:1.0 SOLL OUT:1.0 IST OUT:0.9956996013234698 In0:1.0 In1:1.0 SOLL OUT:0.0 IST OUT:0.0040554230001477115 Fehler nach Test:0.008024541562755432
Code 0-2: Konsolenausgabe der genetischen Optimierung.