Mit dem aktuelle Trend in der Automobilindustrie des "autonomen Fahrens" haben auch neuronale Netze neues Interesse gefunden.
Sie orientieren sich am Gehirn des Menschen, d.h. mehrere Eingaben werden gewichtet mit einer Aktivierungsfunktion als Ausgabe
bereitgestellt, und das ganze in einem Netz mit mehreren Schichten, wobei es eine Eingabe-, ggf. Zwischen- und eine Ausgabeschicht gibt. Bei ([vonR08], Kap. 5.3) wird das Beispiel von der Erkennung
vier verschiedener zweidimensionaler Bilder gezeigt. Ziel der Einstellung eines neuronalen Netzes ist, zu jeder Eingabe aus Testdaten
genau die Ausgaben zu erhalten, um die Eingabe zu klassifizieren, z.B. diese Eingabe ist wahrscheinlich Bild 2, eine andere Bild 3.
Man stellt in der Trainingsphase die Gewichte anhand der Trainingsdaten ein und kann dann in der Testphase anhand bisher
unbekannter Eingabedaten entscheiden, welcher der bekannten Bilder diesem am Ähnlichsten ist.
Modell
An der Eingabeschicht liegen die Eingabewerte binär als 0 oder 1 an. Die Ausgabe wird an die nächste Schicht als Eingabe weitergeleitet. Zwischenschichten dienen der Verarbeitung von mehreren Eingaben in Ausgaben. Die Ausgabeschicht gibt das Ergebnis wieder, z.B. eine Reihe von Werten zwischen 0.0 und 1.0 für die Klassifikation. Die Architektur bestimmt die Anzahl der
Schichten, die Anzahl der Neuronen einer Schicht. Der Zustand ist der Wert der intern gespeicherten Gewichte g.
Hebb'sche Regel
Es gibt keine Zwischenschichten. Für Gewichte gilt beim Lernen(e Eingabe, a Ausgabe, L Lernrate z.B. 0,25):
gi := gi + L * ei * a
Backpropagation
Reale Netze haben Zwischenschichten. Dazu berechnet man das Netz von den Eingaben zu den Ausgaben vorwärts, bestimmt
dann die Soll/Ist-Differenz in der Ausgabeschicht und bestimmt pro Neuron den backpropagation-Wert(dpb):
dbp(n) = f'(summe_g) * g(soll - ist), für Ausgabeschicht
dbp(n) = f'(summe_g) * summe_aller_nachfolger_m_von_n(dbp(m) * g(n_m)), für Zwischenschichten
f' ist die Ableitung der Aktivierungsfunktion, g die Fehlerfunktion.
Die Gewichte lassen sich anpassen:
gi := gi + L * ei * dbp(i)
Aktivierungsfunktion
Bei ([vonR08], Kap. 5.3) wird die Identitätsfunktion f(x) = x verwendet.
Bei ([Rash17], Kap. 1) wird die Sigmoidfunktion f(x) = 1 / (1 + e-x) verwendet, welche für sehr große negative x
gegen 0.0 und für sehr große x gegen 1.0 geht.
Fehlerfunktion
Bei ([vonR08], Kap. 5.3) wird Fehlerfunktion delta = (soll - ist) verwendet.
Bei ([Rash17], Kap. 1) wird Fehlerfunktion delta = (soll - ist)2 mit Gradientenabstieg empfohlen.
Lernrate
Bei ([vonR08], Kap. 5.3) wird Lernrate=10% verwendet
Bei ([Rash17], Kap. 2 S. 154f.) wird Lernrate=20% bis 30% empfohlen.
Ein Beispielprogramm mit java
Bietet wie ([vonR08], Kap. 5.3) das Erkennen von binären Mustern. Einfaches Modell eines neuronales Netzes Lernmöglichkeit mit Bildern, Quadraten und mnist-Daten von Ziffern Eigenschaftswerte fuer den Algorithmus
Da es vier bekannte Bilder gibt, besteht die Ausgabeschicht aus vier Neuronen, wobei in den Ausgängen nur einmal 1
vorliegen soll, sonst 0. Beim Erkennen von Quadratzahlen gibt es zwei Ausgangsneuronen, erstes bedeutet, Eingabewerte sind
keine Quadratzahl, zweites schon. Bei den mnist-Daten gibt es zehn Klassen von Ziffern, welche an der Ausgabeschicht stehen.
Es gibt nur eine Zwischenschicht, die Lernkapazität der verborgenen Schicht wird als Maximalwert von Eingangs- und Ausgangsschicht bestimmt.