Ein Neuronales Netz ist im Prinzip ein lernfähiges System das aus künstlichen Neuronen besteht die miteinander verbunden, also vernetzt sind.
Eine genauere Beschreibung findet sich wie so oft auf Wikipedia: Künstliches Neuronales Netz
dort ist auch dargestellt wie ein einfaches NN prinzipiell aufgebaut ist:
Bild hier
Die Kreise stellen dabei die Neuronen dar, und zwar 3 verschiedene "Sorten",
die sich durch ihre Position im Netz unterscheiden (Eingang, Ausgang und "hidden", also alles was zwischen Eingang und Ausgang liegt)
Ein Netz kann prinzipiell beliebig viele Ein- und Ausgänge haben, und auch die Anzahl und Größe der dazwischen liegenden Schichten ist frei wählbar. (in den meisten Fällen reicht eine versteckte Schicht aber schon)
So, da gibt es also auf der linken Seite einige Eingangsneuronen, da werden die auszuwertenden Daten an das Netz übergeben. Dann kommen einige Verbindungen zu den Neuronen der zweiten Schicht, und diese Verbindungen sind gewichtet. Konkret bedeutet das, daß diese Verbindungen nicht einfach nur den Ausgangswert eines Neurons an ein anderes Neuron weitergeben, sondern daß sie diesen Wert auch um einen bestimmten Faktor verringern können. Das ist das eigentliche Geheimnis an der Sache, das Netz lernt indem die Verbindungen zwischen den Neuronen in ihrer "Stärke" angepasst werden.
Und die Neuronen selbst müssen natürlich auch irgendwas tun...
die gehen her und bilden einfach die Summe der Werte aller ihrer Eingänge, jagen diese Summe durch irgendeine mathematische Funktion (da gibt es viele verschiedene Möglichkeiten), und stellen deren Ergebnis an ihrem Ausgang für die nächste Schicht zur Verfügung.
soviel mal zur prinzipiellen Funktionsweise eines NN...
aber wie verwendet man das dann?
Zunächst mal erstellt man sich ein "dummes" Neuronales Netz. Man legt also die Struktur fest und die Übertragungsfunktion die die Neuronen verwenden sollen (das kann durchaus auch von Schicht zu Schicht unterschiedlich sein). Außerdem muss man natürlich festlegen wie die Verbindungen am Anfang gewichtet sein sollen, also initialisiert man sie mit irgendwelchen Werten (meist setzt man sie einfach auf '1', oder man verwendet Zufallszahlen).
Dann muss man das Netz trainieren, indem man es z.B. mit Daten füttert zu denen man das gewünschte Ergebnis kennt, und dann die Ausgabe des Netzes mit diesem Ergebnis vergleicht. Der Unterschied zwischen dem gewünschten und dem tatsächlichen Ergebnis, also der Fehler, kann dann dazu verwendet werden die Verbindungen zwischen den Neuronen anzupassen.(man braucht also irgendeine Funktion die das halbwegs sinnvoll tun kann)
Wenn das Netz gut genug geworden ist, der Fehler also einen bestimmten Wert unterschritten hat, kann man das Training beenden.
Falls die Testdaten gut gewählt waren, sollte das Netz dann auch zuverlässig arbeiten.
Ich hoffe mal daß die Erklärung halbwegs verständlich ist, ansonsten gibts ja noch Wikipedia. Wenn man erstmal verstanden hat wie und warum so ein Netz funktioniert, ist es auch kein Problem mehr sowas zu programmieren.
Lesezeichen