Der letzten Beitrag zu den künstlichen neuronalen Netzen hat sich mit dem Aufbau und der Strukturierung derartiger Netze beschäftigt. Wir haben gesehen, dass ein typisches Netz über eine Eingabeschicht (die manchmal als separate Schicht von Neuronen, manchmal auch einfach als reine Synapsen-Schicht aufgefasst wird), eine Ausgabeschicht und dazwischenliegenden verdeckten Schichten besteht. Eine zu verarbeitende Eingabe wird an die Eingabeschicht angelegt, wandert dann durch das Netz, wird hierbei verarbeitet und das errechnete Ergebnis kann dann an der Ausgabeschicht abgelesen werden. Die Struktur des Netzes (die Anzahl der Schichten und die Art der Vernetzung der Neuronen in den Schichten) ist dabei ein wichtiges Kriterium dafür, wie “gut” das Problem gelöst wird. Genauso wichtig ist aber die konkrete Vernetzung der Neuronen untereinander, sprich: welches Neuron ist mit welchen anderen über welche Gewichte verbunden und welche Aktivierungsfunktion bei welchem Schwellwert wird verwendet. Die Struktur des Netzes kann noch relativ einfach im Voraus festgelegt werden (auch wenn hier einiges an Experimentierfreude nötig ist, um eine geeignete Konfiguration zu finden) – die exakte Vernetzung der Neuronen untereinander ist aber ein Problem, das nicht mehr manuell gelöst werden kann. Zum Glück gibt es jedoch zahlreiche Algorithmen, die dieses Problem mehr oder weniger elegant lösen können. Zwei davon möchte ich heute vorstellen.
Der Vorgang der Bestimmung einer möglichst passenden Vernetzung der Neuronen untereinander wird, in Analogie zum ähnlichen Vorgang im echten Gehirn, als Lernen beziehungsweise Anlernen des KNN bezeichnet. Grundsätzlich sind vier verschiedene Lernverfahren im Bereich der künstlichen Netze zu unterscheiden, für die es jeweils eigene Algorithmen gibt. In diesem Artikel möchte ich das intuitivste Lernverfahren vorstellen, nämliche das überwachte Lernen.
Beim überwachten Lernen wird dem Netz eine Eingabe präsentiert und die berechnete Ausgabe mit dem eigentlich erwarteten Wert verglichen (zur Erinnerung: die Ausgaben des Netzes sind die Werte, die nach der Abarbeitung durch das Netz, meist nach einer festgelegten Anzahl von Berechnungszyklen, an den Neuronen der Ausgabeschicht anliegen). Auf Grundlage der Differenz zwischen erwartetem und erhaltenem Wert kann mit Hilfe geeigneter Algorithmen das Netz in Richtung des erwarteten Wertes angepasst werden.
Eine der einfachsten Formen des überwachten Lernens kann bei einlagigen Netzen (also solchen, die lediglich aus einer einzigen Schicht von Neuronen bestehen) angewandt werden und nennt
sich Delta-Regel. Die Anpassung der Gewichte der Kanten zwischen den (imaginären) Eingabe- und den Ausgabeneuronen folgt hier dem einfachen Schema, dass die Differenz zwischen erwartetem und erhaltenem Wert direkten Einfluss auf die Kantengewichte hat. Formal lässt sich das einfach ausdrücken; das neue Kantengewicht w’ij zwischen einem Eingabeneuron i und einem Ausgabeneuron j wird aus dem alten Gewicht wijnach folgender Formel berechnet:
w’ij = wij + Δwij
Der Term Δwij stellt dabei die am Kantengewicht durchzuführende Änderung dar (Δ ist der griechische Buchstabe Delta) und berechnet sich folgendermaßen:
Δwij = α · (o’j – oj) · ii
Der Term (o’j – oj) stellt die Differenz zwischen dem erwarteten Wert o’j und dem tatsächlich erhaltenen Wert oj des Ausgabeneurons j dar; ii ist die zugehörige Eingabe i. Mit α wird der sogenannte Lerngeschwindigkeits-Koeffizient bezeichnet – ein Wert, der die Stärke der Anpassung der Gewichte und damit die Lerngeschwindigkeit angibt. Betrachten wir ein kurzes Beispiel zur Delta-Regel; angenommen, wir haben das folgende Netz gegeben:
Nehmen wir weiterhin an, dass jedes Neuron als Aktivierungsfunktion die Abbildung der aufsummierten Eingabe auf seine Ausgabe hat (den Schwellwert wollen wir konstant mit 0 annehmen) und dass die einzelnen Kantengewichte folgendermaßen gesetzt sind, eventuell durch bereits durchgeführte Lernschritte (die Kante w21 mit dem Gewicht von 0 ist in obigem Netz nicht eingezeichnet):
w11 = 0.2 w12 = 0.5 w21 = 0.0 w22 = 0.7
Zusätzlich ist unter den gewünschten Eingabe-Ausgabe-Paaren das Paar
(0.2, 0.3), (0.5, 0.1)
zu finden (mit der Bedeutung, dass bei einer Eingabe der Werte 0.2 und 0.3 an die Eingabeneuronen eine Ausgabe von 0.5 und 0.7 an den Ausgabeneuronen erwartet wird).
Kommentare (1)