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.

  1. 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.
  2. 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.
  3. Wie gross ist die Steigung beim Minimum (beim kleinsten Wert) der Funktion? Loading ⌛
  4. Ü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!


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.

  1. 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
    1. In welche Richtung zeigt der blaue Pfeil jeweils?
    2. Wie verÀndert sich die LÀnge des blauen Pfeils?
    3. Wie gross ist der Pfeil ganz unten beim Minimum?
  2. Vergleiche danach deine Einsichten mit unseren Kommentaren am Ende dieses Auftrags.

Loading ⌛

Unsere Kommentare dazu (zum Öffnen hier klicken)


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!


✍ Auftrag Gradientenverfahren

👉 Hier untersuchst du, wie das Gradientenverfahren bei komplexeren Fehlerfunktionen funktioniert.

⚠ Beim Gradientenverfahren wird d ie Start-Gewicht-Einstellung $w[0]$ zufĂ€llig gewĂŒrfelt. In diesem Programm kannst du $w[0]$ durch Verschieben mit der Maus wĂ€hlen.

  1. 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.
  2. WÀhle verschiedene Start-Gewicht-Einstellung $w[0]$ und verÀndere die Lernrate $\mu$ mit dem Schieber. Beantworte die folgenden Fragen im untenstehenden Textfeld
    1. Warum ist es sinnvoll, das Gradientenverfahren mehrfach von verschiedenen, zufÀlligen Start-Gewicht-Einstellung $w[0]$ aus zu starten?
    2. Was passiert, wenn du mit einer Start-Gewicht-Einstellung $w[0]$ nahe dem „Zwischenmaximum“ ᑌᑎᑌ in der Mitte startest?
    3. Was wĂŒrde passieren, wenn du exakt auf dem „Zwischenmaximum“ ᑌᑎᑌ in der Mitte starten wĂŒrdest?
    4. Wie wirken sich kleine und grosse Lernraten aus?
    5. Beurteile, wie gut das Gradientenverfahren funktioniert.
  3. Vergleiche danach deine Einsichten mit unseren Kommentaren unten am Programmierfenster.

Loading ⌛

Unsere Kommentare dazu (zum Öffnen hier klicken)


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

Loading ⌛

1) , 2)
eigene Darstellung, CC0 1.0