Gradient Descent – Ein numerisches, iteratives Verfahren zur Lösung eines Minimierungsproblems

()

Das Gradient Descent Verfahren ist ein numerisches, iteratives Verfahren, um das lokale Minimum (oder Maximum) einer differenzierbaren Funktion zu finden. Die Idee hinter dem Verfahren ist, wiederholte Schritte in die entgegengesetzte Richtung des Gradienten (oder des approximierten Gradienten) der Funktion am aktuell betrachteten Punkt zu machen. Somit nähert man sich, bei korrekt gewählter Schrittweite, automatisch der Lösung an.

In diesem Artikel erkläre ich, wie das Verfahren für eine und mehrere Variablen funktioniert, wie sich die gewählte Lernrate auf das Verfahren auswirkt und welche Bedingungen, die betrachtete Funktion erfüllen sollte. Das Gradient Descent Verfahren wird zwar häufig im Bereich des Machine Learning eingesetzt, ist jedoch nicht auf diesen beschränkt, sondern findet in vielen Bereichen Anwendung, in der das Minimum einer (differenzierbaren) Funktion gefunden werden muss.

Diesen und andere Beiträge von mir kannst du als sauber formatierte PDF-Datei zum Ausdrucken oder offline Lesen erwerben. Mehr Informationen dazu findest du hier.

Zu diesem Artikel findest du auch ein Video von mir auf YouTube.

Nötige Vorkenntnisse

  • Grundlegende mathematische Kenntnisse von Funktionen und deren Ableitungen
  • Grundkenntnisse in linearer Algebra

Gradient Descent – Ein numerisches, iteratives Verfahren

Ich will an dieser Stelle erst einmal erklären, was die beiden Begriffe numerisch und iterativ überhaupt bedeuten.

Numerik

Unter dem Begriff Numerik versteht man in der Mathematik die Konstruktion und Analyse von Algorithmen für kontinuierliche mathematische Probleme. Damit sind zumeist Approximationsalgorithmen gemeint, die die Lösung eines Problems näherungsweise bestimmen. Beispielhaft schauen wir uns dazu einmal die Funktion $f(x)$ in der unteren Abbildung links an, dessen Integral wir zwischen den Grenzen $a$ und $b$ berechnen wollen.

Ein numerisches Verfahren zur Berechnung dieses Integrals ist das Riemannsche Integral. Beim Riemannschen Integral werden Rechtecke, deren Flächeninhalt leicht zu berechnen ist, zur Approximation der zu berechnenden Fläche eingesetzt. Dies ist auf der rechten Seite der Abbildung mittels der sogenannten Linkssumme einmal dargestellt. Das Integral der Funktion wird näherungsweise durch die Summe der Flächeninhalte von Rechtecken approximiert:

$\int\limits_a^b f(x) dx \approx \sum $ Rechteckflächen

Man kann das Ganze auch so schreiben, mit einem zusätzlichen Fehlerterm $E$ der von der Funktion $f$ abhängig ist:

$\int\limits_a^b f(x) dx = \sum $ Rechteckflächen $+ E(f)$

Verwendet man eine größere Anzahl an Rechtecken, so lässt sich der Fehler $E(f)$ in der Berechnung des Integrals verringern. Genau wie das Riemannsche Integral ist das Gradient Descent Verfahren ein numerisches Approximationsverfahren, welches die Lösung des Problems approximiert, aber in der Regel nicht exakt löst.

Iterative Verfahren

Ein iteratives Verfahren führt die gleichen Schritte immer und immer wieder aus, um sich so der gesuchten Lösung eines Problems anzunähern. Man startet beispielhaft bei einem Wert $x_0$ und führt immer wieder die Funktion $g(x)$ aus, um sich so schrittweise der Lösung $x_{opt}$ anzunähern. Dieses Vorgehen ist einmal in der unteren Abbildung illustriert.

Der Input der Funktion $g(x)$ ist dabei immer der zuvor berechnete $x$-Wert. Ein iteratives Verfahren kann eine feste Anzahl an Schritten haben, hier beispielsweise $n$ Schritte bis $x_n$ oder das Verfahren kann so lange durchgeführt werden, bis die Änderung in der Variable $x$ pro durchgeführten Schritt nur noch unter einem bestimmten Schwellenwert $\epsilon$ liegt:

$|x_{i+1}-x_i| < \epsilon$

Wird der Schwellenwert $\epsilon$ unterschritten, so geht man davon aus, dass man sich sehr nahe an der gesuchten Lösung $x_{opt}$ befindet und beendet das Verfahren. Gradient Descent ist ein ebensolches iteratives Verfahren, bei dem man immer wieder dieselben Schritte durchführt, um möglichst nah an die gesuchte Lösung zu gelangen. Wie genau das funktioniert, dazu komme ich jetzt.

Das Gradient Descent Verfahren

Die Formel

Betrachten wir einmal eine Kostenfunktion $J(\theta_1)$, die lediglich vom Parameter $\theta_1$ abhängt. Zur Erinnerung aus meinem letzten Artikel, das Ziel ist es, mit Gradient Descent das Minimum einer Kostenfunktion zu berechnen. Wie bei jedem iterativen Verfahren benötigt man auch beim Gradient Descent Verfahren einen Startwert. Dieser ist in der folgenden Abbildung durch einen roten Punkt dargestellt.

Der Startwert wird mit $\theta_{1,0}$ bezeichnet, wobei die 0 für den Wert steht, an der die Iteration startet und bei jeder Iteration hochgezählt wird. Um uns nun der Lösung anzunähern, müssen wir uns in Richtung des Minimums, also nach rechts, bewegen, wie durch den gelben Pfeil in der oberen Abbildung dargestellt. Oder anders gesagt, im nächsten Iterationsschritt sollte der neue Wert $\theta_{1,1}$ größer sein als $\theta_{1,0}$:

$ \theta_{1,1} > \theta_{1,0} $

Zur Anwendung des Gradient Descent Verfahrens berechnet man zunächst die Ableitung der Kostenfunktion nach $\theta_1$ an der Stelle $\theta_{1,0}$, in der unteren Abbildung grafisch dargestellt durch die grüne Steigungstangente.

Mit diesem Wert kann ein Iterationsschritt des Gradient Descent Verfahrens durchgeführt und $\theta_{1,1}$ bestimmt werden:

$\theta_{1,1} = \theta_{1,0}-\alpha \frac{\partial J}{\partial \theta_{1}} (\theta_{1,0}) $

Dazu wird vom vorigen Wert $\theta_{1,0}$ der eben bestimmte Gradient abgezogen, welcher zuvor mit dem skalaren Parameter $\alpha$ multipliziert wird. $\alpha$ ist ein Wert echt größer 0, der die Lernrate des Verfahrens widerspiegelt. Ich komme später noch einmal darauf zurück, wie sich die Lernrate auf das Verfahren auswirkt. Der Gradient von $J$ an der Stelle $\theta_{1,0}$ ist kleiner 0, also $\frac{\partial J}{\partial \theta_{1}} (\theta_{1,0}) < 0$, wie man leicht durch die grüne Steigungstangente erkennen kann. Nimmt man das Minus aus der Gleichung sowie den Parameter $\alpha$ mit hinzu, ergibt sich ein Wert, der größer als 0 ist:

$-\alpha \frac{\partial J}{\partial \theta_{1}} (\theta_{1,0}) > 0 $

Somit ist $\theta_{1,1}$ größer als $\theta_{1,0}$ und man bewegt sich automatisch in Richtung des Minimums:

$\theta_{1,1} > \theta_{1,0}$

Betrachten wir nun einmal einen Startwert $\theta_{1,0}’$, der sich nicht links, sondern rechts vom Minimum der Funktion $J$ befindet:

Entsprechend müssen wir uns nach links bewegen oder anders gesagt der Wert von $\theta_{1,1}’$ sollte kleiner als der Wert von $\theta_{1,0}’$ sein. Wir bestimmen erneut den Gradienten von $J$ an dieser Stelle und nutzen die gleiche Formel wie zuvor. Dieses Mal ist der Gradient von $J$ jedoch positiv und somit die rechte Seite unserer Gleichung negativ:

$~~~~~~~~~~~\frac{\partial J}{\partial \theta_{1}} (\theta_{1,0}’$$) > 0 $
$\Rightarrow -\alpha \frac{\partial J}{\partial \theta_{1}} (\theta_{1,0}’$$) < 0 $

Damit ist $\theta_{1,1}’$ kleiner als $\theta_{1,0}’$ und wir bewegen uns in Richtung des Minimums:

$\theta’_{1,1} < \theta’_{1,0}$

Egal, ob wir uns links oder rechts des Minimus befinden, das hier gezeigte Gradient Descent Verfahren iteriert in die Richtung des Minimums.

Mehrere Iterationen

Schauen wir uns jetzt einmal den allgemeinen Fall mit mehreren Iterationen an. Der neue Wert für $\theta_{1, i+1}$ wird durch die folgende Formel ermittelt:

$\theta_{1,i+1} = \theta_{1,i}-\alpha \frac{\partial J}{\partial \theta_{1}} (\theta_{1,i}) $

Die Variable $i$ gibt dabei die Anzahl der Iterationsschritte an. Für den nächsten Schritt muss also immer der Gradient am aktuellen Punkt $\theta_{1,i}$ bestimmt werden. Das Verfahren nähert sich mit jedem Schritt ein klein wenig mehr der korrekten Lösung an.

Gradient Descent

Dabei werden die Schritte, die das Gradient Descent Verfahren durchführt, wie in der oberen Abbildung zu sehen, ganz automatisch kleiner. Das liegt daran, dass auch der Gradient immer kleiner wird, je mehr man sich der Lösung annähert:

$| \frac{\partial J}{\partial \theta_{1}} (\theta_{1,0}) | \geq |\frac{\partial J}{\partial \theta_{1}} (\theta_{1,1})| \geq |\frac{\partial J}{\partial \theta_{1}} (\theta_{1,2})| \geq |\frac{\partial J}{\partial \theta_{1}} (\theta_{1,3})| ~ \cdots$

Die Lernrate

Betrachten wir nun einmal die Lernrate $\alpha$ etwas genauer. Ist die Lernrate $\alpha$ zu klein, so ändert sich der neue Wert von $\theta_{1}$ immer nur geringfügig und das Gradient Descent Verfahren konvergiert nur sehr langsam. Das heißt, es sind sehr viele Schritte nötig, um das Minimum zu finden:

Allerdings ist auch ein zu großer Wert für $\alpha$ an dieser Stelle nicht zielführend, denn dann überspringt die Berechnung von $\theta_{1}$ das Minimum und so geht es dann immer weiter Hin und Her. Das ist an sich noch nicht so problematisch, da auch so das Minimum gefunden wird, es könnte allerdings etwas länger als nötig dauern.

Ist die Lernrate jedoch deutlich zu groß, kann es sein, dass man sich immer weiter vom Minimum entfernt. Dann divergiert das Verfahren und die Lösung wird so nie erreicht.

Man muss bei der Wahl der Lernrate also etwas aufpassen und eventuell auch ein klein wenig experimentieren, um einen guten Wert für das vorliegende Problem zu finden. Ausgeklügelte Implementationen des Gradient Descent Verfahrens nutzen adaptive Schrittweiten, um solche Probleme zu umgehen und die Lösung nach möglichst wenig Iterationen zu finden.

Multiple Features

Betrachten wir nun einmal den Fall, dass wir eine Funktion mit nicht nur einer, sondern mehrerer Variablen bzw. Features $x_i$ betrachten wollen. Im Fall der linearen Regression kann die Funktion kompakt in Vektorschreibweise $f(\bar{x}) = \theta^T \bar{x}$ geschrieben werden. In der Langform kann die Funktion für $n$ Features wie folgt ausgeschrieben werden:

$f(\bar{x}) = \theta^T \bar{x} = \theta_0 x_0 + \theta_1 x_1 + \ldots \theta_n x_n$

$x_0$ ist dabei gleich $1.0$ und so gesehen kein Feature, wie ich bereits im Artikel zur linearen Regression erläutert habe. Das Gradient Descent Verfahren unterscheidet sich grundlegend nicht vom eindimensionalen Fall. Die Berechnung wird einfach für jedes $\theta_j$ einzeln durchgeführt. Der Index $j$ ist dabei der Index, der für $\theta_0$ bis $\theta_n$ aus der obigen Funktion $f(\bar{x})$ steht. Der Index $i$ steht, wie eben bereits gesehen, für den $i$-ten Iterationsschritt, womit das Verfahren wie folgt geschrieben werden kann:

$\theta_{j,i+1} = \theta_{j,i}-\alpha \frac{\partial J}{\partial \theta_j} (\bar{\theta}_i)$

Bei der Implementierung des Verfahrens muss man an dieser Stelle einen wichtigen Punkt beachten. Häufig ist man dazu geneigt, den Wert für $\theta_j$ in jedem Iterationsschritt $i$ zu überschreiben. Beispielhaft kann es sein, dass man die Variable $\theta_{0, i}$ mit dem Wert für den nächsten Iterationsschritt $\theta_{0, i+1}$ überschreibt, um Speicher zu sparen. Nun bedingt jedoch eine Änderung des Wertes für $\theta_{0, i}$, dass sich auch die Kostenfunktion $J$, sowie die Auswertung der zugehörigen Ableitung $\frac{\partial J}{\partial \theta_j} (\bar{\theta}_i)$ ändern. So würde man dann andere Ergebnisse für die weiteren $\theta$-Werte erhalten und damit würde das Verfahren nicht mehr korrekt funktionieren.

Im Übrigen kann das Gradient Descent Verfahren auch kompakter in Vektorform geschrieben werden

$\bar{\theta}_{i+1} = \bar{\theta}_{i}-\alpha \nabla J(\bar{\theta}_i)$

wobei das umgedrehte Dreieck $\nabla$, auch bekannt als Nabla-Operator, in Verbindung mit der Kostenfunktion $J(\bar{\theta}_i)$ für den Gradienten von $J(\bar{\theta}_i)$ nach $\bar{\theta}_i$ steht:

$\nabla J(\bar{\theta}_i) = \begin{bmatrix} \frac{\partial J}{\partial \theta_0} \\ \frac{\partial J}{\partial \theta_1} \\ \vdots \\ \frac{\partial J}{\partial \theta_n} \end{bmatrix}$

Feature Scaling

Wenn man mit mehreren Features arbeitet, ist das Feature Scaling bei Verwendung des Gradient Descent Verfahrens essenziell. Im zweiten Artikel dieser Reihe hatte ich diesen Punkt unter dem Begriff Normalisierung bereits erwähnt. Ziel des Feature Scaling ist es, die Werte aller Features auf eine Skala zu bringen.  Betrachten wir dazu einmal einen Vektor $x$ mit $n$ Features, sowie dem Wert $x_0=1.0$.

$\bar{x} = \begin{bmatrix} 1.0 \\ x_1 \\ \vdots \\ x_n \end{bmatrix}$

Gehen wir nun einmal davon aus, dass sich die Werte für das Feature $x_1$ nur im Intervall zwischen -0.01 und 0.01 befinden. Im Gegensatz dazu bewegen sich die Werte für das Feature $x_n$ im Bereich von 0 bis 1000.

$ \begin{align} -0.01 \leq ~&x_1 \leq 0.01 \\ 0 \leq ~&x_n \leq 1000 \end{align}$

Diese starke Diskrepanz führt zu einer stark verzerrten Kostenfunktion wie in der unteren Abbildung links dargestellt, wobei die anderen Features $x_2$ bis $x_{n-1}$ einmal außer Acht gelassen wurden.

Betrachtet man diese Funktion als Konturplot, wie auf der rechten Seite dargestellt, so ergeben sich elliptische Kreise. Der blaue Punkt in der Mitte stellt hier das Minimum dar und alle Punkte, die auf der gleichen Ellipse liegen, haben den gleichen Funktionswert. Es ist gewissermaßen eine Draufsicht der linken Darstellung der Kostenfunktion.  An dieser Stelle muss man sich noch eine deutlich verzerrte Version vorstellen als die hier dargestellte, denn die beiden Features $x_1$ und $x_n$ trennen etwa fünf Größenordnungen.

Nutzt man nun das Gradient Descent Verfahren zur Bestimmung des Minimums dieser Funktion, tritt das folgende Phänomen auf. Nehmen wir einmal an, wir haben als Startwert den roten Punkt in der oberen Abbildung links gegeben. Für jeden Schritt im Gradient Descent Verfahren wird auf der rechten Abbildung oben ein neuer Punkt eingefügt. Das Verfahren beginnt in Richtung des Minimums (blauer Punkt) hin- und her zu oszillieren, weil sich die Gradienten in beiden Achsenrichtungen so stark unterscheiden. Eine leichte Änderung von $\theta_n$ hat bereits riesige Auswirkungen auf die Kostenfunktion $J$, da die Werte der Features $x_n$ so groß sind. Das Gegenteil ist bei $\theta_1$ der Fall, bei dem sich eine Änderung deutlich weniger stark auswirkt.

Deutlich besser ist es, eine Kostenfunktion zu verwenden, in der die Gradienten sehr ähnlich sind, also der Konturplot Kreise oder zumindest Ellipsen bildet, die Kreisen sehr ähnlich sind. Im dreidimensionalen Fall sähe das Ganze dann in etwa so aus. 

Solche eine Kostenfunktion kann man dadurch erhalten, dass alle Features auf einen Wert im Intervall $[-1,1]$ gebracht werden. Theoretisch sind an dieser Stelle aber auch andere Intervallgrenzen möglich, wichtig ist lediglich, dass sich alle Werte innerhalb des gleichen Intervalls befinden. Dann iteriert das Gradient Descent Verfahren deutlich schneller in Richtung des Minimums der Funktion.

Eine Möglichkeit zur Berechnung der neuen Feature-Werte ist Mean Normalization. Die Idee dahinter ist das Feature $x_i$ mit dem Feature $x_i’$ zu ersetzen, sodass $x_i’$ einen Mittelwert von 0 hat. Die entsprechende Formel dafür sieht wie folgt aus:

$x’_i = \frac{x_i – \mu_i}{max(x_i) – min(x_i)}, ~~\forall ~ i \in \{1, \ldots ,n\}$

Dabei steht $\mu_i$ für den Mittelwert von $x_i$, $max(x_i)$ und $min(x_i)$ für den maximalen respektive minimalen Wert aller vorhandenen Features im Vektor $\bar{x}$. Statt der obigen Formel kann auch die folgende Formel verwendet werden:

$x’_i = \frac{x_i – \mu_i}{\sigma_i}, ~~\forall ~ i \in \{1, \ldots ,n\}$

Dabei steht $\sigma_i$ für die Standardabweichung von $x_i$. Das Verfahren hinter dieser Formel wird auch als Standardization bezeichnet. In diesem Artikel bleibe ich jedoch bei der ersten Formel und betrachte jetzt einmal das Beispiel von eben mit den kleinen Werten von Feature $x_1$. Nehmen wir nun einfach einmal ein paar Beispielwerte für $x_1$ an und führen die Berechnung nach der obigen Formel aus. Die Ergebnisse stelle ich in der folgenden Tabelle dar.

$x_1$0.0030.007-0.0090.0050.0040.001
$x'_1$0.1770.4270.5730.302-0.260-0.073

Wie man sehen kann, bleiben alle Werte für $x’_1$ im Intervall $[-1, 1]$. Genaugenommen waren Sie das natürlich vorher schon, aber etwas salopp gesagt füllen Sie das Intervall jetzt deutlich besser aus. Betrachten wir äquivalent dazu das Feature $x_n$ mit ein paar Beispielwerten.

$x_n$100800250500777550
$x'_n$0.5660.434-0.3520.0050.4010.077

Auch hier liegen die Werte nach der Anwendung der obigen Formel im Intervall $[-1, 1]$ und damit augenscheinlich auf der gleichen Skala, wie die Werte von $x’_1$. Führt man diese Berechnung für alle $n$ Features aus, so erhält man eine Kostenfunktion, die das Gradient Descent Verfahren deutlich besser verwenden kann.

Grenzen des Gradient Descent Verfahrens

Gegen Ende dieses Artikels komme ich zu einer relativ großen Einschränkung bei Verwendung des Gradient Descent Verfahrens. Betrachten wir dazu einmal eine eindimensionale Kostenfunktion $J(\theta_1)$ mit einem lokalen und einem globalen Optimum.

Liegt der Startwert $\theta_{1, 0}$ an der gezeigten Stelle, so wird sich das Gradient Descent Verfahren, aufgrund der Richtung des Gradienten an dieser Stelle, nach rechts in Richtung des lokalen Optimums bewegen. Letztlich wird das Verfahren, sofern die Schrittweite $\alpha$ korrekt eingestellt ist, ins lokale Optimum konvergieren. Allgemein lässt sich sagen, dass alle Startwerten, die auf der linken orangen Seite in der unteren Abbildung liegen, in das globale Optimum konvergieren. Im Gegensatz dazu werden alle Startwerte, die auf grünen rechten Seite liegen, ins lokale Optimum laufen.

Eine Möglichkeit dieses Problem zu lösen, ist das Gradient Descent Verfahren mehrmals mit unterschiedlichen Startwerten durchzuführen und die Lösung mit dem geringsten Funktionswert zu verwenden. Jedoch kann so nicht garantiert werden, dass ein globales Optimum immer gefunden wird. Zudem ist das Durchführen mehrerer Gradient Descent Durchgänge deutlich rechenintensiver. Um diesem Problem vorzubeugen, kann bereits bei der Erstellung der Kostenfunktion darauf geachtet werden, dass es sich um eine sogenannte konvexe Funktion handelt.

Im eindimensionalen Fall kann man sich das so vorstellen, dass die Funktion stets eine Linkskurve beschreibt und somit die Form einer Parabel annimmt. Damit ist sichergestellt, dass die Funktion nur ein einziges globales Optimum besitzt.

Es gibt in der Mathematik verschiedene, gleichwertige Definitionen im ein- und mehrdimensionalen Raum für konvexe Funktionen. Um an dieser Stelle nicht zu weit abzudriften, sei einfach Folgendes gesagt: Eine quadratische Kostenfunktion, wie sie in diesem und im letzten Artikel zur linearen Regression definiert wurde, ist stets konvex. Eine einfache Möglichkeit, dies im eindimensionalen Fall zu erfüllen, ist sicherzustellen, dass die zweite Ableitung der Funktion stets größer oder gleich 0 ist. Ist die Funktion an jeder Stelle sogar echt größer als 0, so bezeichnet man die Funktion als streng konvex.

$ \begin{align*} f^{\prime \prime} (x) &\geq 0 ~\text{(konvex)} \\ f^{\prime \prime}(x) &> 0 ~\text{(streng konvex)} \end{align*}$

Betrachten wir nun einmal die von uns verwendete Kostenfunktion für den Fall der linearen Regression im Fall einer skalaren Variable $x$ und $m$ Datenpunkten $(x_{(i)}, y_{(i)})$:

$J(\theta_1) = \frac{1}{2m} \sum\limits^{m}_{i=1} (\theta_1 x_{(i)}-y_{(i)})^2$

Die Kostenfunktion leiten wir zweimal nach $\theta_1$ ab und erhalten die Funktion $J^{\prime \prime}(\theta_1) $:

$\begin{align*} J^{\prime}(\theta_1) &= \frac{1}{m} \sum\limits^{m}_{i=1} (\theta_1 x_{(i)}-y_{(i)}) \cdot x_{(i)} \\ J^{\prime \prime}(\theta_1) &= \frac{1}{m} \sum\limits^{m}_{i=1} \underbrace{x_{(i)}^2}_{\geq 0} \end{align*}$

Durch das Quadrieren von $x_{(i)}$ ist jeder einzelne Summand in der Funktion $J^{\prime \prime}(\theta_1) $ größer oder gleich 0 und somit gilt dies auch für die gesamte Summe. Da $m$ die Anzahl der Datenpunkte angibt und daher auch größer als 0 ist, ist die zweite Ableitung der Kostenfunktion $J(\theta_1)$ also immer größer oder gleich 0 und somit eine konvexe Funktion:

$J^{\prime \prime}(\theta_1) \geq 0 ~~\Rightarrow \text{konvex}$

Um das Gradient Descent Verfahren anzuwenden, sollte eine Funktion also zwei wichtige Punkte erfüllen:

  • Die Funktion muss differenzierbar sein, da bei jeder Iteration die Ableitung der Funktion bestimmt wird.
  • Die Funktion sollte konvex sein, damit sichergestellt werden kann, dass das Gradient Descent Verfahren das globale Optimum ermittelt.

Diese beiden Punkte sind bei der hier vorgestellten Kostenfunktion der linearen Regression stets gegeben und somit führt das Gradient Descent Verfahren (bei korrekter Schrittweite) stets zu einem globalen Optimum und somit zu einer eindeutigen Lösung.

Zusammenfassung Gradient Descent

Das Gradient Descent Verfahren bietet eine numerische Möglichkeit, das Optimum einer Funktion zu bestimmen. Die Berechnung eines einzelnen Schrittes ist vergleichsweise wenig rechenintensiv, erfordert jedoch die Kenntnis über die Ableitung der betrachteten Funktion. Somit muss die Funktion mindestens einmal stetig differenzierbar sein, wobei bei komplexeren Funktionen auch eine numerische Berechnung der Ableitung möglich ist.

Weiterhin ist es wichtig, beim Gradient Descent Verfahren die Lernrate korrekt zu ermitteln, um die Berechnung zu vieler Schritte oder ein Divergieren des Verfahrens zu vermeiden. Hilfreich ist an dieser Stelle auch das Feature Scaling, womit numerische Probleme bei Features, die auf stark unterschiedlichen Skalen agieren, gelöst werden.

Um sicherzugehen, dass ein globales Optimum durch das Verfahren gefunden wird, sollte die betrachtete Funktion (streng) konvex sein. Ist dies nicht der Fall, so kann man sich nicht sicher sein, ob die gefundene Lösung des Gradient Descent Verfahrens ein lokales oder globales Optimum ist.

Weitere Informationen

In meinen Videos auf YouTube stelle ich dieses und weitere Machine Learning Themen noch einmal detaillierter vor. Bei Fragen oder Anmerkungen schreibt mir gerne einen Kommentar :).

Meine Webseite ist komplett werbefrei. Falls dir dieser Beitrag gefallen hat und du meine Arbeit gerne unterstützen möchtest, schau daher doch einmal auf meiner Support-Seite vorbei. Das würde mich sehr freuen :).

Quellen

Machine Learning Kurs von Andrew Ng auf coursera.org, der aber leider nicht mehr verfügbar zu sein scheint. Es gibt dort aber weitere Kurse von Andrew Ng (und anderen Dozenten) zu diesem Thema.

Gradient Descent Wiki

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung / 5. Anzahl Bewertungen:

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments
Nach oben scrollen
WordPress Cookie Plugin von Real Cookie Banner