Online Machine Learning Tool

Ein eigenes neuronales Netz ganz einfach entwerfen

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.

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
















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. 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.

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 Ausgabedaten von alleine berechnet.

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 (📺) oder das logische (📺), 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 (📺) 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 gehören alle Eingabemuster, die genau zwei Einsen haben. Das Netz kann diese Muster am Ende des Trainings voneinander unterscheiden.

(3) In diesem (📺) 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 egal 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 (📺) 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 (📺) 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 (📺) zwischen 0 und 1 als Beispiel dienen.

Weitere Videos

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