i

Gradientenabstiegsverfahren

Datensatz

Wir betrachten wieder den bereits bekannten Datensatz mit den gefährlichen und ungefährlichen Tieren, für den nun ein künstliches Neuron entwickelt werden soll:

Statt die Gewichte und den Bias des künstliches Neurons per Hand zu justieren, sollen diese nun jedoch selbständig aus den Daten gelernt werden. Als Trainingsdatensatz verwenden wir die in der Abbildung dargestellten Daten.

Beachte, dass jedes Tier in diesem Datensatz durch einen Mensche gelabelt wurde, entweder als "ungefährliches" oder als "ungefährliches" Tier.

Progagierung und Aktivierung

Zunächst formulieren wir die Propagierungsfunktion z und die Aktivierungsfunktion a unseres künstlichen Neurons: z(x1,x2)=w1x1+w2x2+ba(z)=tanh(z)

Kostenfunktion

Um mit numerischen Daten arbeiten zu können, führen wir noch die so genannte Targetfunktion t(x1,x2) eines Tieres ein: t(x1,x2)={+1gefährlich1ungefährlich MIt Hilfe dieser Targetfunktion definieren wir nun noch die so genannte Kostenfunktion Cx eines einzelnen Datenpunktes x als: Cx=12(txax)2 Mit dem Index x soll hier angedeutet werden, dass die Kostenfunktion für ein einzelnes Tier x formuliert wurde. Die Kostenfunktion Cx wird also genau dann Null, wenn das künstliche Neuron an seinem Ausgang die korrekte Aktivierung a liefert.

Beachte aber, dass die Kostenfunktion hierbei von den (momentan noch unbekannten) Gewichten und dem Bias abhängt, dass also gilt: Cx=Cx(w1,w2,b)

Die Gesamtkostenfunktion Cges erhalten wir als Summe der einzelnen Kostenfunktionen: Cges=xCx=x12(txax)2 Unser Ziel wird im Folgenden sein, die Gewichte w1,w2 und den Bias b des künstlichen Neurons so zu bestimmen, dass sich im Idealfall Cges=0 ergibt, so dass dann also alle Tiere des Trainingsdatensatzes korrekt erkannt werden.

Beachte, dass es bei nicht separierbaren Daten nicht gelingen würde, die Kostenfunktion Cges komplett zum Verschwinden zu bringen. Trotzdem erkennt das künstliche Neuron viele Tiere (aber aber eben alle) korrekt, wenn es nur gelingt, den Wert der Kostenfunktion Cges möglichst klein zu machen.

Partielle Ableitungen

Wir betrachten nun die Kostenfunktion Cx=Cx(w1,w2,b) als Funktion der beiden Gewichte w1,w2 und des Bias b.

Zunächst berechnen wir, wie sich Cx mit Veränderung von w1 ändert, wenn die beiden anderen Veränderlichen w2 und b konstant gehalten werden. Man spricht in diesem Fall von der so genannten partiellen Ableitung Cw1 von Cx nach w1, die man durch mehrfache Anwendung der Kettenregel erhält als:

Cxw1=212(ta)(1)aw1=(ta)(1tanh2(z))zw1=(ta)(1tanh2(z))x1=(ta)(1a2)x1 Analog erhält man die anderen partiellen Ableitungen: Cxw1=(ta)(1a2)x1Cxw2=(ta)(1a2)x2Cxb=(ta)(1a2)

Gradientenabstieg

Die partielle Ableitung Cxw1 gibt an, wie stark die Kostenfunktion Cx mit einer Änderung von w1 anwächst. Also erhält man die Richtung des steilsten Abstiegs als negative partielle Ableitung: w1neu:=w1altCxw1w2neu:=w2altCxw2bneu:=baltCxb

Iterationsvorschrift

Daraus erhält man als Iterationsvorschrift zum Updaten der Gewichte w1,w2 und des Bias' b in jedem Lernschritt: w1neu:=w1alt+(ta)(1a2)x1w2neu:=w2alt+(ta)(1a2)x2bneu:=balt+(ta)(1a2)

Werden die Gewichte w1,w2 und der Bias b nach dieser Iterationsvorschrift nacheinander für alle Tiere x abgeändert, so erhält man schrittweise eine Verringerung der Gesamtklostenfunktion C, was wiederum bedeutet, dass das künstliche Neuron immer besser lernt, Tiere nach den Kategorien "ungefährlich" bzw. "gefährlich" zu klassifizieren.

Bezeichnung Gradientenabstiegsverfahren

Man bezeichnet den Vektor xCx=(Cw1,Cw2,Cb)T als so genannten Gradienten der Funktion Cx. Der Gradient gibt bei einer mehrdimensionalen Funktion die Richtung des steilsten Anstiegs an. Daher kommt die Bezeichnung des gerade beschriebenen Verfahrens als so genanntes Gradientenabstiegsverfahren.

Wer mehr über den Begriff des Gradienten erfahren möchte kann sich die Video über multivariable Calculusvon Grant Sanderson (von 3Blue1Brown) anschauen, die er für die Khan Academdygemacht hat. Achtung: Diese drei Links sind ein ganz schön großes Mathematik-Rabbit-Hole.

Also am besten Bookmarks für die drei Links setzten und diese mal in Ruhe anschauen, denn jetzt geht es hier im nächsten Unterkapitel erst einmal weiter zu einem Jupyter-Notebook mit der Umsetzung des Gradientenabstiegverfahrens in Python.

Suche

5.3.5.8
schuljahr.inf-schule.de/2024-25/ki/maschinelles_lernen_mit_python/deep_learning/gradientenabstieg
schuljahr.inf-schule.de/2024-25/5.3.5.8
schuljahr.inf-schule.de/2024-25/@/page/FBHaLNyX2qW1Axtq

Rückmeldung geben