Day by Day
(EN google-translate)
(PL google-translate)
ACHTUNG AKTUELL 01.12.2020: BBB-Raum wurde gelöscht! -- Neuer Link (gleicher wie Simulations- und Regelungstechnik) statt des alten in Moodle eingetragen. Bitte nachschlagen!
Verzeichnis der im Verlauf des Semesters behandelten Themen
siehe auch day_by_day von 2019: 79_Deep_Learning/99_day_by_day_2018
Donnerstag 26.11.2020
Themen
|
Links zum Skript
Überblick (überwachtes Lernen): 79_Deep_Learning
67_Echtzeitsysteme/08_NeuronaleNetze
36_Java
78_Processing
92_Soundinstallation/03_material/11_Snippets
public int berechne(int x)
{
return x*x;
}
public void setup()
{
size(500,500);
int z = 4;
println("Hallo "+z+"*"+z+"="+berechne(z));
}
int x = 0;
public void draw()
{
background(255,0,0);
fill(0,0,255);
ellipse(x,height/2,height/10,height/10);
x = x+5;
if(x>width)
x = 0;
}
Code 0-1: Beispielsketch mit Processing
Übung 1
Aufgabe: Antivalenzgitter mit Processing -- 02_WS2020_21/02_IE/01_day_by_day/2020-11-26_09-34-11.mp4
function out = sigmoid(u,d)
out = 1 ./ (1 + exp(-d.*u));
endfunction
u = -3:0.1:3;
d = 0.1;
o1 = sigmoid(u,d);
plot(u,o1);
d = 1.0;
o1 = sigmoid(u,d);
plot(u,o1);
d = 10.0;
o1 = sigmoid(u,d);
plot(u,o1);
Code 0-2: Sigmoid-Test mit Scilab
Bild 0-1: Screenshot des Scilab-Plots zu obigem Skript.
Übung 2
Der nachfolgende Sketch stellt Ihnen Methoden zur Verfügung, um das Neuronale Netz dort umzusetzen:
67_Echtzeitsysteme/08_NeuronaleNetze/01_Neuron
Folgen Sie den Kommentaren im setup und dort in der leeren for-Schleife, um einen Optimierer zu implementieren, der die Gewichte möglichst gut so anpasst, dass sich ein Antivalenzgitter ergibt.
Vervollständigen Sie den Sketch durch einen Testlauf am Ende, der zeigt, ob das Gatter auch funktioniert.
Besonderheiten: Input -1,+1 statt 0,1 und Output <0.5 .. >0.5 statt 0 oder 1.
Test006Neuro.zip
Musterlösung zu Übung 2: Test009NeuroSchichtMehr.zip
Variante mit Schrittweitensteuerung: Test010Schrittweitensteuerung.zip
Donnerstag 03.12.2020
Oft überwiegt das "Machen" bei Übungen. Doch das Finden eines guten Lösungsweges durch intensives Nachdenken ist meistens wichtiger. Dies erklärt die Ausrichtung der heutigen Übung.
KI-Themen
|
Backpropagation -- 75_Echtzeit3/01_NeuronaleNetze/02_Backpropagation
Umsetzung des Backpropagation-Verfahrens -- 75_Echtzeit3/01_NeuronaleNetze/03_Umsetzung
Gradientenverfahren -- 50_Simulationstechnik/05_Parameterindentifikation/01_KleinsteQuadrate/01_Linearregression
Kleinste Quadrate Methode -- 50_Simulationstechnik/05_Parameterindentifikation/01_KleinsteQuadrate/02_Beispiel
Kleinste Quadrate Methode mit Scilab -- 50_Simulationstechnik/05_Parameterindentifikation/01_KleinsteQuadrate/05_Scilab
Heuristiken -- 50_Simulationstechnik/06_Optimierung/02_Heuristiken
Modifiziertes Gradientenverfahren -- 50_Simulationstechnik/06_Optimierung/03_ModifizierteG
Genetische Optimierung -- 50_Simulationstechnik/07_Genalgorithmus
Software-Entwicklungsthemen
|
36_Java
Datentypen im Java -- 36_Java/01_GettingStarted
Modifikatoren -- 30_Informatik3/07_Modifikatoren
Objektabstraktion -- 30_Informatik3/01_Vom_struct_zur_Klasse/06_Objektabstraktion
Objektfähigkeit -- 30_Informatik3/01_Vom_struct_zur_Klasse/08_Objektfaehigkeiten
UML-Klassendiagramm -- 30_Informatik3/02_UML/02_UML_Klassendiagramm
Konstruktor und UML -- 30_Informatik3/02_UML/03_Konstruktor
Vererbung -- 30_Informatik3/06_Vererbung/01_MesswerteUML
Schnittstellen / Interfaces -- 30_Informatik3/15_Rasterlayout/02_interfaces
Java Native Interface -- 30_Informatik3/14_Zwischenprojekt/03_JNI
ArrayList -- 30_Informatik3/15_Rasterlayout/03_ArrayList
Videos aus der Lehrveranstaltung:
Was ist Backpropagation? -- 02_WS2020_21/02_IE/01_day_by_day/backpropagation.mp4
02_WS2020_21/02_IE/01_day_by_day/v1_entwurf.mp4
02_WS2020_21/02_IE/01_day_by_day/v2_entwurf.mp4
02_WS2020_21/02_IE/01_day_by_day/v3_matmult.mp4
02_WS2020_21/02_IE/01_day_by_day/v4_uebung.mp4
Übung 1
AUFGABE: Entwickeln Sie Konzepte zur objektorientierten Repräsentation Neuronaler Netze. Überlegen Sie sich:
|
Übung 2
AUFGABE: Programmieren Sie ein TicTacToe-Spiel mit Processing
|
AUFGABE (alternativ): Programmieren Sie ein Pong-Spiel mit Processing
|
ACHTUNG AKTUELL 01.12.2020: BBB-Raum wurde gelöscht! -- Neuer Link (gleicher wie Simulations- und Regelungstechnik) statt des alten in Moodle eingetragen. Bitte nachschlagen!
Donnerstag 10.12.2020
Themen:
|
Videos aus Teil 1:
BlueJ, Processing und Libraries 1 -- VIDEO_2020_12_10_08_47_14.mp4
BlueJ, Processing und Libraries 1 -- VIDEO_2020_12_10_08_56_28.mp4
Material zur ersten Übung:
Neuronetz001.zip
Bild 0-2: UML-Klassendiagramm der Klasse Neuronetz aus obigem Sketch.
Musterlösung zu Übung 1:
Vormals entwickeltes optimierendes Netz für Antivalenzgatter. Ergänzung einer Ausgabe der Gewichte im Format für Neuronetz -- Test011Schrittweitensteuerung_fuer_neuronetz.zip
Verwendung der Gewichte aus dem vorangehenden Projekt mit d=1.4 / Nachweis der Übereinstimmung der Ergebnisse --- Neuronetz002.zip
println("Für Neuronetz:");
println("//d="+d[0]);
println("double[][][] w = {");
println(" {");
println(" {"+w[0]+","+w[3]+"},");
println(" {"+w[1]+","+w[2]+"}");
println(" },");
println(" {");
println(" {"+w[6]+","+w[8]+"},");
println(" {"+w[7]+","+w[9]+"}");
println(" },");
println(" {");
println(" {"+w[4]+","+w[5]+"}");
println(" },");
println(" };");
Neuronetz002 LIEFERT (Konsolenausgabe):
in: -1 -1 out:0.49919913641136243 in Testprogramm vorher: 0.49919912471348593
in: -1 1 out:0.5039652060903305 in Testprogramm vorher: 0.5039651950719938
in: 1 -1 out:0.5000185760112115 in Testprogramm vorher: 0.5000185751153124
in: 1 1 out:0.4999772392646055 in Testprogramm vorher: 0.4999772380555142
Code 0-3: Umwandlung der Gewichte aus Test011Schrittweitensteuerung_fuer_neuronetz in das Format von Neuronetz / Konsolenausgabe aus Neuronetz002
Material zur 2. Übung: Neuronetz003.zip
Vorläufige Musterlösung (liefert in den meisten Durchläufen richtige Ergebnisse / kläre noch ob Konditionierungsproblem oder Fehler in Klasse Neuronetz): Neuronetz004.zip
Nachtrag: größeres Netz [2,6,6,1] liefert verläßlich nach dem Belernen richtige Ergebnisse, Lösung war somit in Ordnung: Neuronetz005.zip
Donnerstag 17.12.2020
Themen:
|
Link zu Deep-Learning auf kramann.info:
79_Deep_Learning/02_TicTacToe/03_SDA
Neuronetz006_SDA_DeepLearning.zip -- Im Unterricht entstandene noch nicht getestete Implementierung des SDA-Verfahrens.
Hinweise zur "Ferienübung" (Tic-Tac-Toe)
|
Donnerstag 07.01.2021
Themen
|
Musterlösungen zur "Ferienübung":
TTT001.zip -- Zwei meschliche Spieler können gegeneinander spielen. TTT erkennt gültige Züge.
Bild 0-3: UML-Klassen-Diagramm der Klasse TTT in TTT001. TTT repräsentiert das TicTacToe-Spiel.
TTT002.zip -- Mensch gegen Computer: TTT macht gültige Zufallszüge
Bild 0-4: UML-Klassen-Diagramm der Klasse TTT in TTT002.
TTT003.zip -- Mensch gegen Computer: TTT macht optimale Züge. Berater liefert Wahrscheinlichkeiten. Computerspieler benutzt den Berater zur Auswahl eines Zuges.
Bild 0-5: UML-"Benutzt"-Diagramm: Welche Klasse benutzt welche?
Bild 0-6: UML-Klassen-Diagramm der Klasse TTT in TTT003.
Bild 0-7: UML-Klassen-Diagramm der Klasse Berater in TTT003.
Bild 0-8: UML-Klassen-Diagramm der Klasse Computerspieler in TTT003.
Unterrichtsmaterial
Kohonen102.zip -- Beispielimplementierung Kohonen-Netz
SDA_Bitvergleicher_deeep_003.zip -- SDA-Verfahren, getestete Implementierung, Pretraining ausgeschaltet!
SDA_Bitvergleicher_deeep_004.zip -- SDA-Verfahren, getestete Implementierung, Pretraining läuft!
Bestimmung der Gewinnw. bei Tic-Tac-Toe -- berater.mp4
(Teil-) Musterlösung zur Übung
TTT004_Lernpattern_Speichern.zip
SDA_Bitvergleicher_deeep_005_TTTlernpattern.zip
Lade Lernpattern aus Datei lernpatternXgewinnt.txt Lernpattern fertig geladen! Verhalten VOR Backpropagation und VOR Pretraining: **** TEST **** FEHLER AKTUELL = 97504.00024508747 Verhalten VOR Backpropagation NACH Pretraining: **** TEST **** FEHLER AKTUELL = 54697.41006160564 Verhalten NACH Backpropagation: **** TEST **** FEHLER AKTUELL = 16126.029159320402
Code 0-4: Ausgabe
**** NEW ****
Donnerstag 14.01.2021
Themen:
|
(Wieder nur) Teillösungen zum Thema Tic Tac Toe
TTT401_Lernpattern_Berater_bilden.zip -- Erstellen der Lernpattern, die alle Antworten des Beraters abbilden.
TTT402a_NeurspielerTraining_50trainiert.zip -- Trainieren von 50 Lernpattern aus den möglichen 549946.
TTT402b_NeurspielerTraining_500trainiert.zip -- Trainieren von 500 Lernpattern aus den möglichen 549946.
TTT402c_NeurspielerTraining_5000trainiert.zip -- Trainieren von 5000 Lernpattern aus den möglichen 549946.
Kohonen (SOM)
Kohonen102.zip -- Beispielimplementierung Kohonen-Netz
Kohonen104_fertiges_Netz_testen.zip -- Vorgabe von Reizen an eine fertig belernte SOM
Prinzip beim bestärkenden Lernen (Reinforced Lernen) realisiert als Kombination von Genetischem Algorithmus und Neuronalem Netz
Im folgenden soll ein NN lernen in einem sehr primitivem Acade Game die richtigen Bewegungen auszuführen, um Blöcke, die von oben herabfallen zu fangen.
Belernt wird mit Hilfe eines genetischen Algorithmus. Das Lernprinzip ist bestärkendes Lernen, da die beste Strategie nicht bekannt ist, sondern Fortschritte belohnt werden, bzw. das Überleben in der nächsten Generation sichern. img neuropong.png Der rote Block fällt herab und soll vom grünen gefangen werden. Der grüne Spieler kann mit jedem Tick ein Feld nach links oder rechts gehen, oder stehen bleiben. Mit jedem Tick fällt ein roter Block ein Feld heiter nach unten.
Neuropong001.zip -- Zufallsspieler
Neuropong002.zip -- Güte eines Spielverlaufs berechnen
Neuropong003.zip -- NN als Spieler. Belernt wird mit immer gleichen Spielverläufen
Neuropong004.zip -- NN als Spieler. Belernt wird mit wechselnden Spielverläufen
Übung
|
simulation.zip
erklaervideo_reinforced_learning.mp4 -- Erläuterungen zur Übung.
Musterlösung zur Übung:
Neuropendel001_Modell.zip
Neuropendel002_Fehlerfunktion.zip
Neuropendel003_Neuroregler_zufaellig.zip
Neuropendel004_Genetische_Optimierung.zip
Mögliche Klausurthemen
|