Der Kernpunkt des Algorithmus ist dabei, die Delta-Regel auf die letzte Schichte des Netzes anzuwenden und somit die Abweichung in dieser Schicht, den sogenannten Fehler des Netzes zu berechnen. Dieser Fehler wird anschließend rückwärts (back) durch das Netz verbreitet (propagation) und auf der Grundlage des Fehlers die benötigten Gewichtsänderungen berechnet. Allgemein heißt das (ohne jetzt allzu sehr in die mathematischen Details gehen zu wollen): das berechnete Delta – der Fehler – der Neuronen einer Schicht (angefangen bei der Ausgabeschicht) wird an die Neuronen der vorhergehenden Schicht propagiert, indem den Kanten zwischen den Neuronen rückwärts gefolgt und der Fehler entsprechend der Gewichte für die Neuronen der Vorgängerschicht aufsummiert (und durch einen passenden Faktor skaliert) wird.
Die genauen Details dieses Vorgehens unterscheiden sich je nach Implementierung, haben aber immer zur Folge, dass auch für mehrschichtige Netze die Kantengewichte für ein gegebenes Paar aus Eingabe- und Ausgabewerten angepasst werden können und das Netz somit langsam aber stetig in Richtung der gewünschten Ausgaben geführt wird.
Ob das Netz am Ende des Lernverfahrens auch wirklich die Aufgabe erfüllt, die es erfüllen soll, hängt von mehreren Faktoren ab. Dass die Wahl der richtigen Netzstruktur wichtig ist, sollte klar sein. Auch der Wert für den Lerngeschwindigkeits-Koeffizienten beeinflusst maßgeblich die Güte des Ergebnisses. Ist er zu groß gewählt, kann sich das Netz nicht auf eine bestimmte Ausgabe einpendeln; ist er dagegen zu klein gewählt, werden sehr viele Iterationen im Lernverfahren benötigt, um zu einem brauchbaren Ergebnis zu kommen und jede Iteration kostet natürlich viel Zeit (idealerweise fängt man daher mit einem großen Wert an, der im Laufe der Zeit langsam verkleinert wird).
Stichwort Iterationen: deren Anzahl ist auch wichtig, da sie das Verhältnis zwischen Güte des Ergebnisses und der Laufzeit des Lernverfahrens bestimmt (ein häufig anzutreffender Ansatz ist übrigens, das Lernverfahren einfach so lange laufen zu lassen, bis die berechneten Ausgaben um nicht mehr als einen bestimmten Wert von den gewünschten abweichen und zu hoffen, dass das nicht allzu lang dauert).
Ein sehr wichtiger Faktor sind aber auch die Eingabe-Ausgabe-Paare, die zum Anlernen verwendet werden. Ein Netz kann verständlicherweise nur das Lernen, was ihm “gezeigt” wird; werden daher zu wenige oder zu wenig verschiedene Paare für das Anlernen verwendet, ist das Netz unter Umständen zu speziell und kann Werte nur in einem sehr engen Rahmen korrekt berechnen. Zu viele Paare dagegen können die Berechnungsfähigkeiten des Netzes schlichtweg überlasten und so ebenfalls ein gutes Ergebnis verhindern.
Man sieht: eine sorgfältige Wahl der einzelnen Parameter ist wichtig, um ein künstliches neuronales Netz überhaupt so weit zu bringen, dass es vernünftige Ergebnisse liefern kann. Hierin liegt auch ein Grund, warum es (noch?) keine Netze gibt, die mit menschlichen Gehirnen (oder denen beliebiger anderer Tiere) vergleichbar sind. Aber wer weiß, was die Zukunft bringt; vielleicht wird es doch irgendwann einmal einen HAL 9000 auf Basis künstlicher neuronaler Netze geben – bisher müssen wir uns da allerdings noch keine Sorgen machen.
Kommentare (1)