| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
| p:ki:machinelearning3 [2026/07/11 10:39] – [👉 Das Minimum direkt mit der Steigung berechnen oder doch nicht?] Ralf Kretzschmar | p:ki:machinelearning3 [2026/08/25 15:15] (aktuell) – [2. Wo geht es nach unten?] Ralf Kretzschmar |
|---|
| ⚠️ 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. |
| |
| \\ | \\ |
| |
| ++++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.++++ | |
| |
| \\ | \\ |
| \\ 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). |
| |
| 👉 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 |
| - 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)| |
| \\ | \\ |
| |
| 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> |
| ===== - 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 |
| ++++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** |
| $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 |
| ++++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. |
| 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> |