kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




DAY BY DAY

(EN google-translate)

(PL google-translate)


Der E-Test "Informatik Ergänzungen / Deep Learning BMT5" findet am Mittwoch den 22.01.2020 ab 10:15 IWZ135 im IWZ135 statt.


Di 26.11.2019, 08:30-10:00

  • Überblick

Mi 27.11.2019, 08:30-14:00

Implementierung eines Beispiels des Helmholtz-Prinzips

Literatur: Desolneux et al. "From Gestalt Theory to Image Analysis"

  • P: Wahrscheinlichkeit, dass eine bestimmte Gestalt zufällig irgendwo im Bild entsteht
  • N: Anzahl der Möglichkeiten, wo man nachschauen kann, ob diese Gestalt dort im Bild vorhanden ist
  • E = N*P Erwartungswert, wie oft man die Gestalt im Bild wahrscheinlich in einem Zufallsbild gleicher Pixelanzahl wie das untersuchte finden wird.

Im Unterricht entwickelte aufeinander aufbauende Beispiel-Implementierungen des Helmholtz-Prinzips:

Helm001.zip -- Bilder laden und Umwandlung in Matrix mit Processing
Helm002_kantenfilter.zip -
Helm003_helmholtz.zip -- Implementierung des Helmholtzprinzips: Wagerechte und senkrechte Linien bestimmter Pixelanzahl mit bestimmte "Löcheranzahl" werden gesucht / gezählt
Helm004_helmholtz_draw.zip -- zeichnet gefundene Linien ein, die den geforderten Kriterien entsprechen
Helm005_helmholtz_draw.zip -- andere Schwellwerte als bei 004
Helm006_random.zip -- Vergleich: Wieviele Linien werden tatsächlich in einem Zufallsbild gleicher Pixelanzahl gefunden?

Di 03.12.2019, 08:30-10:00

SOM -- Self Organizing Maps

  • Beispiel: Kohonen-Map
https://de.wikipedia.org/wiki/Selbstorganisierende_Karte
Aufgabe 1
  • Eingangsvektoren eines 2D-Kohonen-Netzes sind beliebige RGB-Farben.
  • Zu Beginn werden die Gewichte des 2D-Netzes zufällig mit RGB-Werten initialisiert.
  • Nach genügend vielen Lernschritten prägen sich Farbbereiche auf dem topologischen Netz aus.
  • Visualisieren Sie die sich ergebenden gelernten Gewichte als Farben.
Kohonen101.zip
Kohonen102.zip
Kohonen103_BUNT.zip
Kohonen104_fertiges_Netz_testen.zip
Aufgabe 2
  • Schreiben Sie ein Programm, das für eine Natürliche Zahl bestimmt, wie oft in ihr die Primfaktoren 2,3,5 und 7 vorkommen.
  • Jede natürliche Zahl x kann somit dargestellt als x = 2^p * 3^q * 5^r * 7^s * REST.
  • p,q,r,s sollen als vierdimensionaler Stimulus für ein Kohonen-Netz verwendet werden.
  • Belernen Sie ein 2D-Kohonen-Netz mit den ersten 100 natürlichen Zahlen.
  • Erzeugen Sie eine 2D-Karte, in der die ersten 200 natürlichen Zahlen organisert dargestellt werden.

Di 10.12.2019, 08:30-10:00

  • Einführung in Neuronale Netze mit dem Perceptron.
  • Beispiele aus der Industrie: Cognimem / Fische sortieren
  • Implementierung eines NN / einfache Optimierung
67_Echtzeitsysteme/08_NeuronaleNetze
Neuron3.zip -- Neuronen-Anzahlen pro Schicht: 2-4-1

Mi 11.12.2019, 08:30-14:00

  • Theorie zum Backtracking-Verfahren
  • Implementierung
NeuronameNetze001.zip

Di 16.12.2019, 08:30-10:00

DL_XOR_Gatter.zip -- Musterlösung zur allgemeinen Implementierung eines NN mit Backpropagation-Algorithmus.
Ergebnis nach einem Trainigslauf mit 10000 Schritten bei einer Lernrate von 0.1

Bild 0-1: Ergebnis nach einem Trainigslauf mit 10000 Schritten bei einer Lernrate von 0.1

public void setup()
{
   NetzTicTacToeSpielerNEU netz = new NetzTicTacToeSpielerNEU();
   netz.erzeugeNetz(new int[] {2,3,2});   
   double[][][] inout =
   {
        {{0,0},{  1,0}},
        {{0,1},{  0,1}},
        {{1,0},{  0,1}},
        {{1,1},{  1,0}}
   };
   Random zufall = new Random(System.currentTimeMillis());
   
   println("XOR-Netz vor dem Trainig:");
   for(int i=0;i<inout.length;i++)
   {
         double[] out = netz.propagiereEingangzumAusgang(inout[i][1]);
         println("Input: "+inout[i][0][0]+" "+inout[i][0][1]
         +" Soll-Output:"+inout[i][1][0]+" "+inout[i][1][1]
         +" Ist-Output:"+out[0]+" "+out[1]);
   }
   
   for(int i=0;i<10000;i++)
   {
         int index = zufall.nextInt(inout.length);
         netz.propagiereEingangzumAusgang(inout[index][1]);
         netz.macheBackpropagation(inout[index][1], 0.1);
   }
   
   println("XOR-Netz NACH dem Trainig:");
   for(int i=0;i<inout.length;i++)
   {
         double[] out = netz.propagiereEingangzumAusgang(inout[i][1]);
         println("Input: "+inout[i][0][0]+" "+inout[i][0][1]
         +" Soll-Output:"+inout[i][1][0]+" "+inout[i][1][1]
         +" Ist-Output:"+out[0]+" "+out[1]);
   }
   
}

Code 0-1: Aufbau und Training eines Netzes am Beispiel eines XOR-Gatters (mit zweitem invertiertem Ausgang) aus NeuronameNetze001.

  • Analysieren Sie die objektorientierte Implementierung eines NN aus obigem Beispiel.
  • Setzen Sie ein eigenes Anwendungsbeispiel um, bei dem Buchstaben O und E unterschiedenwerden kann.
  • Eingang: Array aus 5x5 Neuronen, die das zu erkennende Bild bestehend aus Einsen (schwarz) und Nullen (weiß) repräsentieren.
  • Fertigen Sie mehrere Trainigssätze mit ansteigendem Schwierigkeitsgrad an (erster nur ein E und ein O, später mehrere Variationen)
  • Prüfen Sie mit einem Testsatz, ob auch bei leichten Störungen (einzelner Pixel falsch gesetzt), einem Bild noch der richtige Buchstabe zugeordnet werden kann.
E_O_T_Lernen.zip -- studentische Lösung

Mi 17.12.2019, 08:30-14:00

  • Einführung in Deep Learning (SDA-Verfahren)
79_Deep_Learning/02_TicTacToe/03_SDA

Di 07.01.2020, 08:30-10:00 / Mi 08.01.2020, 08:30-14:00

  • Rückblick:
DL_AND_Gatter3.zip -- Backpropagation einfaches Beispiel
DL_AND_SCRATCH221.zip -- Übertragen der Gewichte auf "fest verdrahtetes" Netz, UPDATE: Speichern, Laden Double-Array.
Schweber001.zip -- Präsentation: Beispiel für Bestärkendem Lernen (Reinforcement Learning -- RL)
Schweber012.zip -- Endversion
  • Testweiser Vergleich zwischen einfachem Backpropagation und Deep-Learning
  • Beispiel: 2-Bit Mustervergleicher,
  • Belerne 0 als 0.25 und 1 als 0.75
  • Wahrheitstabelle:

Wahrheitstabelle zum 2-Bit Mustervergleicher

A1 A0 B1 B0  OUT
 0  0  0  0    1
 0  0  0  1    0
 0  0  1  0    0
 0  0  1  1    0
 0  1  0  0    0
 0  1  0  1    1
 0  1  1  0    0
 0  1  1  1    0
 1  0  0  0    0
 1  0  0  1    0
 1  0  1  0    1
 1  0  1  1    0
 1  1  0  0    0
 1  1  0  1    0
 1  1  1  0    0

Code 0-2: 1 1 1 1 1

  1. Passendes Netz für Backpropagation suchen
  2. Vergleich bei Verwendung von SDA Pretraining
  3. Zusatzschichten einfügen für Backpropagation
  4. Erneuter Vergleich mit SDA
TicTacToe36_Neuro_mehr_Pretraining.zip -- Software-Grundlage für Beispiel
  • Ergebnisse:
  • Wesentlich weniger Lernschritte mit Pretraining gegenüber nur Backpropagation bei flachen Netzen.
  • Tiefes Netz kann nur MIT Pretraining belernt werden.
SDA_Bitvergleicher_001.zip -- Flaches Netz, Backprop.
SDA_Bitvergleicher_002.zip -- Flaches Netz, Backprop. mit Pretraining (Deep Learning)
SDA_Bitvergleicher_deeep_003.zip -- Tiefes Netz nur Backpropagation (funktioniert nicht)
SDA_Bitvergleicher_deeep_004.zip --Tiefes Netz mit Pretraining und anschließend Backpropagation (funktioniert gut)

Di 14.01.2020, 08:30-10:00

  • Themenbesprechung zur Klausur
  • Wiederholung der fünf Themen:
  1. Helmholtz-Prinzip
  2. Kohonen-Netze
  3. Neuronale Netze mit Backpropagation
  4. Neuronale Netze mit Pretraining
  5. Genetische Algorithmen

Mi 15.01.2020, 08:30-14:00

Übungsaufgaben

Aufgabe 1

  • Eine Sequenz der Länge 9 bestehe aus As und Bs.
  • Bestimmen Sie abhängig von allen Denkbaren Anteilen an As und Bs in der Sequenz die NFAs für folgende Gestalt:
  • Mindestens an zwei der Plätze 0,3,6 sitzt ein A. (Erster Platz hat Index 0, letzter 8)
  • Schauen Sie sich zum besseren Verständnis die nachfolgenden Beispiele an:
Beispielsequenz mit 3*A und 6*B: ABBABBABB
Beispielsequenz mit 0*A und 9*B: BBBBBBBBB
Platz-Index:                     012345678

Code 0-3: Beispielsequenzen

Aufgabe 2

  • Schreiben Sie ein Programm, das für eine Natürliche Zahl bestimmt, wie oft in ihr die Primfaktoren 2,3,5 und 7 vorkommen.
  • Jede natürliche Zahl x kann somit dargestellt als x = 2^p * 3^q * 5^r * 7^s * REST.
  • p,q,r,s sollen als vierdimensionaler Stimulus für ein Kohonen-Netz verwendet werden.
  • Belernen Sie ein 2D-Kohonen-Netz mit den ersten 100 natürlichen Zahlen.
  • Erzeugen Sie eine 2D-Karte, in der die ersten 200 natürlichen Zahlen organisert dargestellt werden.

Aufgabe 3

Unter nachfolgendem Link finden Sie ein Neuronales Netz mit drei Neuronen und Angaben zu allen Gewichten:

75_Echtzeit3/01_NeuronaleNetze/01_Neuron

Bestimmen Sie von Hand jeweils den Ausgang zu der Eingangskombination a) in0=1, in1=0 und b) in0=0, in1=1. Setzen Sie dazu d=1 in der sigmoiden Funktion.

Führen Sie von Hand einen Backpropagationschritt mit a) als Eingang durch. Setzen Sie dazu d=1 in der sigmoiden Funktion und den Lernfaktor auch auf 1.

Warum ist es wenig sinnvoll einen so großen Lernfaktor zu verwenden?

Aufgabe 4

Grundlage für die verwendeten Variablennamen bildet folgendes Tafelbild zum SDA-Verfahren:

79_Deep_Learning/02_TicTacToe/03_SDA, SIEHE BILD 2.3-3: Vorwärts-Rückwärts-Propagierung (Encoding / Decoding)

Nehmen Sie das gleiche Netz wie in Aufgabe 3. Bestimmen Sie von Hand y (Ergebnis beim Vorwärts/Rückwärts Propagieren), wenn das Rauschen auf den Eingang a) so beschaffen ist, dass sich für n ergibt: n0=in0+noise=1+0.1, n1=in1+noise=0-0.1 (vergl. Tafelbild)

  • Was wird beim SDA-Verfahren für eine Verbindungsschicht angestrebt zu lernen?
  • Welchen Vorteil bringt dieses Pretraining?

Zusatzaufgabe

  • Weisen Sie nach, dass das SDA-Verfahren benutzt werden kann, um Muster zu rekonstruieren.
  • Führen Sie dazu ein Pretraining mit Es und Os in einem 25,25-Netz durch.
  • Prüfen Sie dann nach, inwiefern Es oder Os mit fehlenden Pixeln automatisch ergänzt werden.

Aufgabe 5

Schauen Sie sich noch einmal die Darstellung zu genetischer Optimierung an:

50_Simulationstechnik/07_Genalgorithmus

Implementieren Sie folgendes:

  • Gene sind Muster mit 32 Bits.
  • Die Güte eines Musters ist um so größer, je besser die ersten 16 Bits die zweiten gespiegelt darstellen.
  • Implementieren Sie damit ein genetisches Optimierungsverfahren
  • Führen Sie auch eine Visualisierung durch, die den Verlauf der Optimierung sichtbar macht, indem immer alle Gene einer Generation zu sehen sind.
Spiegel001.zip -- Musterlösung