Online Machine Learning Tool

Ein eigenes neuronales Netz ganz einfach entwerfen

Überwachtes Lernen

Auf dieser Seite kann mit wenigen Schritten ein beliebiges neuronales Netz online entworfen werden. Dazu muss zunächst festgelegt werden, wie das Netz konstruiert werden soll. Danach müssen die Trainingsdaten zusammen mit den gewünschten Ausgabedaten eingegeben werden bevor das Netz trainiert werden kann. Die meisten Einstellungen werden dabei automatisch getroffen. Am Ende kann man schauen, ob das Netz nun für unbekannte, neue Eingabedaten in der Lage ist, korrekte und sinnvolle Ausgabedaten zu liefern. Weiter unten können zum tieferen Verständnis einige Beispiele geladen und ausprobiert werden.

1. Konstruktion des neuronalen Netzes

Das neuronale Netz darf maximal 8 Schichten und jeweils 8 Neuronen pro Schicht haben. Die Anzahl der Eingabeneuronen muss mit der Anzahl der Zahlen in jeder Zeile des Eingabefeldes x der Trainingsdaten übereinstimmen. Ebenso muss die Anzahl der Ausgabeneuronen mit der Anzahl der Zahlen in jeder Zeile des Eingabefeldes y der Trainingsdaten übereinstimmen.

2. Training

Die Trainingsdaten (x = Eingabedaten, y = gewünschte Ausgabedaten) müssen durch Leerzeichen bzw. neue Zeilen voneinander getrennt eingegeben werden. Die gewünschten Ausgabedaten müssen Werte zwischen [0..1] sein. Bei den Eingabedaten ist dies ebenso sinnvoll, jedoch nicht zwangsweise erforderlich. Die Lernrate ist ein Wert, der üblicherweise zwischen 0.01 und 10.0 liegen kann. Je größer der Wert ist, desto schneller aber auch ungenauer ist das Training und desto größer werden die Gewichts- und Schwellwerte. Die Anzahl an Epochen bestimmt wiederum die Trainingslänge. Eine Epoche ist um, wenn alle Zeilen der Trainingsdaten einmal zum Trainieren benutzt wurden. Das Netz zeigt auf einer Skala von blau (negative Werte) bis rot (positive Werte) an, wie sich die Gewichte und Schwellwerte im Laufe des Trainings verändern. Die Werte der Gewichte und Schwellwerte lassen sich anzeigen, wenn man mit der Maus über sie fährt.

3. Test

Die Testdaten müssen wie die Trainingsdaten durch Leerzeichen bzw. neue Zeilen voneinander getrennt eingegeben werden. Es werden jedoch nur die Eingabedaten x benötigt, da das trainierte Netz die tatsächliche Ausgabe o von alleine berechnet.





Bitte einen anderen Browser benutzen.




Für Fortgeschrittene

Alle Berechnungen im neuronalen Netz können Schritt für Schritt nachvollzogen werden. Dazu kann man ein beliebiges Muster durch das neuronale Netz schicken, indem man nacheinander auf alle Eingabeneuronen klickt und dort die gewünschten Werte eingibt. Sobald alle Eingaben vorhanden sind, wird in den Aktivierungs-Modus gewechselt. Die Farben der Gewichte und Schwellwerte stehen in diesem Modus nicht mehr für die trainierten Werte sondern für die Aktivierung der jeweiligen Gewichte und Schwellwerte. Fährt man mit der Maus über die Neuronen und Verbindungen des neuronalen Netzes, werden zusätzlich alle Berechnungen angezeigt, die notwendig sind, um die Ausgabe(n) des neuronalen Netzes zu verstehen (out = Ausgabe des Neurons, w = Gewichtswert, Act = Aktivierung des Neurons, bias = Schwellwert). Durch Klick in den freien Raum der interaktiven Abbildung kann der Aktivierungs-Modus wieder verlassen werden. Dieser Modus funktioniert nur mit einer Maus als Eingabegerät.

Beispieldaten

Im Folgenden können Beispieldaten geladen werden, mit denen ein neuronales Netz zu Demonstrationszwecken trainiert und getestet werden kann. Zum Durchprobieren der Beispiele den jeweiligen Button klicken und danach auf die Buttons Train und Test drücken, um zu sehen, wie das Netz trainiert wird und wie es die gelernten Trainingsdaten im Anschluss umsetzen kann. Wie bei neuronalen Netzen üblich kann es passieren, dass das Training nicht zum Erfolg führt. Dann kann es helfen, das Netz neu zu laden oder evtl. auch weiter zu trainieren bzw. die Werte für die Lernrate oder die Epochen experimentell zu ändern.

(1) Beliebte Einstiegsbeispiele sind boolesche Funktionen wie das logische (📺Externer Link zu YouTube) oder das logische (📺Externer Link zu YouTube), die nur Nullen und Einsen verwenden. Das neuronale Netz hat hierbei genau zwei Eingabeneuronen und ein Ausgabeneuron. 0 steht dabei für logisch falsch und 1 für logisch wahr. 14 der 16 möglichen Funktionen können mit einem 2-1-Netz berechnet werden - also mit einem einzelnen Neuron, das zwei Eingaben hat. Das XOR und das XNOR benötigen jedoch eine Schicht mehr, um die Muster, die 0 ergeben sollen von den Mustern trennen zu können, die 1 ergeben sollen.

(2) Boolesche Funktionen müssen nicht auf zwei Eingaben beschränkt sein. Beispielhaft wird (📺Externer Link zu YouTube) eine von 256 möglichen dreistelligen Funktionen verwendet. Die Ausgabe der Funktion ist 1, wenn genau zwei Eingaben 1 sind. Anders formuliert: es gibt zwei Klassen von Mustern: Zur ersten Klasse (0) gehören alle Eingabezeilen, die nicht genau zwei Einsen haben und zur zweiten Klasse (1) gehören alle Eingabemuster, die genau zwei Einsen haben. Das Netz kann diese Muster am Ende des Trainings voneinander unterscheiden.

(3) In diesem (📺Externer Link zu YouTube) soll ein neuronales Netz lernen, kleine von großen Zahlenkombinationen zu unterscheiden. Dabei soll das Netz eine Zahl nahe an 0 ausgeben, wenn es kleine Zahlenkombinationen empfängt und eine Zahl nahe an 1, wenn es große Zahlenkombinationen empfängt. Dementsprechend sind die Trainingsdaten aufgebaut. Dass immer genau vier Zahlen als Eingabekombination genommen werden, ist hier nicht relevant und nur ein Beispiel. Es könnten auch mehr oder weniger sein.

(4) Der Iris-Datensatz ist weltbekannt. Er besteht aus 150 Eingabekombinationen. Jede Eingabekombination (Zeile) hat vier Merkmale. Diese sind die gemessenen Werte in Zentimetern bei unterschiedlichen Iris-Blumen (Lilien), und zwar jeweils die Kelchblattlänge, Kelchblattbreite, Kronblattlänge und Kronblattbreite der Blume. Diese vier Werte wurden für 50 Iris setosa, 50 Iris versicolor und 50 Iris virginica erhoben. Die Ausgabedaten geben an, um welche Blume es sich handelt: Die Klasse 0 soll dabei für die Setosapflanze stehen, die 0.5 für die Versicolor- und die 1 für die Virginicapflanze. 120 Datensätze werden in diesem (📺Externer Link zu YouTube) für das Training genommen und 30 Datensätze (10 pro Blume) für das Testen, damit geprüft werden kann, ob das Netz auch wirklich anhand der Merkmale erkennt, um welche Blume es sich handelt.

(5) Das (📺Externer Link zu YouTube) verwendet die gleichen Daten, nur sind diesmal die Ausgabedaten anders kodiert. Statt ein Ausgabeneuron auf die Werte 0.0, 0.5 und 1.0 für die drei Klassen zu trainieren, kann man auch einfach 3 Ausgabeneuronen nehmen und das jeweilige Neuron der gewünschten Klasse auf 1 setzen während die beiden anderen 0 bleiben. Das nennt man One-Hot-Encoding.

(6) Das letzte Beispiel hat zwar nichts mit Daten aus der echten Welt zu tun, zeigt aber sehr schön, wie gut neuronale Netze darin sind, zwischen gelernten Daten zu interpolieren. Interpolieren bedeutet „abschätzen“. Diese Fähigkeit der Interpolation kann man auch nutzen, um aus (wenigen) Trainingsbeispielen eine Funktion f(x) abzuschätzen, für die das Netz auch alle y-Werte interpolieren kann, deren x-Werte nicht zum Trainingsdatensatz gehörten. Ein dreischichtiges neuronales Netz kann dabei sogar jede beliebige mathematische Funktion annähern. Hier soll eine Funktion mit den (📺Externer Link zu YouTube) zwischen 0 und 1 als Beispiel dienen.

Weitere Videos

📺 Ein Neuron dreht die Eingabe um.Externer Link zu YouTube
📺 Ein kleines Problem mit zu vielen Schichten.Externer Link zu YouTube
📺 Ziffern und Pfeile erkennen.Externer Link zu YouTube
📺 Der Seeds-Datensatz.Externer Link zu YouTube
📺 Gesichtserkennung.Externer Link zu YouTube