Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws2021:wie_das_netz_lernt_erfahrt_ihr_hier

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
ws2021:wie_das_netz_lernt_erfahrt_ihr_hier [2021/04/05 16:35]
annika_cibis angelegt
ws2021:wie_das_netz_lernt_erfahrt_ihr_hier [2021/04/06 19:38] (aktuell)
annika_cibis
Zeile 3: Zeile 3:
 ==Wie findet man die optimalen Gewichte im Netz?== ==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. 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.
-Animation zu forward propagation+{{ws2021:​ekg:​forward_propagation.gif|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. Also wie weit der Output des Netzes vom richtigen Ergebnis abweicht. +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 Netzeswie 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. ​Die Funktion erzeugt einen einzigen Wertden Fehler.+Zusammenfassend kann das neuronale Netz als mathematische Funktion mit sehr vielen Parametern, den gewichteten Verbindungen,​ verstanden werden. ​Diese Funktion erzeugt einen einzigen Wertden 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. 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.
  
Zeile 12: Zeile 12:
 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 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. ​ Für mehr-dimensionale Funktionen ermittelt man die Steigung mithilfe des Gradienten. ​
- +[[https://​shashank-ojha.github.io/​ParallelGradientDescent/​non-convex.png|Eine sehr hilfreiche Veranschaulichung findet ihr hier.]]
- +
-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. 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?== ==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 ​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.+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.1617633354.txt.gz · Zuletzt geändert: 2021/04/05 16:35 von annika_cibis