Suche

3.1 Ein einfaches Netz mit einem Neuron

Zunächst soll es wieder um ein einzelnes Neuron gehen. In der interaktiven Abbildung handelt es sich um ein neuronales „Netz“ mit zwei Eingängen. Die beiden gestrichelten Kreise symbolisieren dabei die Stellen, an denen die Daten in das neuronale Netz hineinfließen, die sogenannten Eingaben. (Es handelt sich dabei übrigens nicht um eigenständige Neuronen, auch wenn diese häufig so genannt werden.) 

Da das Neuron zwei Eingaben und eine Ausgabe hat, müssen die Trainingsdaten auch exakt so aufgebaut sein, dass es zwei Zahlen als Eingabe und eine Zahl als Ausgabe gibt. Unter der Abbildung ist aufgelistet, mit welchen Daten das neuronale Netz aktuell trainiert werden soll. Als Eingabe x finden sich im gesamten Kapitel dieselben Trainingsdaten. Bis auf das letzte Beispiel („Kreis“) sind dies immer genau vier Paare aus Trainingsdaten mit jeweils genau 2 Werten (da das Netz ja zwei Eingänge hat). Im Folgenden wird eine Zeile in der Eingabe x als Muster mit den beiden Werten x1 und x2 bezeichnet. So ist in der Voreinstellung z. B. (0.1 / 0.2) das erste Muster, für das das Netz den danebenstehenden Wert der Vorgabe y ausgeben soll, in diesem Fall also 0. In der dritten Spalte daneben wird unter Ausgabe o angezeigt, welchen tatsächlichen Wert das Neuron in seinem aktuellen Trainingszustand gerade ausgibt. Ohne vorheriges Training liegt dieser Wert bei ca. 0.5, und daher macht das Netz zunächst einen großen Fehler, den man durch Klicken auf Train nun minimieren kann.

Während des Trainings wird durchgehend der aktuelle Fehler des neuronalen Netzes angezeigt. Das Training stoppt nach 300 Trainings-Epochen, also nachdem alle Trainingsdaten (d. h. alle Muster mit ihren zugehörigen Klassen) 300-mal durch das neuronale Netz geschickt wurden und der Lernalgorithmus den Fehler im Idealfall 300-mal verkleinert hat. Nach dem Training lohnt es sich, die gewünschte Vorgabe y mit der tatsächlichen Ausgabe o zu vergleichen. Das Netz erreicht die Vorgabe nicht zu 100 %, performt aber zumeist gut genug.

Ebenso wird während des Trainings farblich angezeigt, welche Trennlinie das Neuron aktuell gelernt hat, um die Muster der Klasse 0 von den Mustern der Klasse 1 trennen zu können, so wie es in den Trainingsdaten ja beabsichtigt ist. Dazu werden alle vier vorhandenen Muster in der Abbildung in ein Koordinatensystem eingetragen, bei dem x1 die x-Achse und x2 die y-Achse ist.

Wie die Daten genau durch das Netz fließen, kann durch einen Klick auf eines der vier Muster in der Abbildung links neben dem neuronalen Netz nachvollzogen werden. Es wird dann in grün markiert. Bei einem so kleinen Netz wie in den Beispielen in diesem Kapitel kann man tatsächlich noch von Hand nachrechnen, welcher Wert am Ende herauskommt. Die Aktivierung des Neurons ist x1⋅w1 + x2⋅w2. Von diesem Wert wird der Schwellwert subtrahiert. Das Ergebnis geht dann als x-Wert in die Aktivierungsfunktion ein, die die Ausgabe als Zahl zwischen 0 und 1 berechnet. Unten auf der Seite kann man auch diesen letzten Schritt noch nachrechnen, indem man das Ergebnis der Subtraktion (Aktivierung minus Schwellwert) als x-Wert einträgt und auf Berechne klickt.

Für alle Trainingsbeispiele gilt: Es gibt immer zwei Muster der Klasse 0 und zwei Muster der Klasse 1 – außer beim letzten Beispiel. Weiter unten auf der Seite gibt es detailliertere Informationen zu den Trainingsbeispielen.

Anleitung

  • Wähle über die Checkboxen aus, welche Trainingsdaten geladen werden sollen.
  • Klicke Neu, um die voreingestellten Werte, eine neue zufällig gewählte Boolesche Funktion, neue Zufallszahlen oder Kreis-Werte als Datensatz zu wählen.
  • Klicke Train, um das Training zu starten.
  • Klicke nach Ende des Trainings erneut Train, um noch weiter zu trainieren.
  • Klicke auf die Zahlenwerte am linken Rand in der interaktiven Abbildung. Die ausgewählte Zeile aus der Eingabe x wird grün markiert und die Berechnung des neuronalen Netzes wird für dieses Muster angezeigt.
  • Klicke in den freien Raum der Abbildung, um die Berechnung wieder auszublenden.
  • Nutze die Berechnung der Aktivierungsfunktion weiter unten auf dieser Seite zum Nachrechnen. Trage dort als x-Wert das Ergebnis der Subtraktion (Aktivierung minus Schwellwert) ein.
  • Blau steht in der Abbildung links für negative Werte und rot für positive Werte.
     

Bitte einen anderen Browser benutzen. Bitte einen anderen Browser benutzen.

Bitte einen anderen Browser benutzen.



Aufgaben

  • Probiere viele verschiedene Beispiele aus und trainiere das neuronale Netz jeweils mit den gegebenen Mustern. Versuche zu verstehen, wie die Ausgabe berechnet wird und wie das neuronale Netz es schafft, für ein Muster auch die richtige Klasse (0 oder 1) zu berechnen.
  • Rechne mindestens ein Beispiel vollständig nach. Achtung: In der Abbildung werden an allen Stellen gerundete Werte angezeigt!
  • Überlege dir für mehrere unterschiedliche Boolesche Funktionen vor dem Training mit Papier und Stift passende Werte für die Gewichte und für den Schwellwert, sodass das neuronale Netz möglichst gut funktionieren würde. Überprüfe deine Überlegungen im Anschluss. 
     

Aktivierungsfunktion berechnen:

Die Trainingsbeispiele im Detail

Neuronale Netze liefern zumeist Zahlen mit Werten zwischen 0 und 1 als Ausgabe (bei Verwendung anderer Aktivierungsfunktionen sind auch Bereiche von -1 bis 1 möglich). Da innerhalb des neuronalen Netzes alle Berechnungen in eben diesem Intervall zwischen 0 und 1 stattfinden, sollten die Werte für die Eingabedaten auch zwischen 0 und 1 liegen. Manche Tools wie die hier verwendete Software kommen auch mit größeren Zahlenbereichen klar; trotzdem sind die Trainingsbeispiele auf diesen Seiten so aufgebaut, dass sie nur Zahlen zwischen 0 und 1 enthalten. Das ist gute Praxis und sollte auch bei der Erstellung eigener neuronaler Netze durch gewissenhafte Vorverarbeitung der Daten so gehandhabt werden.

Das voreingestellte Trainingsdaten-Beispiel für eine einfache Trennung enthält zwei Muster mit einer niedrigen Zahlenkombination und zwei Muster mit einer hohen Zahlenkombination. Die beiden Klassen sind also im Grunde niedrige Zahlen und hohe Zahlen

Boolesche Funktionen sind beliebte Einstiegsbeispiele für neuronale Netze. Sie bestehen nur aus Nullen und Einsen, die für logisch falsch und logisch wahr stehen. Bei zwei Eingaben und einer Ausgabe ergeben sich exakt 16 verschiedene Boolesche Funktionen, von denen hier 14 vorhanden sind und per Zufall ausgewählt werden können. Für die beiden Funktionen XOR und XNOR kann jedoch ein einzelnes Neuron keine Trennlinie finden, weswegen sie aus Gründen der Vergleichbarkeit der drei Beispielnetze in diesem Kapitel hier weggelassen wurden. 

Die Zufallszahlen-Beispiele generieren jeweils eher pseudo-zufällige Daten. Es gibt immer zwei Muster pro Klasse, die aber so angelegt sind, dass sich die Muster beider Klassen nicht gleichzeitig gegenüberliegen, denn dann träte ein Fall wie bei dem zuvor angesprochenen XOR auf und zumindest das einzelne Neuron könnte diese Situation nicht lösen. Auch wird bestmöglich vermieden, dass zwei identische Muster zu unterschiedlichen Klassen gehören. Aber auch so treten manchmal spannende Situationen auf, was man anhand der Fehlerkurve sehen kann: Diese fängt dann an, kurzzeitig zu schwingen. Das ist jedoch genauso normal wie die Tatsache, dass so manches neuronale Netz auch mit zu großen Fehlern hängen bleiben kann. Da hilft nur ein Neustart mit besseren zufällig gewählten Startwerten. 

Das Kreis-Beispiel zeigt eindeutig, wo die Grenzen eines einzelnen Neurons liegen. Ein Neuron allein ist nämlich nicht in der Lage, die Muster der Klasse 0 von denen der Klasse 1 zu trennen, da es nur eine einzige Trennlinie erzeugen kann. Für eine solche Aufgabe braucht es mehr Neuronen und mehr Schichten, wie auf den folgenden Seiten gezeigt werden wird.
 

Schliesse Suche