Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws2021:wie_das_netz_lernt_erfahrt_ihr_hier

Trainingsprozess

Wie findet man die optimalen Gewichte im Netz?

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. forward propagation

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, wie weit also 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. Diese 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.

Wie kann man den Fehler bei einer Funktion mit soooo vielen Parametern 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. Eine sehr hilfreiche Veranschaulichung findet ihr hier.

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.

Kann das Netz dann auch allgemeine Muster erkennen oder nur die speziellen Daten, die dem Netz bereits gezeigt wurden?

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 der jeweils richtige Output zugeordnet wird. Für den nächsten Schritt entlang des Gradienten werden dann wiederum mehrere andere Input-Daten verwendet, über die das Mittel der Gradienten berechnet wird. Aufgrund dieses Mittelwertes spricht man auch von stochastic Gradient Descent.

ws2021/wie_das_netz_lernt_erfahrt_ihr_hier.txt · Zuletzt geändert: 2021/04/06 19:38 von annika_cibis