5 Komplexere NNs für komplexere Aufgaben

Bernd Thomas
Nov 11 · 4 min read

Sechs nicht so einfache Aufgaben für KI — Teil 5

Dieser Teil 5 befasst sich mit NNs, die komplexere Aufgaben als die Gerade/Ungerade Klassifikation lernen. Zunächst bestand die Machine Learning Aufgabe in diesem Teil darin Vielfache von 3 und von 7 erkennen zu lernen. Inzwischen ist der Teil 5 auf insgesamt 7 Abschnitte mit immer komplexeren Aufgaben — und NN Strukturen- angewachsen. Wir werden sehen, wie NNs lernen

  • Die Quersumme einer Zahl zu bestimmen
  • Vielfache von 3 und 7 zu klassifizieren
  • Ganze Zahlen in ihre Ziffernfolge zu transformieren
  • Damit eine Art “Feature Extraction” in das NN einzufügen für die Aufgabe “Vielfache von 3”
  • Vielfache von 6 und anderen “zusammengesetzten” Zahlen zu klassifizieren

In Teil 4 hatten wir NNs konstruiert, die gerade / ungerade Zahlen unterscheiden lernen, indem sie lernen, auf die Einer-Stelle zu achten und sich merken welches die geraden und ungeraden Ziffern sind.

Ob eine Zahl Vielfaches von 3 ist, kann man ebenfalls aus der Ziffernfolge der Zahl erkennen, nach einem einfachen “Algorithmus”: Bestimme die Quersumme und stelle fest, ob die durch 3 teilbar ist.

Die Frage ist wieder, kann ein ML System Vielfache von 3 erkennen lernen, z.B. indem es diesen Algorithmus lernt. Etwa mit einem (deep) NN, das ähnlich der gerade/ungerade Erkennung das Problem in zwei Teile zerlegt.

Die beiden Teilaufgaben sind:

(1) Lernen, die Quersumme einer Zahl zu bestimmen

(2) Lernen, einstellige Zahlen als Vielfache von 3 zu erkennen, also die 0, 3, 6 und 9

Das Modell für (2) kennen wir schon. Es muss nur neu trainiert werden, eben auf Vielfache von 3. Das mit der Quersumme ist anders als beim gerade/ungerade Problem, da dort nur Bedeutung der Einer-Stelle erlernt werden musste.

Ausserdem muss bei größeren Zahlen die Quersumme mehrfach gebildet werden, also die Quersumme von der Quersumme von der Quersumme usw. bis die Quersumme einstellig wird.

Wenn wir also ein Modell haben, das lernt die Quersumme zu bilden, müsste dieses Modell iterativ auf seinen eigenen erlernten Output angewendet werden, bis der Output einstellig wird — der dann wiederum das Teilmodell für die Aufgabe (2) trainiert.

Eine solche Modell-Architektur kann man durch eine Kette, oder Schleife, von Modellschichten abbilden, also eine Adaption der Recurrent Neural Network (RNN) Methodik. Eine andere Methodik, meist aus der Bildinterpretation und zusammen mit CNN eingesetzt, ist das Transfer Learning (TL).

Beim TL werden bereits trainierte Modelle bzw. “Modellvorstufen” verwendet und nur noch die neuen “Schichten” dahinter nachgeschaltet und trainiert. D.h. der Output des bereits trainierten Teils wird Input des noch nicht trainierten Teils (Transfer). Man kann das auch so interpretieren: Was schon gelernt wurde, wird nicht noch mal neu gelernt wenn es bei einer neuen Lernaufgabe verwendet werden kann. (Entsprechend werden die Parameter dieses Teils in keras auf trainable = False gesetzt).

In unserem Fall wird das gleiche, einmal trainierte Modell (“Quersumme”) mehrfach “hintereinander geschaltet” und mit dem Modell für (2) per Output-Input-Beziehung verbunden und nur noch dieser letzte Teil trainiert.

Das [X,y] Dataset besteht dabei immer aus Trainingsdaten für das Gesamtproblem, d.h. die Zahlen in X sind (z.B. wieder) 4-stellig und haben in y die Klassifikation als Vielfaches von 3 (y=0) bzw. nicht (y=1).

Eine wichtige Rolle spielt wieder die Repräsentation der Input-Daten — insbesondere bei der Output-Input Propagation.

Um das zu verstehen und zu erproben, entwickeln wir das hier teilweise “per Hand”.

  1. Pre-Trainng: Einfaches Perzeptron (in keras), das lernt, die Quersumme einer Zahl zu berechnen.
  2. Mit dem trainierten Modell wird eine Kette von pre-trainierten Modellen durchlaufen; dazwischen Output-Input Konvertierung.
  3. Training des Gesamtmodells mit dem “einstellige Vielfache” Modell als letzter Schicht

Die Trainingsdaten sind Zahlen einer festen bzw. maximalen Länge, die zeichenweise als Input angeboten werden. Der Output der inneren Modellschichten ist eine Zahl. Dieser wird wieder zum Input der nächsten Schicht konvertiert.

Die Konvertierungen Zahl -> Ziffernfolge erfolgen durch allgemeine Funktionen, die nicht Gegenstand der Lernaufgabe sind. So verwenden wir für die Transfers zwischen den pre-trained Schichten eine Funktion to_digits, die eine Zahl in die Folge von Ziffern wandelt. Für den Transfer in die letzte Modellschicht wird die übliche one-hot-Kodierung auf 10-dim Einheitsvektoren verwendet.

Die Frage, ob die Funktion Zahl -> Ziffernfolge ebenfalls durch ein NN erlernt werden kann, vertagen wir erst mal.

Anm.: Wieder sind zur Illustration iPython Notebook Code-Schnipsel in den Text eingefügt, meist nur Partien, die darstellen, was im Text gerade besprochen wird. Ausgabe-Routinen etc. werden der Lesbarkeit wegen weg gelassen. Die Code-Schnipsel können beim Lesen übersprungen werden, die Ergebnisse (Output) sind dagegen immer dargestellt.

Anm.: Die Vorgehensweise mit keras folgt für jede der folgenden Lern-Aufgaben i.w. immer dem gleichen Schema:

  • Festelegung der Problemparamter und Generierung von Traimnings- und Testdaten samt Klassifizierung
  • Spezifikation und Compile des keras-NN-Modells
  • Training (fit) des Modells und Analyse der Konvergenz und der trainierten Gewichte
  • Prediction für Test-Input als Evaluation

Weiter lesen: 5.1 Pre-Training: Einfaches Perzeptron lernt, die einfache Quersumme einer Zahl zu berechnen

Zurück auf Anfang

bernhard.thomas@becketal.com
www.becketal.com
www.im-pulse.info

Beck et al.

*Arbeiten ist Zusammenarbeiten*. Von Menschen, Daten, Infrastrukturen. Dafür stehen wir.

Bernd Thomas

Written by

Dr. Bernhard Thomas — Mathematics, Theor. Biology, Computational Sciences, AI and advanced Technologies for the Enterprise. Beck et al. Consultant

Beck et al.

*Arbeiten ist Zusammenarbeiten*. Von Menschen, Daten, Infrastrukturen. Dafür stehen wir.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade