Hat man eine Anzahl Neuronen welche miteinander verknüpft sind und die als Teil eines Nervensystem einen funktionalen Zusammenhang bilden, so spricht man von einem Neuronalen Netz.
# Neuron
Neuronen werden von anderen Neuronen über ihre Synapsen elektrisch stimuliert. Je nachdem wie das Neuron eingestellt ist, reagiert es auf diese Stimulationen indem es selbst aktiviert wird, d.h. es stimuliert nun seinerseits andere Neuronen.
In der Informatik versucht man die Neuronen nachzubauen und erstellt so ein Künstliches Neuronales Netz (KNN).
# Künstliches Neuron
Das künstliche Neuron versucht die Funktionsweise des natürlichen Neurons nachzubauen. Dabei erhält das Neuron
# Künstliches Neuronales Netz
Ein neuronales Netz kann als Graph dargestellt werden. Dabei unterscheidet man verschiedene Schichten (Layers). Jedes neuronale Netz hat eine Eingabe- und eine Ausgabeschicht. Je nach Komplexität des gewünschten Einsatzes bestehen diese aus mehr oder weniger Neuronen. Dazwischen liegen die verborgenen Schichten (hidden layers). Was dort geschieht interessiert uns nicht! Die Idee ist, dass man in der Eingabeschicht etwas eingibt und das Resultat bei der Ausgabeschicht ablesen kann.
Den Kanten des Graphen kann man Gewichte zuweisen. Jede Verbindung zwischen den Neuronen besitzt so ein Gewicht. Die Gewichte sind das Langzeitgedächnis des Neuronalen Netzes: Sind sie einmal korrekt eingestellt, so kann das Neuronale Netz verwendet werden.
Die Neuronen der Eingabeschicht sind keine eigentlichen Neuronen. Sie werden direkt durch die Eingabewerte aktiviert und besitzen weder Aktivierungsfunktion noch Schwellwerte.
# Lernen
Es gibt mehrere Arten ein Neuronale Netz zu trainieren. Dabei werden die Gewichte zwischen den Neuronen und die Schwellwerte der Aktivierungsfunktion so angepasst, dass das Netz den gewünschten Output liefert.
Am einfachsten ist das Überwachte Lernen. Dabei wird dem Künstlichen Neuronalen Netz ein Eingabemuster gefüttert und die aktuelle Ausgabe wird mit dem gewünschten Resultat verglichen. Nun können die Gewichte und Schwellwerte angepasst werden, bis die Ausgabe dem gewünschten Resultat entspricht.
Beispiel Im untentstehenden Schema wird das Lernverfahren des in Aufgabe 1 verwendeten – in Java programmierten – Neuronalen Netzes dargestellt:
Die zum Lernen verwendeten Daten
Beim Bestärkenden Lernen ist das Resultat nicht genau bekannt, es kann aber bewertet werden. So kann z.B. einem Roboter einen Auftrag erteilt werden, den dieser selbständig lösen kann. Das Ergebnis oder Zwischenschritte werden bewertet und die Intelligenz kann so gestärkt werden.
Es ist sogar möglich, ein KNN durch Unüberwachtes Lernen zu trainieren. Dabei verändert sich das Neuronale Netz entsprechend dem Eingabemuster von selbst. Das wird z.B. für «Clustering» verwendet: Die Eingabedaten werden untersucht und in verschiedenen Cluster abgelegt, so dass ähnliche Eingaben auf demselben Cluster landen.
Das Einstiegsbild diese Kapitels ist übrigens das Ergebnis eines Neuronalen Netzes welches mit ganz vielen Bildern trainiert wurde.
http://googleresearch.blogspot.de/2015/06/inceptionism-going-deeper-into-neural.html (opens new window) ↩︎
https://commons.wikimedia.org/wiki/File:Neurons_big1.jpg?uselang=de (opens new window) ↩︎
https://commons.wikimedia.org/wiki/File:ArtificialNeuronModel_deutsch.png?uselang=de (opens new window) ↩︎
https://de.wikipedia.org/w/index.php?title=Datei:Multi-Layer_Neural_Network-Vector.svg&lang=de (opens new window) ↩︎
Bild von Ralf Kretzschmar ↩︎