Navigation: đ€ Teil 1 - đ€ Teil 2 - đ€ Teil 3 - đ€ Teil 4Loading âLoading â
đ€ Wie funktioniert maschinelles Lernen 3
đŻ In dieser Reihe erfĂ€hrst du, wie ein Computer mithilfe von Daten lernen kann.
Inhaltsverzeichnis
1. Der Sache auf den Grund gehen
Abb.1: Fehlerfunktion1).
In den Teilen 1 und 2 hast du gelernt, dass mit Machine Learning Probleme gelöst werden können, welche nÀherungsweise durch eine Stellvertreter-Funktion $f_{ML}(x)$ mit mehreren Gewichten $w$ und deren Lösung nÀherungsweise durch das Minimieren einer Fehlerfunktion $J(w)$ beschrieben werden können.
Das Ziel besteht nun darin, mithilfe von einem Datensatz (endlich vielen Datenpunkten) die Gewicht-Einstellung $w*$, fĂŒr welche $e_{min}=J(w^*)$ gilt, möglichst gut anzunĂ€hern. Im Teil 2 hattest du dazu drei Strategien kennengelernt. In diesem dritten Teil geht es darum, eine dieser Strategien, die iterativen Verfahren, besser kennenzulernen. Konkret wirst du das sogenannte âGradientenverfahrenâ etwas genauer unter die Lupe zu nehmen. Das Gradientenverfahren ist das gebrĂ€uchlichste Verfahren zum Trainieren von neuronalen Netzen.
Im folgenden Auftrag wirst du den wichtigen Begriff âSteigungâ einer Funktion kennenlernen und selbst herausfinden, wie damit das Minimum einer Funktion gefunden werden kann.
â Auftrag Steigung ergrĂŒnden
đ Hier ergrĂŒndest du den Begriff der âSteigungâ und wie damit das Minimum einer Funktion gefunden werden kann.
Finde als Erstes heraus, was mit dem Begriff âSteigungâ gemeint ist, indem du mit der Maus auf der im Programm gezeigten Funktion hin und her fĂ€hrst.
Jetzt die ErklÀrung in Worten dazu.
Jedem Punkt auf der roten gezeichneten Funktion kann eine Steigung zugeordnet werden.
Die Steigung ist als blaue Gerade durch diesen Punkt eingezeichnet, welche die Funktion in diesem Punkt berĂŒhrt.
Der Wert der Steigung beschreibt, wie steil die Gerade ist.
Wenn die Gerade nach rechts unten â geht, dann ist das Vorzeichen der Steigung negativ, wenn die Gerade nach rechts oben â geht, dann ist das Vorzeichen positiv.
Wie gross ist die Steigung beim Minimum (beim tiefsten Punkt) der Funktion? Loading â
Ăberlege dir, wie du mithilfe der Steigung das Minimum z.B. einer Fehlerfunktion finden kannst. Lese danach direkt nach diesem Auftrag weiter (dort findest du eine Antwort auf diese Frage).
đ Das Minimum mithilfe der Steigung finden
đĄ Grob gesagt, bei einer Funktion, die so aussieht: á , ist die Steigung unten beim Minimum gleich 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.
đ Das Minimum direkt mit der Steigung berechnen oder doch nicht?
In der Mathematik gibt es ein Hilfsmittel, mit welchem die Steigung in einem Punkt einer Funktion gefunden werden kann. Dieses Hilfsmittel wird âDifferenzialrechnungâ oder kurz âAbleitenâ genannt. Die damit berechnete Steigung wird als âAbleitungâ bezeichnet. Bei einer Funktion der Form á (mit einem eindeutigen Minimum) ist das Finden dieses Minimums gleichbedeutend mit dem Lösen der Gleichung: Ableitung gleich null.
Die Ableitung fĂŒr einen gegebenen Punkt auf einer Funktion lĂ€sst sich meist mit einem vertretbaren Aufwand berechnen. Das Umgekehrte, aus der Gleichung âAbleitung gleich nullâ den zugehörigen Punkt auf der Funktion zu berechnen, ist fĂŒr die gebrĂ€uchlichen Machine-Learning-Verfahren jedoch sehr aufwĂ€ndig. Daher wird bei den iterativen Verfahren diese Lösung nicht direkt berechnet, sondern schrittweise angenĂ€hert.
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.
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.
2. Wo geht es nach unten?
Abb.2: (Negativer) Gradient2).
â ïž 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).
- 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.
- đĄ 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).
- Gradientenverfahren I
- Grundidee: Um auf der Fehlerfunktion ânach untenâ zu gelangen, werden die Gewichte $w$ in Richtung negativer Gradient $-\nabla$ verschoben. Damit dabei kontrolliert werden kann, wie weit verschoben wird, wird der negative Gradient mit einer Zahl multipliziert, der sogenannten Lernrate $\mu$. Somit wird jeweils um $- \mu \cdot \nabla$ verschoben.
â Auftrag Gradientenverfahren I
đ 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.
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
In welche Richtung zeigt der blaue Pfeil jeweils?
Wie verÀndert sich die LÀnge des blauen Pfeils?
Wie gross ist der Pfeil ganz unten beim Minimum?
Vergleiche danach deine Einsichten mit unseren Kommentaren am Ende dieses Auftrags.
Loading â
Unsere Kommentare dazu (zum Ăffnen hier klicken)
a. Der blaue Pfeil zeigt immer in Richtung Minimum. Bei sehr grossen Lernraten kann der Pfeil durchaus ĂŒber das Ziel hinaus schiessen.
b. Je steiler die Kurve ist, desto lÀnger ist der blaue Pfeil. Je grösser die Lernrate ist, desto lÀnger wird der blaue Pfeil.
c. Unten in Minimum ist die Steigung $0$ und somit ist auch die LĂ€nge des blauen Pfeils $0$.
3. 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.
- Gradientenverfahren II
- Beim Gradientenverfahren wird die erste Gewicht-Einstellung $w[0]$ zufĂ€llig gewĂŒrfelt. Im ersten Lernschritt wird die neue Gewicht-Einstellung mit $w[1] = w[0] -\mu \cdot \nabla J(w[0])$ berechnet. Im zweiten Lernschritt mit $w[2] = w[1] -\mu \cdot \nabla J(w[1])$, danach $w[3] = w[2] -\mu \cdot \nabla J(w[2])$ usw. Allgemein ausgedrĂŒckt, eine neue Gewicht-Einstellung $w[k+1]$ wird aus der alten Gewicht-Einstellung $w[k]$ berechnet durch:
$w[k+1] = w[k] -\mu \cdot \nabla J(w[k])\quad$ (Gradientenverfahren),
wobei $k$ die Lernschritte durchnummeriert.
- Dass dieses Verfahren funktioniert, lĂ€sst sich mathematisch beweisen. Es kann gezeigt werden, dass fĂŒr eine genĂŒgend kleine Lernrate $\mu$ fĂŒr jede Epoche folgendes gilt:
$J(w[k+1]) \le J(w[k])$
D.h. der Fehler $J(w[k])$ wird mit fortschreitenden $k$ entweder kleiner oder bleibt im schlimmsten Fall gleich. FĂŒr grosse Lernraten $\mu$ gilt $J(w[k+1]) \le J(w[k])$ jedoch nicht zwingend und es kann sein, dass beim Training der Fehler wild hin und her springt.
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)$ .
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.
Beweis
In $J(w[k+1]) \le J(w[k])$ wird $J(w[k+1])$ durch
$J(w[k+1]) \approx J(w[k]) + \nabla J(w[k])^t \cdot \Delta w$
angenĂ€hert (das ist die sogenannte Talyor-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
$\Delta w = w[k+1] - w[k] = - \mu \cdot \nabla J(w[k])$
Alles eingesetzt ergibt sich
$J(w[k+1]) \approx J(w[k]) + \nabla J(w[k])^t \cdot \Delta w$
$= J(w[k]) - \mu \cdot \nabla J(w[k])^t \cdot \nabla J(w[k])$
$= J(w[k]) - \mu \cdot ||\nabla J(w[k])||^2 \le J(w[k])$
Da der Ausdruck $||\nabla J(w[k])||^2$ beschreibt ein âQuadratâ und somit ist $||\nabla J(w[k])||^2 \ge 0$ . Daraus folgt, dass $J(w[k+1]) \le J(w[k])$ fĂŒr hinreichend kleine $\mu$ beim Gradientenverfahren erfĂŒllt ist.
â Auftrag Gradientenverfahren
đ Hier untersuchst du, wie das Gradientenverfahren bei komplexeren Fehlerfunktionen funktioniert.
â ïž Beim Gradientenverfahren wird die Start-Gewicht-Einstellung $w[0]$ zufĂ€llig gewĂŒrfelt. In diesem Programm kannst du $w[0]$ durch Verschieben mit der Maus wĂ€hlen.
Starte das Gradientenverfahren, indem du eine Start-Gewicht-Einstellung $w[0]$ wĂ€hlst und auf die Maustaste klickst. Es werden fĂŒnf Schritte des Gradientenverfahrens durchgefĂŒhrt.
đĄ Mit einem Klick auf den Button â¶Run
kannst du das Programm neu starten.
WÀhle verschiedene Start-Gewicht-Einstellung $w[0]$ und verÀndere die Lernrate $\mu$ mit dem Schieber. Beantworte die folgenden Fragen im untenstehenden Textfeld
Warum ist es sinnvoll, das Gradientenverfahren mehrfach von verschiedenen, zufÀlligen Start-Gewicht-Einstellung $w[0]$ aus zu starten?
Was passiert, wenn du mit einer Start-Gewicht-Einstellung $w[0]$ nahe dem âZwischenmaximumâ ááá in der Mitte startest?
Was wĂŒrde passieren, wenn du exakt auf dem âZwischenmaximumâ ááá in der Mitte starten wĂŒrdest?
Wie wirken sich kleine und grosse Lernraten aus?
Beurteile, wie gut das Gradientenverfahren funktioniert.
Vergleiche danach deine Einsichten mit unseren Kommentaren unten am Programmierfenster.
Loading â
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.
b. In der NĂ€he des Maximums ist die Steigung klein und das Gradientenverfahren kommt nur langsam voran.
c. Beim Maximum ist die Steigung $0$ und somit wĂŒrde das Gradientenverfahren dort stecken bleiben.
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.
4. Fortsetzung folgt...
Du kennst die Funktionsweise des Gradientenverfahrens und hast bereits Erfahrung im Umgang damit gesammelt. Im đ€ Teil 4 erfĂ€hrst du, wie genau ein neuronales Netz aufgebaut ist und wie mit dem Gradientenverfahren der Fehler eines neuronalen Netzes schrittweise minimiert werden kann.
Eigene Notizen