Zum Inhalt springen

Wie funktioniert der Backpropagation Algorithmus?

Der Backpropagation Algorithmus ist ein Werkzeug zur Verbesserung des Neuronalen Netzwerkes während des Trainingsprozesses. Mit Hilfe dieses Algorithmus werden die Parameter der einzelnen Neuronen so abgeändert, dass die Vorhersage des Modells und der tatsächliche Wert möglichst schnell übereinstimmen. Dadurch kann ein Neuronales Netzwerk auch schon nach einer verhältnismäßig kurzen Trainingszeit gute Ergebnisse liefern.

Dieser Beitrag reiht sich in die anderen Beiträge zu Künstliche Intelligenz Grundlagen ein. Wenn Du noch keinen Background zum Thema Neural Networks und Gradientenverfahren hast, solltest Du bevor Du weiterliest, die verlinkten Beiträge anschauen. Wir werden auf diese Konzepte nur noch kurz eingehen können. Machine Learning im Allgemeinen ist ein sehr mathelastiges Themengebiet. Für diese Erläuterung von Backpropagation versuchen wir soweit wie möglich auf mathematische Herleitungen zu verzichten und lediglich ein Grundverständnis für die Vorgehensweise zu vermitteln.

Wie funktionieren Neuronale Netzwerke?

Neuronale Netze bestehen aus vielen Neuronen, die in verschiedenen Schichten organisiert sind und miteinander kommunizieren und verknüpft sind. In der Eingabeschicht werden den Neuronen verschiedene Inputs zur Berechnung gegeben. Das Netzwerk soll darauf trainiert werden, dass die Ausgabeschicht, die letzte Schicht, eine möglichst genaue Vorhersage auf Basis des Inputs macht, das dem tatsächlichen Ergebnis so nahe wie möglich kommt.

Das Bild zeigt den Grundaufbau eines Künstlichen Neuronalen Netzwerkes mit den verschiedenen Schichten.
Aufbau eines Neuronalen Netzwerkes | Quelle: Autor

Dazu werden die sogenannten Hidden Layers genutzt. Diese Schichten enthalten auch viele Neuronen, die mit der vorherigen und der darauffolgenden Schicht kommunizieren. Während des Trainings werden die Gewichtungsparameter jedes Neurons so verändert, dass die Vorhersage sich der Realität so weit wie möglich annähert. Der Backpropagation Algorithmus hilft uns bei der Entscheidung, welchen Parameter wir wie abändern müssen, damit sich die Verlustfunktion minimiert.

Was ist das Gradientenverfahren?

Das Gradientenverfahren ist ein Algorithmus aus den mathematischen Optimierungsproblemen, der hilft, sich dem Minimum einer Funktion so schnell wie möglich zu nähern. Mathematisch berechnet man dazu die Ableitung einer Funktion, den sogenannten Gradienten, und geht in die entgegengesetzte Richtung dieses Vektors, weil dort der steilste Abstieg der Funktion ist.

Das Diagramm zeigt das Gradient Descent Verfahren am Beispiel. Es ist der Funktionsgraph von f(x) = x² zu sehen und die Tangenten an verschiedenen Stellen.
Gradientenverfahren für die Funktion f(x) = x² | Quelle: Autor

Wem das zu mathematisch ist, der kennt diese Vorgehensweise vielleicht vom Wandern in den Bergen. Man hat schweiß gebadet endlich den Gipfel erklommen, die obligatorischen Bilder gemacht und die Aussicht ausreichend genossen und möchte nun auf schnellstem Wege wieder ins Tal und zurück nach Hause. Man sucht also den schnellsten Weg vom Berg hinunter ins Tal, also das Minimum der Funktion. Intuitiv wird man dazu einfach den Weg gehen der für das Auge den steilsten Abstieg hat, weil man davon ausgeht, dass man so am schnellsten wieder bergab kommt. Das ist natürlich nur bildlich gesprochen, da sich keiner die steilste Klippe am Berg hinunter trauen wird.

Dasselbe macht das Gradientenverfahren mit der Funktion. Wir befinden uns irgendwo im Funktionsgraphen und versuchen das Minimum der Funktion zu finden. Entgegen dem Beispiel haben wir in dieser Situation nur zwei Möglichkeiten uns fortzubewegen. Entweder in die positive oder die negative x-Richtung (bei mehr als einer Variablen, also einem mehrdimensionalen Raum, sind es natürlich entsprechend mehr Richtungen). Der Gradient hilft uns dabei, indem wir wissen, dass die negative Richtung des Gradienten der steilste Funktionsabstieg ist.

Was ist das Gradientenverfahren im Machine Learning?

Die Funktion, welche uns beim Machine Learning interessiert, ist die Verlustfunktion. Sie misst den Unterschied zwischen der Vorhersage des Neuronalen Netzwerkes und dem tatsächlichen Ergebnis des Trainingsdatenpunktes. Auch diese Funktion wollen wir minimieren, da wir dann eine Differenz von 0 haben. Dann kann unser Modell exakt die Ergebnisse des Datensatzes vorhersagen. Die Stellschrauben um dort hinzukommen, sind die Gewichtungen der Neuronen, die wir ändern können, um dem Ziel näher zu kommen.

In Kurzform: Während des Trainings erhalten wir die Verlustfunktion, deren Minimum wir versuchen zu finden. Dazu berechnen wir nach jeder Wiederholung den Gradienten der Funktion und gehen in die Richtung des steilsten Abstiegs der Funktion. Leider wissen wir nun noch nicht, welchen Parameter wir wie stark abändern müssen, um die Verlustfunktion zu minimieren. Das Problem dabei ist, dass das Gradientenverfahren immer nur für die vorhergegangene Layer und deren Parameter durchgeführt werden kann. Ein tiefes Neuronales Netzwerk besteht jedoch aus vielen verschiedenen Hidden Layern, deren Parameter theoretisch alle für den Fehler verantwortlich sein können.

In großen Netzwerken müssen wir also auch feststellen, wie groß der Einfluss der einzelnen Parameter auf den schlussendlichen Fehler waren und wie stark wir sie abändern müssen. Das ist die zweite Säule der Backpropagation in Deep Learning, woher auch der Name kommt.

Wie funktioniert der Backpropagation Algorithmus?

Wir versuchen diesen Beitrag so unmathematisch wie möglich zu halten, aber ganz ohne geht es leider nicht. Jede Schicht in unserem Netzwerk ist definiert durch einen Input, entweder aus der vorangegangenen Layer oder aus dem Trainingsdatensatz, und über einen Output, der an die nächsten Schicht weitergegeben wird. Der Unterschied zwischen Input und Output entsteht durch die Gewichtungen und die Aktivierungsfunktionen der Neuronen.

Das Problematische daran ist, dass der Einfluss den eine Schicht auf den schlussendlichen Fehler hat auch davon abhängig ist, wie die nachfolgende Schicht diesen Fehler weitergibt. Selbst wenn sich ein Neuron „verrechnet“ fällt das nicht so stark ins Gewicht, wenn das Neuron in der nächsten Schicht diesen Input einfach ignoriert, also dessen Gewichtung auf 0 setzt. Dies zeigt sich mathematisch daran, dass der Gradient einer Schicht auch die Parameter der nachfolgenden Schicht enthält. Deshalb müssen wir die Backpropagation in der letzten Schicht, der Ausgabeschicht, beginnen und dann Schicht für Schicht mit dem Gradientenverfahren die Parameter optimieren.

Von daher kommt auch der Name Backpropagation, oder auch Fehlerrückführung, da wir den Fehler von hinten durch das Netzwerk propagieren und die Parameter optimieren.

Wie funktioniert der Vorwärts- und Rückwärtsdurchlauf im Detail?

Der Vorwärtsdurchlauf ist der Prozess, bei dem eine Eingabe genommen und durch das neuronale Netz weitergeleitet wird, um eine Ausgabe zu erzeugen. Während des Vorwärtsdurchlaufs wendet jede Schicht des neuronalen Netzes eine lineare Transformation auf die Eingaben an und leitet das Ergebnis durch eine nichtlineare Aktivierungsfunktion. Die Ausgabe der letzten Schicht wird dann mit der tatsächlichen Ausgabe (dem Ziel) verglichen, um den Verlust oder Fehler zu berechnen.

Beim Backward Pass werden die Gewichte des neuronalen Netzes auf der Grundlage des im Forward Pass berechneten Verlustes aktualisiert. Das Ziel des Backward-Passes ist es, die Gewichte so anzupassen, dass der Fehler minimiert wird, wodurch die Genauigkeit des neuronalen Netzes verbessert wird.

Um die Gewichte zu aktualisieren, wird der Gradient der Verlustfunktion in Bezug auf jedes Gewicht mit Hilfe der Kettenregel der Infinitesimalrechnung berechnet. Dies beinhaltet die Berechnung der partiellen Ableitung des Verlusts in Bezug auf die Ausgabe jedes Neurons im Netz und dann die Verwendung dieser partiellen Ableitungen zur Berechnung der partiellen Ableitung des Verlusts in Bezug auf jedes Gewicht.

Nach der Berechnung des Gradienten werden die Gewichte des neuronalen Netzes mit Hilfe eines Optimierungsalgorithmus wie dem stochastischen Gradientenabstieg aktualisiert. Der Optimierungsalgorithmus passt die Gewichte in der Richtung an, die die Verlustfunktion minimiert, so dass das Netz aus den Trainingsdaten lernen und seine Leistung verbessern kann.

Der Schlüssel zum Erfolg der Backpropagation ist die Kettenregel, die eine effiziente Berechnung von Gradienten ermöglicht, indem Fehler rückwärts durch das Netz propagiert werden. Durch die effiziente Berechnung von Gradienten ermöglicht Backpropagation neuronalen Netzen das Lernen aus großen Datenmengen und die Erzielung einer hohen Genauigkeit in einem breiten Spektrum von Anwendungen.

Allerdings kann Backpropagation auch sehr rechenintensiv sein, insbesondere bei großen und komplexen neuronalen Netzen. Um dieses Problem zu lösen, wurden verschiedene Modifikationen und Optimierungstechniken vorgeschlagen, wie z. B. Mini-Batch-Training, Momentum und adaptive Lernraten.

Welche Vorteile bringt der Backpropagation Algorithmus?

Dieser Algorithmus bietet einige Vorteile beim Training von Neuronalen Netzwerken. Dazu gehören unter anderem:

  • Einfache Nutzung: Die Fehlerrückführung kann einfach und schnell umgesetzt werden und in das Netzwerk Training eingebaut werden.
  • Keine zusätzlichen Hyperparameter: Im Gegensatz zu Neuronalen Netzwerken werden bei der Backpropagation keine zusätzlichen Hyperparameter eingeführt, die die Leistung des Algorithmus beeinflussen.
  • Standardmethode: Die Anwendung der Fehlerrückführung ist mittlerweile zum Standard geworden und wird deshalb bereits standardmäßig in vielen Modulen ohne zusätzliche Programmierung angeboten.

Wie verhält sich die Backpropagation im Vergleich zu anderen Modellen?

Backpropagation ist eine Art überwachter Lernalgorithmus, der für das Training künstlicher neuronaler Netze verwendet wird. Es gibt aber auch andere Lernalgorithmen, die für supervised Learning, unsupervised Learning und Reinforcement Learning verwendet werden können. Im Folgenden werden einige Vergleiche zwischen Backpropagation und anderen gängigen Lernalgorithmen angestellt:

  • Decision Trees: Entscheidungsbäume sind eine Art von überwachtem Lernalgorithmus, der für Klassifizierungs- und Regressionsaufgaben verwendet wird. Sie bauen ein Modell auf, indem sie die Daten rekursiv in Teilmengen unterteilen, die auf dem Wert eines bestimmten Merkmals basieren. Entscheidungsbäume sind leicht zu verstehen und zu interpretieren und können sowohl kategorische als auch kontinuierliche Daten verarbeiten. Sie sind jedoch anfällig für eine Überanpassung und können bei komplexen Daten nicht gut funktionieren.
  • Support Vector Machine (SVMs): SVMs sind eine Art überwachter Lernalgorithmus, der für Klassifizierungs- und Regressionsaufgaben verwendet wird. Sie finden die Hyperebene, die den Abstand zwischen zwei Datenklassen maximiert, und können sowohl lineare als auch nichtlineare Daten verarbeiten. SVMs können sehr rechenintensiv sein und erfordern unter Umständen eine sorgfältige Abstimmung der Hyperparameter.
  • k-nearest neighbor (k-NN): k-NN ist eine Art träger Lernalgorithmus, der für Klassifizierungs- und Regressionsaufgaben verwendet wird. Er findet die k nächstgelegenen Datenpunkte zu einer neuen Eingabe und verwendet dann diese Punkte zur Vorhersage der Ausgabe. k-NN kann mit jeder Abstandsmetrik verwendet werden und kann sowohl kategoriale als auch kontinuierliche Daten verarbeiten. Es kann jedoch sehr rechenintensiv sein und ist bei hochdimensionalen Daten möglicherweise nicht sehr leistungsfähig.

Im Vergleich zu diesen Algorithmen hat die Backpropagation einige einzigartige Merkmale und Vorteile:

  1. Backpropagation ist gut geeignet für Aufgaben, die große Datenmengen, hochdimensionale Eingaben und komplexe Beziehungen zwischen Eingaben und Ausgaben beinhalten.
  2. Backpropagation kann sowohl mit kontinuierlichen als auch mit kategorialen Daten umgehen und ist damit ein vielseitiger Algorithmus für ein breites Spektrum von Anwendungen.
  3. Backpropagation kann mit einer Vielzahl von Aktivierungsfunktionen verwendet werden, die es ermöglichen, nichtlineare Beziehungen zwischen Eingaben und Ausgaben zu modellieren.
  4. Backpropagation ist in der Lage, hierarchische Darstellungen von Daten zu lernen, was sie zu einem leistungsstarken Werkzeug für Aufgaben wie Bilderkennung und Verarbeitung natürlicher Sprache macht.
  5. Backpropagation kann jedoch auch einige Einschränkungen und Herausforderungen mit sich bringen, wie z. B. Overfitting, verschwindende Gradienten und Rechenkomplexität. Um diese Probleme anzugehen, wurden verschiedene Modifikationen und Optimierungstechniken vorgeschlagen, wie z. B. Regularisierung, Dropout und Batch-Normalisierung. Insgesamt hängt die Wahl des Lernalgorithmus von der spezifischen Aufgabe, den Daten und den verfügbaren Ressourcen ab, und jeder Algorithmus hat seine eigenen Stärken und Schwächen.

Das solltest Du mitnehmen

  • Backpropagation ist ein Algorithmus zum Training von Neuronalen Netzwerken.
  • Er ist unter anderem die Anwendung des Gradientenverfahrens auf die Verlustfunktion des Netzwerkes.
  • Der Name kommt daher, dass der Fehler vom Ende des Modells Schicht für Schicht nach vorne propagiert wird.

Andere Beiträge zum Thema Backpropagation

  • Tensorflow bietet eine ausführliche Erklärung zu Gradienten und Backpropagation und zeigt auch direkt, wie sich das Ganze in Python umsetzen lässt.
Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Cookie Consent mit Real Cookie Banner