Machine-Learning-Tool
Ein eigenes neuronales Netz entwerfen
Auf dieser Seite kann mit wenigen einfachen Schritten ein beliebiges neuronales Netz online entworfen werden. Dazu muss man zunächst festlegen, wie das Netz konstruiert werden soll. Danach sind die Eingabedaten zusammen mit den gewünschten Ausgabedaten einzugeben, bevor das Netz trainiert werden kann. Die meisten Einstellungen werden dabei automatisch vorgenommen. Am Ende kann man schauen, ob das Netz nun in der Lage ist, für unbekannte neue Eingabedaten 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. 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 Lauf des Trainings verändern. Die Werte der Gewichte und Schwellwerte lassen sich anzeigen, wenn man mit der Maus darüberfä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 allein berechnet.
Für Fortgeschrittene
Alle Berechnungen im neuronalen Netz können Schritt für Schritt nachvollzogen werden. Dazu kann ein beliebiges Muster durch das neuronale Netz geschickt werden, 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.
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 (1) 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 0 ausgeben, wenn es kleine Zahlenkombinationen empfängt, und eine Zahl nahe 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 Schwertlilienarten, 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 dieselben 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 drei 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.
Diese Seite teilen