Dies ist eine alte Version des Dokuments!
Zu Beginn werden die Gewichte vollkommen zufällig gewählt. Dann werden der Input-Schicht Trainingsdaten übergeben. Aufgrund dieses Inputs und der gewichteten Verbindungen zur nächsten Schicht werden die Werte für die Neuronen der folgenden Schicht ermittelt, usw.. Der Input wird also vorwärts durchs Netz propagiert (forward-propagation) bis ein Output ermittelt wurde.
Im folgenden wird die Differenz des Outputs aufgrund zufälliger Gewichtungen mit dem gewollten Output ermittelt. So erhält man ein Maß für den Fehler des Netzes. Also wie weit der Output des Netzes vom richtigen Ergebnis abweicht. Zusammenfassend kann das neuronale Netz als mathematische Funktion mit sehr vielen Parametern, den gewichteten Verbindungen, verstanden werden. Die Funktion erzeugt einen einzigen Wert, den Fehler. Unser anfängliches Ziel einer mathematischen Funktion, die eine richtige Zuordnung von komplexen Input zu simplem Output erzeugt, können wir nun erreichen, indem wir den Fehler minimieren.
Für zweidimensionale Funktionen ist die Minimierung recht einfach: Man ermittle die Steigung durch ableiten und gehe einen kleinen Schritt in Richtung der negativen Steigung. Dies widerhole man, bis man näherungsweise bei einem Minima ankommt. Für mehr-dimensionale Funktionen ermittelt man die Steigung mithilfe des Gradienten.
Beispiel Foto aus Präsi mit 3D Gradient
Dies lässt sich auf unsere Netzwerk-Fehler-Funktion übertragen. Wir ermitteln also den Gradienten für unsere Funktion mit den aktuellen, zufälligen Gewichten und gehen dann einen kleinen Schritt entlang des Gradienten, verändern also unsere Gewichte etwas, sodass der Fehler kleiner wird.
Wenn man den Gradienten nur über einen einzigen Input ermittelt, dann kann das Netz tatsächlich nur diesen speziellen Input erkennen. Wir wollen aber, dass unser Netz allgemeingültig ist. Deshalb ermitteln wir den Gradienten für mehrere Inputs und nehmen dann den Mittelwert davon, bevor wir uns einen Schritt entlang des Gradienten bewegen. Also werden die Gewichte nicht auf einen speziellen Input angepasst, sondern so, dass möglichst vielen verschiedenen Inputs ihr jeweils richtiger Output zugeordnet wird. Für den nächsten Schritt entlang des Gradienten werden dann wiederum mehrere andere Inputs genommen über die gemittelt der Gradient berechnet wird.