Informatik @ Exorciser

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
p:ki:machinelearning3 [2026/07/11 10:39] – [👉 Das Minimum direkt mit der Steigung berechnen oder doch nicht?] Ralf Kretzschmarp:ki:machinelearning3 [2026/08/25 15:15] (aktuell) – [2. Wo geht es nach unten?] Ralf Kretzschmar
Zeile 40: Zeile 40:
 ⚠️ Bei einer Funktion, die so aussieht: ᑎ , ist die Steigung oben beim Maximum gleich null. Und bei einer Funktion die so aussieht: ⸺ , ist die Steigung überall null.  ⚠️ Bei einer Funktion, die so aussieht: ᑎ , ist die Steigung oben beim Maximum gleich null. Und bei einer Funktion die so aussieht: ⸺ , ist die Steigung überall null. 
  
-ℹ️ Es kann durchaus sein, dass eine Fehlerfunktion $J(w)$ eher so aussieht: ᑌᐡ⸺ᑎ , d.h. dass diese mehrere Minima, Maxima und flache Passagen (Sattelpunkte) beinhaltet, bei welchen die Steigung jeweils gleich null ist. Wie damit in der Praxis umgegangen wird, erfährst du im Kapitel 3 weiter unten.+ℹ️ Es kann durchaus sein, dass eine Fehlerfunktion $J(w)$ eher so aussieht: ᑌᐡ⸺ᑎ , d.h. dass diese mehrere Minima, Maxima, Sattelpunkte und flache Passagen (Plateaus) beinhaltet, bei welchen die Steigung jeweils gleich null ist. Wie damit in der Praxis umgegangen wird, erfährst du im Kapitel 3 weiter unten.
  
 \\  \\ 
Zeile 50: Zeile 50:
  
 ++++Falls du genauer wissen willst, warum das so ist, hier klicken!| ++++Falls du genauer wissen willst, warum das so ist, hier klicken!|
-\\ In Wahrheit ist $J(w)$ eine Abkürzung. Eigentlich stecken die Gewichte $w$ in $f_{ML}(x)$ und der Ausgang $y$ wird aus dem Eingang $x$ mithilfe der Gewicht-Einstellung $w$ berechnet. D.h. $y$ hängt von $x$ und von $w$ ab. Somit müsste strenggenommen $y = f_{ML}(w,x)$ geschrieben werden. Der Fehler $e$ wird mit der Fehlerfunktion $J$ aus dem Ausgang $y$ und dem desired Output $d$ berechnet. D.h. $e$ hängt von $y$ und von $d$ ab. Somit müsste strenggenommen $e = J(d, y)$ geschrieben werden. Alles miteinander kombiniert ergibt $e = J(d, y) = J(d,f_{ML}(w,x))$. Wenn nun diese, in der Regel komplizierte Funktion abgeleitet und gleich null gesetzt wird, so entsteht meist eine komplizierte Gleichung, welche nicht mehr mit vernünftigem Aufwand exakt berechnet werden kann, sondern nur näherungsweise.\\ \\  +\\ Eigentlich ist $J(w)$ eine Abkürzung. Die Gewichte $w$ sind Teil der Stellvertreter-Funktion $y = f_{ML}(x)$. Somit hängt der Ausgang $y$ vom Eingang $x$ und von den Gewichten $w$ ab, d. h. $y = f_{ML}(w,x)$. Der Fehler $e$ wird mit der Fehlerfunktion $J$ aus dem Ausgang $y$ und im Falle eines Supervised Learnings (was wir in diesem Teil voraussetzen) dem Desired Output $d$ berechnet. Somit hängt $e$ von $y$ und von $d$ ab, d. h. $e = J(d, y)$. Alles miteinander kombiniert ergibt das $e = J(d, y) = J(d,f_{ML}(w,x))$. Wenn nun diese, in der Regel komplizierte Funktion abgeleitet und gleich null gesetzt wird, so ergeben sich meist Gleichungen, welche nicht mehr mit vernünftigem Aufwand exakt berechnet werden können, sondern nur näherungsweise.++++
-Je nach gewählter Strategie wird die Gewicht-Einstellung $w^*$ mit $e_{min}=J(w^*)$ auf eine andere Art angenähert. Bei den statistischen Verfahren geschieht dies durch Annahmen zur Verteilung der Daten, Formeln der Wahrscheinlichkeitstheorie und Vereinfachungen der Berechnungen. Bei den stochastischen Verfahren wird $w^*$ solange zufällig gewürfelt, bis ein akzeptabler Fehler $e$ erreicht wurde oder das Verfahren gestoppt wird. Beim iterativen Gradientenverfahren wird $w^*$ mithilfe der Steigung in mehreren Schritten immer besser angenähert.+++++
  
 \\  \\ 
Zeile 58: Zeile 57:
 \\ Abb.2: (Negativer) Gradient((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])).</WRAP> \\ Abb.2: (Negativer) Gradient((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])).</WRAP>
  
-⚠️ Für die folgenden Überlegungen tun wir so, als würde unsere Fehlerfunktion $J(w)$ so aussehen: ᑌ (d.h. eine Funktion mit einem eindeutigen Minimum).+⚠️ Für die folgenden Überlegungen tun wir so, als würde unsere Fehlerfunktion $J(w)$ so aussehen: ᑌ (Funktion mit einem eindeutigen Minimum).
  
   ; Gradient   ; Gradient
-  : Der Gradient in einem Punkt einer Funktion kann als "Pfeil" entlang der Steigung in diesem Punkt dargestellt werden. Er wird mit dem Zeichen $\nabla$  gekennzeichnet. Die Länge des Pfeils entspricht dem Wert der Steigung. In Abb.2 ist der Gradient für den Punkt $J(w^♡)$ als grüner Pfeil dargestellt.\\ \\ +  : Der Gradient in einem Punkt einer Funktion kann als "Pfeil" entlang der Steigung in diesem Punkt dargestellt werden. Er wird mit dem Zeichen $\nabla$  gekennzeichnet. Die Länge des Pfeils entspricht dem Wert der Steigung. In Abb.2 ist der Gradient für den Punkt $J(\hat{w})$ als grüner Pfeil dargestellt.\\ \\ 
   : 💡 Achtung, durch das Vorzeichen der Steigung zeigt der Gradient immer in diejenige Richtung, in welcher die Funktion grösser wird. Der negative Gradient $-\nabla$ zeigt dagegen immer in diejenige Richtung, in welcher die Funktion kleiner wird (blauer Pfeil in der Abbildung).   : 💡 Achtung, durch das Vorzeichen der Steigung zeigt der Gradient immer in diejenige Richtung, in welcher die Funktion grösser wird. Der negative Gradient $-\nabla$ zeigt dagegen immer in diejenige Richtung, in welcher die Funktion kleiner wird (blauer Pfeil in der Abbildung).
  
Zeile 72: Zeile 71:
 👉 Hier untersuchst du die Grundidee des Gradientenverfahrens. 👉 Hier untersuchst du die Grundidee des Gradientenverfahrens.
  
-⚠️ Im Programm wird von der Start-Gewicht-Einstellung $w[0]$ ausgegangen. Die $0$ zeigt an, dass es sich um den nullten "Lernschritt" handelt. Im Schritt $1$ wird aus $w[0]$ die neue Gewicht-Einstellung $w[1]$ berechnet. Dafür wird $w[0]$ um den blauen Pfeil $- \mu \cdot \nabla$ verschoben.+⚠️ Im Programm wird von der Start-Gewicht-Einstellung $w[0]$ ausgegangen. Die $0$ zeigt an, dass es sich um den nullten "Lernschritt" handelt. Im Schritt $1$ wird aus $w[0]$ die neue Gewicht-Einstellung $w[1]$ berechnet. Dafür wird $w[0]$ um den blauen Pfeil $- \mu \cdot \nabla$ verschoben, d. h. $w[1] = w[0] - \mu \cdot \nabla$.
  
   - Verschiebe mit der Maus die Position der Start-Gewicht-Einstellung $w[0]$ und verändere die Lernrate $\mu$ . Beantworte die folgenden Fragen im untenstehenden Textfeld   - Verschiebe mit der Maus die Position der Start-Gewicht-Einstellung $w[0]$ und verändere die Lernrate $\mu$ . Beantworte die folgenden Fragen im untenstehenden Textfeld
Zeile 78: Zeile 77:
     - Wie verändert sich die Länge des blauen Pfeils?     - Wie verändert sich die Länge des blauen Pfeils?
     - Wie gross ist der Pfeil ganz unten beim Minimum?     - Wie gross ist der Pfeil ganz unten beim Minimum?
 +    - In welchen Situationen wird $w$ erhöht? In welchen Situationen wird $w$ vermindert?
   - Vergleiche danach deine Einsichten mit unseren Kommentaren am Ende dieses Auftrags.   - Vergleiche danach deine Einsichten mit unseren Kommentaren am Ende dieses Auftrags.
 {{gem/plain?0=N4XyA#bb1993deecc6bf61}} {{gem/plain?0=N4XyA#bb1993deecc6bf61}}
  
-{{exorciser/jspg?javascript=%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20CONSTANTS%20AND%20GLOBAL%20VARIABLES%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%2F%2F%20Canvas%20coordinates%20are%20X%2C%20Y%2C%20function%20values%20are%20x%2C%20y%0A%0A%2F%2F%20constants%0Aconst%20xMIN%20%3D%20-4.0%3B%0Aconst%20xMAX%20%3D%204.0%3B%0Aconst%20X_CANVAS_SIZE%20%3D%20400%3B%0Aconst%20Y_CANVAS_SIZE%20%3D%20200%3B%0Aconst%20XSHIFT%20%3D%20X_CANVAS_SIZE%20%2a%200.55%3B%0Aconst%20YSHIFT%20%3D%20Y_CANVAS_SIZE%20%2a%200.85%3B%0Aconst%20XSCALE%20%3D%20X_CANVAS_SIZE%20%2a%200.1%3B%0Aconst%20YSCALE%20%3D%20Y_CANVAS_SIZE%20%2a%200.2%3B%0Aconst%20GRAPH_GRANULARITY%20%3D%200.02%3B%0Aconst%20TEXT_SIZE%20%3D%2018%3B%0A%0A%2F%2F%20global%20variables%0Alet%20slider%3B%0Alet%20xPosition%3B%0Alet%20learningrate%3B%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20CALCULATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20func%28x%29%20%7B%0A%09return%20x%20%2a%2a%202%20%2F%204%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20derivate%20of%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20deriv%28x%29%20%7B%0A%09return%20x%20%2F%202%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20gradient%20value%20given%20x%20of%20the%20gradient%20line%20through%20point%20xOrigin%0A%2F%2F%0Afunction%20grad%28xOrigin%2C%20x%29%20%7B%0A%09return%20deriv%28xOrigin%29%20%2a%20%28x%20-%20xOrigin%29%20%2B%20func%28xOrigin%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20given%20y%20of%20this%20gradient%20vector%0A%2F%2F%0Afunction%20inverseGrad%28xOrigin%2C%20y%29%20%7B%0A%09return%20%28y%20-%20func%28xOrigin%29%29%20%2F%20deriv%28xOrigin%29%20%2B%20xOrigin%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20endpoint%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20and%20has%20the%20length%20length%0A%2F%2F%0Afunction%20xOfGrad%28xOrigin%2C%20length%29%20%7B%0A%09if%20%28deriv%28xOrigin%29%20%3E%3D%200%29%20%7B%0A%09%09return%20xOrigin%20-%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%20else%20%7B%0A%09%09return%20xOrigin%20%2B%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20transform%20x%20value%20into%20canvas%20X%20coordinate%0A%2F%2F%0Afunction%20XGetCoord%28x%29%20%7B%0A%09return%20XSCALE%20%2a%20x%20%2B%20XSHIFT%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20y%20value%20into%20canvas%20Y%20coordinate%0A%2F%2F%0Afunction%20YGetCoord%28y%29%20%7B%0A%09return%20YSHIFT%20-%20YSCALE%20%2a%20y%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20X%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20xGetVal%28X%29%20%7B%0A%09return%20%28X%20-%20XSHIFT%29%20%2F%20XSCALE%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20Y%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20yGetVal%28Y%29%20%7B%0A%09return%20%28YSHIFT%20-%20Y%29%20%2F%20YSCALE%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20VISUALISATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20get%20position%20in%20graph%0A%2F%2F%0Afunction%20getMouseXValue%28%29%20%7B%0A%09let%20xPosition%20%3D%20xGetVal%28mouseX%29%3B%0A%09%2F%2F%20stop%20motion%20at%20edges%0A%09if%20%28xPosition%20%3C%20xMIN%29%20%7B%0A%09%09xPosition%20%3D%20xMIN%3B%0A%09%7D%0A%09if%20%28xPosition%20%3E%20xMAX%29%20%7B%0A%09%09xPosition%20%3D%20xMAX%3B%0A%09%7D%0A%09return%20xPosition%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20axes%0A%2F%2F%0Afunction%20drawAxes%28%29%20%7B%0A%09stroke%28%22black%22%29%3B%0A%09fill%28%22black%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%2C%20X_CANVAS_SIZE%20%2a%200.95%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09%2F%2F%20add%20labels%0A%09strokeWeight%281%29%3B%0A%09text%28%22J%22%2C%20X_CANVAS_SIZE%20%2a%200.05%2C%20Y_CANVAS_SIZE%20%2a%200.1%29%0A%09text%28%22w%22%2C%20X_CANVAS_SIZE%20%2a%200.9%2C%20Y_CANVAS_SIZE%20%2a%200.85%29%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20graph%0A%2F%2F%0Afunction%20drawGraph%28%29%20%7B%0A%09stroke%28%22red%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09for%20%28let%20x%20%3D%20xMIN%3B%20x%20%3C%3D%20xMAX%3B%20x%20%3D%20x%20%2B%20GRAPH_GRANULARITY%29%20%7B%0A%09%09point%28XGetCoord%28x%29%2C%20YGetCoord%28func%28x%29%29%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawGradientVector%28xOrigin%29%20%7B%0A%09%2F%2F%20get%20gradient%20vector%20length%0A%09let%20length%20%3D%20learningrate%20%2a%20Math.abs%28deriv%28xOrigin%29%29%3B%0A%09%2F%2F%20draw%20line%0A%09stroke%28%22blue%22%29%3B%0A%09if%20%28YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%20%3C%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09line%28XGetCoord%28xOrigin%29%2C%0A%09%09%09YGetCoord%28func%28xOrigin%29%29%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%29%3B%0A%09%7D%20else%20%7B%0A%09%09line%28XGetCoord%28xOrigin%29%2C%0A%09%09%09YGetCoord%28func%28xOrigin%29%29%2C%20XGetCoord%28inverseGrad%28xOrigin%2C%20yGetVal%28Y_CANVAS_SIZE%20%2a%200.95%29%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09%7D%0A%09%2F%2F%20draw%20intersection%20point%0A%09stroke%28%22blue%22%29%3B%0A%09fill%28%22red%22%29%3B%0A%09circle%28XGetCoord%28xOrigin%29%2C%20YGetCoord%28func%28xOrigin%29%29%2C%206%29%3B%0A%09%2F%2F%20draw%20end%20point%0A%09fill%28%22blue%22%29%3B%0A%09if%20%28YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%20%3C%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09circle%28XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%2C%203%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawLearningStep%28xOrigin%29%20%7B%0A%09%2F%2F%20get%20gradient%20vector%20length%0A%09let%20length%20%3D%20learningrate%20%2a%20Math.abs%28deriv%28xOrigin%29%29%3B%0A%09%2F%2F%20indicate%20weight%20at%20intersection%20point%0A%09stroke%28%22black%22%29%3B%0A%09strokeWeight%281%29%3B%0A%09fill%28%22black%22%29%3B%0A%09drawingContext.setLineDash%28%5BY_CANVAS_SIZE%20%2a%200.9%20%2F%2019%2C%20Y_CANVAS_SIZE%20%2a%200.9%20%2F%2019%5D%29%3B%0A%09line%28XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09drawingContext.setLineDash%28%5B0%2C%200%5D%29%3B%0A%09text%28%22w%5B0%5D%22%2C%20XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%2a1.01%29%3B%0A%09%2F%2F%20indicate%20weight%20at%20end%20point%0A%09line%28XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.05%29%3B%0A%09text%28%22w%5B1%5D%22%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%2a1.11%29%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20write%20text%20output%0A%2F%2F%0Afunction%20writeTextOutput%28xOrigin%29%20%7B%0A%09noStroke%28%29%3B%0A%09fill%28%22blue%22%29%3B%0A%09text%28%22Gradient%20%E2%88%87%22%2C%20XGetCoord%280%29%2C%202%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28deriv%28xOrigin%29.toFixed%282%29%2C%20XGetCoord%280%29%2C%207%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28%22Lernrate%20%CE%BC%22%2C%20XGetCoord%280%29%2C%2012%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28learningrate.toFixed%281%29%2C%20XGetCoord%280%29%2C%2017%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20adjust%20learningrate%0A%2F%2F%0Afunction%20adjustLearningrate%28%29%20%7B%0A%09learningrate%20%3D%20slider.value%28%29%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20MAIN%20PROGRAM%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20setup%28%29%0A%2F%2F%0Afunction%20setup%28%29%20%7B%0A%09%2F%2F%20defaults%0A%09learningrate%20%3D%201.0%3B%0A%09xPosition%20%3D%20xMIN%3B%0A%0A%09%2F%2F%20create%20canvas%20%0A%09createCanvas%28X_CANVAS_SIZE%2C%201.3%20%2a%20Y_CANVAS_SIZE%29%3B%0A%0A%09%2F%2F%20set%20text%20properties%0A%09textSize%28TEXT_SIZE%29%3B%0A%09textAlign%28CENTER%2C%20CENTER%29%3B%0A%0A%09%2F%2F%20create%20Slider%0A%09slider%20%3D%20createSlider%280.5%2C%205%2C%201%2C%200.1%29%3B%0A%09slider.position%28X_CANVAS_SIZE%20%2a%200.15%2C%20Y_CANVAS_SIZE%20%2B%2040%29%3B%20%2F%2F%20x%20and%20y%0A%09slider.size%28X_CANVAS_SIZE%20%2a%200.8%2C%2030%29%3B%20%2F%2F%20width%20and%20height%0A%09%2F%2F%20add%20slider%20functionality%0A%09slider.input%28adjustLearningrate%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20draw%28%29%0A%2F%2F%0Afunction%20draw%28%29%20%7B%0A%0A%09%2F%2F%20clear%20everything%0A%09background%28%22white%22%29%3B%0A%0A%09%2F%2F%20get%20x%20value%20of%20mouse%20position%20in%20graph%0A%09if%20%28mouseY%20%3C%3D%20%20Y_CANVAS_SIZE%2a0.95%29%20%7B%0A%09%09xPosition%20%3D%20getMouseXValue%28%29%3B%0A%09%7D%0A%0A%09%2F%2F%20draw%20everything%0A%09drawAxes%28%29%3B%0A%09drawGraph%28%29%3B%0A%09drawGradientVector%28xPosition%29%3B%0A%09drawLearningStep%28xPosition%29%3B%0A%09writeTextOutput%28xPosition%29%3B%0A%7D&css=undefined&html=%3Cscript%20src%3D%22https%3A%2F%2Fapp.exorciser.ch%2Flib%2Fp5.js%22%3E%3C%2Fscript%3E&height=430px#Gradient1}}+{{exorciser/jspg?javascript=%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20CONSTANTS%20AND%20GLOBAL%20VARIABLES%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%2F%2F%20Canvas%20coordinates%20are%20X%2C%20Y%2C%20function%20values%20are%20x%2C%20y%0A%0A%2F%2F%20constants%0Aconst%20xMIN%20%3D%20-4.0%3B%0Aconst%20xMAX%20%3D%204.0%3B%0Aconst%20X_CANVAS_SIZE%20%3D%20400%3B%0Aconst%20Y_CANVAS_SIZE%20%3D%20200%3B%0Aconst%20XSHIFT%20%3D%20X_CANVAS_SIZE%20%2a%200.55%3B%0Aconst%20YSHIFT%20%3D%20Y_CANVAS_SIZE%20%2a%200.85%3B%0Aconst%20XSCALE%20%3D%20X_CANVAS_SIZE%20%2a%200.1%3B%0Aconst%20YSCALE%20%3D%20Y_CANVAS_SIZE%20%2a%200.2%3B%0Aconst%20GRAPH_GRANULARITY%20%3D%200.02%3B%0Aconst%20TEXT_SIZE%20%3D%2018%3B%0A%0A%2F%2F%20global%20variables%0Alet%20slider%3B%0Alet%20xPosition%3B%0Alet%20learningrate%3B%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20CALCULATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20func%28x%29%20%7B%0A%09return%20x%20%2a%2a%202%20%2F%204%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20derivate%20of%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20deriv%28x%29%20%7B%0A%09return%20x%20%2F%202%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20gradient%20value%20given%20x%20of%20the%20gradient%20line%20through%20point%20xOrigin%0A%2F%2F%0Afunction%20grad%28xOrigin%2C%20x%29%20%7B%0A%09return%20deriv%28xOrigin%29%20%2a%20%28x%20-%20xOrigin%29%20%2B%20func%28xOrigin%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20given%20y%20of%20this%20gradient%20vector%0A%2F%2F%0Afunction%20inverseGrad%28xOrigin%2C%20y%29%20%7B%0A%09return%20%28y%20-%20func%28xOrigin%29%29%20%2F%20deriv%28xOrigin%29%20%2B%20xOrigin%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20endpoint%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20and%20has%20the%20length%20length%0A%2F%2F%0Afunction%20xOfGrad%28xOrigin%2C%20length%29%20%7B%0A%09if%20%28deriv%28xOrigin%29%20%3E%3D%200%29%20%7B%0A%09%09return%20xOrigin%20-%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%20else%20%7B%0A%09%09return%20xOrigin%20%2B%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20transform%20x%20value%20into%20canvas%20X%20coordinate%0A%2F%2F%0Afunction%20XGetCoord%28x%29%20%7B%0A%09return%20XSCALE%20%2a%20x%20%2B%20XSHIFT%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20y%20value%20into%20canvas%20Y%20coordinate%0A%2F%2F%0Afunction%20YGetCoord%28y%29%20%7B%0A%09return%20YSHIFT%20-%20YSCALE%20%2a%20y%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20X%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20xGetVal%28X%29%20%7B%0A%09return%20%28X%20-%20XSHIFT%29%20%2F%20XSCALE%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20Y%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20yGetVal%28Y%29%20%7B%0A%09return%20%28YSHIFT%20-%20Y%29%20%2F%20YSCALE%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20VISUALISATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20get%20position%20in%20graph%0A%2F%2F%0Afunction%20getMouseXValue%28%29%20%7B%0A%09let%20xPosition%20%3D%20xGetVal%28mouseX%29%3B%0A%09%2F%2F%20stop%20motion%20at%20edges%0A%09if%20%28xPosition%20%3C%20xMIN%29%20%7B%0A%09%09xPosition%20%3D%20xMIN%3B%0A%09%7D%0A%09if%20%28xPosition%20%3E%20xMAX%29%20%7B%0A%09%09xPosition%20%3D%20xMAX%3B%0A%09%7D%0A%09return%20xPosition%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20axes%0A%2F%2F%0Afunction%20drawAxes%28%29%20%7B%0A%09stroke%28%22black%22%29%3B%0A%09fill%28%22black%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%2C%20X_CANVAS_SIZE%20%2a%200.95%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09%2F%2F%20add%20labels%0A%09strokeWeight%281%29%3B%0A%09text%28%22J%22%2C%20X_CANVAS_SIZE%20%2a%200.05%2C%20Y_CANVAS_SIZE%20%2a%200.1%29%0A%09text%28%22w%22%2C%20X_CANVAS_SIZE%20%2a%200.9%2C%20Y_CANVAS_SIZE%20%2a%200.85%29%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20graph%0A%2F%2F%0Afunction%20drawGraph%28%29%20%7B%0A%09stroke%28%22red%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09for%20%28let%20x%20%3D%20xMIN%3B%20x%20%3C%3D%20xMAX%3B%20x%20%3D%20x%20%2B%20GRAPH_GRANULARITY%29%20%7B%0A%09%09point%28XGetCoord%28x%29%2C%20YGetCoord%28func%28x%29%29%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawGradientVector%28xOrigin%29%20%7B%0A%09%2F%2F%20get%20gradient%20vector%20length%0A%09let%20length%20%3D%20learningrate%20%2a%20Math.abs%28deriv%28xOrigin%29%29%3B%0A%09%2F%2F%20draw%20line%0A%09stroke%28%22blue%22%29%3B%0A%09if%20%28YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%20%3C%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09line%28XGetCoord%28xOrigin%29%2C%0A%09%09%09YGetCoord%28func%28xOrigin%29%29%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%29%3B%0A%09%7D%20else%20%7B%0A%09%09line%28XGetCoord%28xOrigin%29%2C%0A%09%09%09YGetCoord%28func%28xOrigin%29%29%2C%20XGetCoord%28inverseGrad%28xOrigin%2C%20yGetVal%28Y_CANVAS_SIZE%20%2a%200.95%29%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09%7D%0A%09%2F%2F%20draw%20intersection%20point%0A%09stroke%28%22blue%22%29%3B%0A%09fill%28%22red%22%29%3B%0A%09circle%28XGetCoord%28xOrigin%29%2C%20YGetCoord%28func%28xOrigin%29%29%2C%206%29%3B%0A%09%2F%2F%20draw%20end%20point%0A%09fill%28%22blue%22%29%3B%0A%09if%20%28YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%20%3C%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09circle%28XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%2C%203%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawLearningStep%28xOrigin%29%20%7B%0A%09%2F%2F%20get%20gradient%20vector%20length%0A%09let%20length%20%3D%20learningrate%20%2a%20Math.abs%28deriv%28xOrigin%29%29%3B%0A%09%2F%2F%20indicate%20weight%20at%20intersection%20point%0A%09stroke%28%22black%22%29%3B%0A%09strokeWeight%281%29%3B%0A%09fill%28%22black%22%29%3B%0A%09drawingContext.setLineDash%28%5BY_CANVAS_SIZE%20%2a%200.9%20%2F%2019%2C%20Y_CANVAS_SIZE%20%2a%200.9%20%2F%2019%5D%29%3B%0A%09line%28XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09drawingContext.setLineDash%28%5B0%2C%200%5D%29%3B%0A%09text%28%22w%5B0%5D%22%2C%20XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%20%2a%201.01%29%3B%0A%09%2F%2F%20indicate%20weight%20at%20end%20point%0A%09line%28XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.05%29%3B%0A%09text%28%22w%5B1%5D%22%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%20%2a%201.11%29%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20write%20text%20output%0A%2F%2F%0Afunction%20writeTextOutput%28xOrigin%29%20%7B%0A%09noStroke%28%29%3B%0A%09fill%28%22blue%22%29%3B%0A%09text%28%22Negativer%20Gradient%20-%E2%88%87%22%2C%20XGetCoord%280%29%2C%202%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28%28-1.0%20%2a%20deriv%28xOrigin%29%29.toFixed%282%29%2C%20XGetCoord%280%29%2C%207%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28%22Lernrate%20%CE%BC%22%2C%20XGetCoord%280%29%2C%2012%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28learningrate.toFixed%281%29%2C%20XGetCoord%280%29%2C%2017%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20adjust%20learningrate%0A%2F%2F%0Afunction%20adjustLearningrate%28%29%20%7B%0A%09learningrate%20%3D%20slider.value%28%29%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20MAIN%20PROGRAM%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20setup%28%29%0A%2F%2F%0Afunction%20setup%28%29%20%7B%0A%09%2F%2F%20defaults%0A%09learningrate%20%3D%201.0%3B%0A%09xPosition%20%3D%20xMIN%3B%0A%0A%09%2F%2F%20create%20canvas%20%0A%09createCanvas%28X_CANVAS_SIZE%2C%201.3%20%2a%20Y_CANVAS_SIZE%29%3B%0A%0A%09%2F%2F%20set%20text%20properties%0A%09textSize%28TEXT_SIZE%29%3B%0A%09textAlign%28CENTER%2C%20CENTER%29%3B%0A%0A%09%2F%2F%20create%20Slider%0A%09slider%20%3D%20createSlider%280.5%2C%205%2C%201%2C%200.1%29%3B%0A%09slider.position%28X_CANVAS_SIZE%20%2a%200.15%2C%20Y_CANVAS_SIZE%20%2B%2040%29%3B%20%2F%2F%20x%20and%20y%0A%09slider.size%28X_CANVAS_SIZE%20%2a%200.8%2C%2030%29%3B%20%2F%2F%20width%20and%20height%0A%09%2F%2F%20add%20slider%20functionality%0A%09slider.input%28adjustLearningrate%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20draw%28%29%0A%2F%2F%0Afunction%20draw%28%29%20%7B%0A%0A%09%2F%2F%20clear%20everything%0A%09background%28%22white%22%29%3B%0A%0A%09%2F%2F%20get%20x%20value%20of%20mouse%20position%20in%20graph%0A%09if%20%28mouseY%20%3C%3D%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09xPosition%20%3D%20getMouseXValue%28%29%3B%0A%09%7D%0A%0A%09%2F%2F%20draw%20everything%0A%09drawAxes%28%29%3B%0A%09drawGraph%28%29%3B%0A%09drawGradientVector%28xPosition%29%3B%0A%09drawLearningStep%28xPosition%29%3B%0A%09writeTextOutput%28xPosition%29%3B%0A%7D&css=undefined&html=%3Cscript%20src%3D%22https%3A%2F%2Fapp.exorciser.ch%2Flib%2Fp5.js%22%3E%3C%2Fscript%3E&height=430px#Gradient1}}
 ++++Unsere Kommentare dazu (zum Öffnen hier klicken)| ++++Unsere Kommentare dazu (zum Öffnen hier klicken)|
 \\  \\ 
Zeile 89: Zeile 89:
  
 c. Unten in Minimum ist die Steigung $0$ und somit ist auch die Länge des blauen Pfeils $0$. c. Unten in Minimum ist die Steigung $0$ und somit ist auch die Länge des blauen Pfeils $0$.
 +
 +d. Ist der negative Gradient positiv, wird $w$ erhöht, ist der negative Gradient negativ, wird $w$ vermindert.
 ++++ ++++
 </WRAP> </WRAP>
Zeile 94: Zeile 96:
 ===== - Schrittweise dem Ziel entgegen ===== ===== - Schrittweise dem Ziel entgegen =====
  
-💡 Bisher hatten wir den Gradienten der Fehlerfunktion $J(w)$ kurz als $\nabla$ bezeichnet. Im Folgenden werden wir den Gradienten der Fehlerfunktion $J(w)$ wie sonst üblich als $\nabla J(w)$ schreiben.+💡 Bisher hatten wir den Gradienten der Fehlerfunktion $J(w)$ kurz als $\nabla$ bezeichnet. Im Folgenden werden wir den Gradienten der Fehlerfunktion $J(w)$ wie in der Literatur üblich als $\nabla J(w)$ schreiben, wobei $\nabla J(\hat{w})$ bedeutet, dass der Gradient im "Punkt" $\hat{w}$ berechnet wird.
  
   ; Gradientenverfahren II   ; Gradientenverfahren II
Zeile 102: Zeile 104:
 ++++Falls du den Beweis sehen willst, hier klicken!| ++++Falls du den Beweis sehen willst, hier klicken!|
  
-Beim Gradientenverfahren werden ausgehend von einer Initial-Gewicht-Einstellung $w[0]$ in mehreren Schritten $k$ die Gewicht-Einstellungen wie folgt geändert: $w[k+1] = w[k] -\mu \cdot \nabla J(w)$ .+Beim Gradientenverfahren werden ausgehend von einer Initial-Gewicht-Einstellung $w[0]$ in mehreren Schritten $k$ die Gewicht-Einstellungen wie folgt geändert: $w[k+1] = w[k] -\mu \cdot \nabla J(w[k])$ .
  
 **Behauptung** **Behauptung**
  
-Für das Gradientenverfahren gilt $J(w[k+1]) \le J(w[k])$ für eine hinreichend kleine Lernrate $\mu$. D.h. der Fehler wird bei jedem Schritt kleiner oder bleibt im schlimmsten Fall gleich.+Für das Gradientenverfahren gilt $J(w[k+1]) \le J(w[k])$ für eine hinreichend kleine Lernrate $\mu$. D. h. der Fehler wird bei jedem Schritt kleiner oder bleibt im schlimmsten Fall gleich.
  
 **Beweis** **Beweis**
Zeile 114: Zeile 116:
 $J(w[k+1]) \approx J(w[k]) + \nabla J(w[k])^t \cdot \Delta w$ $J(w[k+1]) \approx J(w[k]) + \nabla J(w[k])^t \cdot \Delta w$
  
-angenähert (das ist die sogenannte [[wpde>Taylorreihe|Talyor-Näherung]] 1ter Ordnung, welche für kleine Gewichtsänderungen $\Delta w$ eine gute Näherung darstellt). +angenähert (das ist die sogenannte [[wpde>Taylorreihe|Taylor-Näherung]] 1ter Ordnung, welche für kleine Gewichtsänderungen $\Delta w$ eine gute Näherung darstellt). 
  
 Mit dem Gradientenverfahren kann $\Delta w$ ausgedrückt werden durch Mit dem Gradientenverfahren kann $\Delta w$ ausgedrückt werden durch
Zeile 150: Zeile 152:
 ++++Unsere Kommentare dazu (zum Öffnen hier klicken)| ++++Unsere Kommentare dazu (zum Öffnen hier klicken)|
 \\  \\ 
-a. Das Minimum auf der rechten Seite (globales Minimum) ist tiefer als das linke (lokales Minimum). Je nach Startposition endet das Verfahren im linken oder rechten Minimum. Mehrfaches Starten erhöht die Chance, das globale Minimum zu erwischen. +a. Das Minimum auf der rechten Seite (globales Minimum) ist tiefer als das linke (lokales Minimum). Je nach Startposition endet das Verfahren im linken oder rechten Minimum. Mehrfaches Starten (von zufälligen Startpositionen aus) erhöht die Chance, das globale Minimum zu erwischen. 
  
 b. In der Nähe des Maximums ist die Steigung klein und das Gradientenverfahren kommt nur langsam voran. b. In der Nähe des Maximums ist die Steigung klein und das Gradientenverfahren kommt nur langsam voran.
Zeile 158: Zeile 160:
 d. Bei tiefen Lernraten nimmt der Fehler kontinuierlich, aber nur langsam ab. Bei grösseren Lernraten nimmt der Fehler schneller ab, jedoch besteht die Gefahr, dass der Fehler wild hin und her springt. d. Bei tiefen Lernraten nimmt der Fehler kontinuierlich, aber nur langsam ab. Bei grösseren Lernraten nimmt der Fehler schneller ab, jedoch besteht die Gefahr, dass der Fehler wild hin und her springt.
  
-e. Das Gradientenverfahren findet einigermassen effizient Minima, sofern die Lernrate vernünftig eingestellt wurde. Es sollte jedoch mehrfach gestartet werden, um die Chance ein möglichst tiefes Minimum zu finden zu erhöhen. Es kann aber weder garantiert noch überprüft werden, ob das globale (tiefste) Minimum gefunden wird.+e. Das Gradientenverfahren findet einigermassen effizient Minima, sofern die Lernrate vernünftig eingestellt wurde. Es sollte jedoch mehrfach gestartet werden, um die Chance ein möglichst tiefes Minimum zu finden zu erhöhen. Es kann aber weder garantiert noch überprüft werden, ob dabei das globale (tiefste) Minimum gefunden wurde.
 ++++ ++++
 </WRAP> </WRAP>
p/ki/machinelearning3.1783759182.txt.gz · Zuletzt geändert: (Externe Bearbeitung)