[chapter 8] copy german version of regression chapter
This commit is contained in:
parent
ebd0989a30
commit
fde6fb6177
426
regression/lecture/regression_de.tex
Normal file
426
regression/lecture/regression_de.tex
Normal file
@ -0,0 +1,426 @@
|
||||
\chapter{\tr{Optimization and gradient descent}{Optimierung und Gradientenabstieg}}
|
||||
|
||||
\selectlanguage{ngerman}
|
||||
|
||||
Ein sehr h\"aufiges Problem ist, dass die Abh\"angigkeit von
|
||||
Messwerten von einer Eingangsgr\"o{\ss}e durch ein Modell erkl\"art
|
||||
werden soll. Das Modell enth\"alt \"ublicherweise einen oder mehrere
|
||||
Parameter, die den Zusammenhang modifizieren. Wie soll die beste
|
||||
Parameterisierung des Modells gefunden werden, so dass das Modell die
|
||||
Daten am besten beschreibt? Dieser Prozess der Parameteranpassung ist
|
||||
ein Optimierungsproblem, der als Kurvenfit bekannt ist
|
||||
(\enterm{curve fitting}).
|
||||
|
||||
\begin{figure}[t]
|
||||
\includegraphics[width=1\textwidth]{lin_regress}\hfill
|
||||
\titlecaption{Beispieldatensatz f\"ur den Geradenfit.}{F\"ur eine
|
||||
Reihe von Eingangswerten $x$, z.B. Stimulusintensit\"aten, wurden
|
||||
die Antworten $y$ eines Systems gemessen (links). Der postulierte
|
||||
lineare Zusammenhang hat als freie Parameter die Steigung (mitte)
|
||||
und den $y$-Achsenabschnitt (rechts).}\label{linregressiondatafig}
|
||||
\end{figure}
|
||||
|
||||
Die Punktewolke in \figref{linregressiondatafig} legt
|
||||
zum Beispiel nahe, einen (verrauschten) linearen Zusammenhang zwischen
|
||||
der Eingangsgr\"o{\ss}e $x$ (\enterm{input}) und der Systemantwort
|
||||
$y$ (\enterm{output}) zu postulieren.
|
||||
Wir nehmen also an, dass die Geradengleichung
|
||||
\[y = f(x; m, b) = m\cdot x + b \]
|
||||
ein gutes Modell f\"ur das zugrundeliegende System sein k\"onnte
|
||||
(Abbildung \ref{linregressiondatafig}). Die Geradengleichung hat die
|
||||
beiden Parameter Steigung $m$ und $y$-Achsenabschnitt $b$ und es wird
|
||||
die Kombination von $m$ und $b$ gesucht, die die Systemantwort am
|
||||
besten vorhersagt.
|
||||
|
||||
In folgenden Kapitel werden wir anhand dieses Beispiels zeigen, welche
|
||||
Methoden hinter einem Kurvenfit stecken, wie also numerisch die
|
||||
optimale Kombination aus Steigung und $y$-Achsen\-abschnitt gefunden
|
||||
werden kann.
|
||||
|
||||
|
||||
\section{Mittlere quadratischen Abweichung}
|
||||
|
||||
Zuerst m\"u{\ss}en wir pr\"azisieren, was wir unter optimalen
|
||||
Parametern verstehen. Es sollen die Werte der Parameter der
|
||||
Geradengleichung sein, so dass die entsprechende Gerade am besten die
|
||||
Daten beschreibt. Was meinen wir damit? Jeder $y$-Wert der $N$
|
||||
Datenpaare wird einen Abstand $y_i - y^{est}_i$ zu den durch das
|
||||
Modell vorhergesagten Werten $y^{est}_i$ (\enterm{estimate}) an den
|
||||
entsprechenden $x$-Werten haben. In unserem Beispiel mit der
|
||||
Geradengleichung ist die Modellvorhersage $y^{est}_i=f(x_i;m,b)$
|
||||
gegeben durch die Geradengleichung
|
||||
(\figref{leastsquareerrorfig}). F\"ur den besten Fit sollten dieser
|
||||
Abst\"ande m\"oglichst klein sein.
|
||||
|
||||
Wir k\"onnten z.B. fordern, die Summe $\sum_{i=1}^N y_i - y^{est}_i$
|
||||
m\"oglichst klein zu machen. Das funktioniert aber nicht, da diese
|
||||
Summe auch dann klein wird, wenn die H\"alfte der $y$-Daten weit
|
||||
oberhalb der Geraden und die andere H\"alfte weit darunter liegt, da
|
||||
sich diese positiven und negativen Werte gegenseitig zu Zahlen nahe
|
||||
Null aufsummieren. Besser w\"are es auf jeden Fall, die Summe des
|
||||
Betrags der Abst\"ande $\sum_{i=1}^N |y_i - y^{est}_i|$ zu betrachten. Ein
|
||||
kleiner Wert der Summe kann dann nur erreicht werden, wenn die
|
||||
Abst\"ande der Datenpunkte von der Kurve tats\"achlich klein sind,
|
||||
unabh\"angig ob sie \"uber oder unter der Gerade liegen. Statt der
|
||||
Summe k\"onnen wir genauso gut fordern, dass der \emph{mittlere} Abstand
|
||||
\begin{equation}
|
||||
\label{meanabserror}
|
||||
f_{dist}(\{(x_i, y_i)\}|\{y^{est}_i\}) = \frac{1}{N} \sum_{i=1}^N |y_i - y^{est}_i|
|
||||
\end{equation}
|
||||
der Menge der $N$ Datenpaare $(x_i, y_i)$ gegeben die Modellvorhersagen
|
||||
$y_i^{est}$ klein sein soll.
|
||||
|
||||
Am h\"aufigsten wird jedoch bei einem Kurvenfit der \determ[mittlerer
|
||||
quadratische Abstand]{mittlere quadratische Abstand} (\enterm{mean
|
||||
squared distance} oder \enterm{mean squared error})
|
||||
\begin{equation}
|
||||
\label{meansquarederror}
|
||||
f_{mse}(\{(x_i, y_i)\}|\{y^{est}_i\}) = \frac{1}{N} \sum_{i=1}^N (y_i - y^{est}_i)^2
|
||||
\end{equation}
|
||||
verwendet (\figref{leastsquareerrorfig}). Wie beim Betrag sind die
|
||||
quadratischen Abst\"ande immer positiv, unabh\"angig ob die Datenwerte
|
||||
\"uber oder unter der Kurve liegen. Durch das Quadrat werden
|
||||
zus\"atzlich gro{\ss}e Abst\"ande st\"arker gewichtet.
|
||||
|
||||
\begin{exercise}{meanSquareError.m}{}\label{mseexercise}%
|
||||
Schreibe eine Funktion \code{meanSquareError()}, die die mittlere
|
||||
quadratische Abweichung zwischen einem Vektor mit den beobachteten
|
||||
Werten $y$ und einem Vektor mit den entsprechenden Vorhersagen
|
||||
$y^{est}$ berechnet.
|
||||
\pagebreak[4]
|
||||
\end{exercise}
|
||||
|
||||
|
||||
\section{Zielfunktion}
|
||||
|
||||
$f_{cost}(\{(x_i, y_i)\}|\{y^{est}_i\})$ ist eine sogenannte
|
||||
\determ{Zielfunktion}, oder \determ{Kostenfunktion} (\enterm{objective
|
||||
function}, \enterm{cost function}), da wir die Modellvorhersage so
|
||||
anpassen wollen, dass der mittlere quadratische Abstand, also die
|
||||
Zielfunktion, minimiert wird. In
|
||||
Kapitel~\ref{maximumlikelihoodchapter} werden wir sehen, dass die
|
||||
Minimierung des mittleren quadratischen Abstands \"aquivalent zur
|
||||
Maximierung der Wahrscheinlichkeit ist, dass die Daten aus der
|
||||
Modellfunktion stammen, unter der Vorraussetzung, dass die Daten
|
||||
um die Modellfunktion normalverteilt streuen.
|
||||
|
||||
\begin{figure}[t]
|
||||
\includegraphics[width=1\textwidth]{linear_least_squares}
|
||||
\titlecaption{Ermittlung des mittleren quadratischen Abstands.}
|
||||
{Der Abstand (\enterm{error}, orange) zwischen der Vorhersage (rote
|
||||
Gerade) und den Messdaten (blaue Punkte) wird f\"ur jeden
|
||||
gemessenen Datenpunkt ermittelt (links). Anschlie{\ss}end werden
|
||||
die Differenzen zwischen Messwerten und Vorhersage quadriert
|
||||
(\enterm{squared error}) und der Mittelwert berechnet (rechts).}
|
||||
\label{leastsquareerrorfig}
|
||||
\end{figure}
|
||||
|
||||
Die Kostenfunktion mu{\ss} nicht immer der mittlere quadratische
|
||||
Abstand sein. Je nach Problemstellung kann die Kostenfunktion eine
|
||||
beliebige Funktion sein, die die Parameter eines Modells auf einen
|
||||
Wert abbildet, der in irgendeiner Weise die Qualit\"at des Modells
|
||||
quantifiziert. Ziel ist es dann, diejenigen Parameterwerte zu finden,
|
||||
bei der die Kostenfunktion minimiert wird.
|
||||
%%% Einfaches verbales Beispiel?
|
||||
|
||||
Wenn wir nun in unsere Gleichung \eqref{meansquarederror} f\"ur die
|
||||
Modellvorhersage $y^{est}$ die Geradengleichung einsetzen, erhalten wir
|
||||
f\"ur die Zielfunktion
|
||||
\begin{eqnarray}
|
||||
f_{cost}(\{(x_i, y_i)\}|m,b) & = & \frac{1}{N} \sum_{i=1}^N (y_i - f(x_i;m,b))^2 \label{msefunc} \\
|
||||
& = & \frac{1}{N} \sum_{i=1}^N (y_i - m x_i - b)^2 \label{mseline}
|
||||
\end{eqnarray}
|
||||
den mittleren quadratischen Abstand der Datenpaare $(x_i, y_i)$
|
||||
gegeben die Parameterwerte $m$ und $b$ der Geradengleichung. Ziel des
|
||||
Kurvenfits ist es, die Werte f\"ur $m$ und $b$ so zu optimieren, dass
|
||||
der Fehler \eqnref{mseline} minimal wird (\determ{Methode der
|
||||
kleinsten Quadrate}, \enterm{least square error}).
|
||||
|
||||
\begin{exercise}{lsqError.m}{}
|
||||
Implementiere die Zielfunktion f\"ur die Optimierung mit der
|
||||
linearen Geradengleichung als Funktion \code{lsqError()}.
|
||||
\begin{itemize}
|
||||
\item Die Funktion \"ubernimmt drei Argumente: Das erste Argument
|
||||
ist ein 2-elementiger Vektor, der die Parameter \varcode{m} und
|
||||
\varcode{b} enth\"alt. Das zweite ist ein Vektor mit den $x$-Werten,
|
||||
an denen gemessen wurde, und das dritte ein Vektor mit den
|
||||
zugeh\"origen $y$-Werten.
|
||||
\item Die Funktion gibt als Ergebniss den Fehler als mittleren
|
||||
quadratischen Abstand \eqnref{mseline} zur\"uck.
|
||||
\item Die Funktion soll die Funktion \code{meanSquareError()} der
|
||||
vorherigen \"Ubung benutzen.
|
||||
\end{itemize}
|
||||
\end{exercise}
|
||||
|
||||
|
||||
\section{Fehlerfl\"ache}
|
||||
|
||||
Die beiden Parameter $m$ und $b$ der Geradengleichung spannen eine
|
||||
F\"ache auf. F\"ur jede Kombination aus $m$ und $b$ k\"onnen wir den
|
||||
Wert der Zielfunktion, hier der mittlere quadratische Abstand
|
||||
\eqnref{meansquarederror}, berechnen. Wir betrachten also die
|
||||
Kostenfunktion $f_{cost}(\{(x_i, y_i)\}|m,b)$ nun als Funktion
|
||||
$f_{cost}(m,b)$, die die beiden Variablen $m$ und $b$ auf einen
|
||||
Fehlerwert abbildet.
|
||||
|
||||
Es gibt also f\"ur jeden Punkt in der sogenannten
|
||||
\determ{Fehlerfl\"ache} einen Fehlerwert. In diesem Beispiel eines
|
||||
2-dimensionalen Problems (zwei freie Parameter) kann die
|
||||
Fehlerfl\"ache graphisch durch einen 3-d \enterm{surface-plot}
|
||||
dargestellt werden. Dabei werden auf der $x$- und der $y$-Achse die
|
||||
beiden Parameter und auf der $z$-Achse der Fehlerwert aufgetragen
|
||||
(\figref{errorsurfacefig}).
|
||||
|
||||
\begin{figure}[t]
|
||||
\includegraphics[width=0.75\columnwidth]{error_surface.pdf}
|
||||
\titlecaption{Fehlerfl\"ache.}{Die beiden freien Parameter
|
||||
unseres Modells $m$ und $b$ spannen die Grundfl\"ache des Plots
|
||||
auf. F\"ur jede Kombination von Steigung $m$ und
|
||||
$y$-Achsenabschnitt $b$ wird die errechnete Vorhersage des Modells
|
||||
mit den Messwerten verglichen und der Fehlerwert geplottet. Die
|
||||
sich ergebende Fehlerfl\"ache hat ein Minimum (roter Punkt) bei
|
||||
den Werten von $m$ und $b$, f\"ur die die Gerade die Daten am
|
||||
besten beschreibt.}\label{errorsurfacefig}
|
||||
\end{figure}
|
||||
|
||||
\begin{exercise}{errorSurface.m}{}\label{errorsurfaceexercise}%
|
||||
Lade den Datensatz \textit{lin\_regression.mat} in den Workspace (20
|
||||
Datenpaare in den Vektoren \varcode{x} und \varcode{y}). Schreibe ein Skript
|
||||
\file{errorSurface.m}, dass den Fehler, berechnet als mittleren
|
||||
quadratischen Abstand zwischen den Daten und einer Geraden mit
|
||||
Steigung $m$ und $y$-Achsenabschnitt $b$, in Abh\"angigkeit von $m$
|
||||
und $b$ als surface plot darstellt (siehe Hilfe f\"ur die
|
||||
\code{surf()} Funktion).
|
||||
\end{exercise}
|
||||
|
||||
An der Fehlerfl\"ache kann direkt erkannt werden, bei welcher
|
||||
Parameterkombination der Fehler minimal, beziehungsweise die
|
||||
Parameterisierung optimal an die Daten angepasst ist. Wie kann die
|
||||
Fehlerfunktion und die durch sie definierte Fehlerfl\"ache nun benutzt
|
||||
werden, um den Optimierungsprozess zu leiten?
|
||||
|
||||
Die naheliegenste Variante ist, von der Fehlerfl\"ache einfach den Ort
|
||||
des globalen Minimums zu bestimmen. Das ist im Allgemeinen jedoch zu
|
||||
rechenintensiv, da f\"ur jede m\"ogliche Kombination der Parameter der
|
||||
Fehler berechnet werden muss. Die Anzahl der n\"otigen Berechnungen
|
||||
steigt exponentiell mit der Anzahl der Parameter (``Fluch der
|
||||
Dimension''). Auch eine bessere Genauigkeit, mit der das Minimum
|
||||
bestimmt werden soll, erh\"oht die Anzahl der n\"otigen
|
||||
Berechnungen. Wir suchen also ein Verfahren, dass das Minimum der
|
||||
Kostenfunktion mit m\"oglichst wenigen Berechnungen findet.
|
||||
|
||||
\begin{ibox}[t]{\label{differentialquotientbox}Differenzenquotient und Ableitung}
|
||||
\includegraphics[width=0.33\textwidth]{derivative}
|
||||
\hfill
|
||||
\begin{minipage}[b]{0.63\textwidth}
|
||||
Der Differenzenquotient
|
||||
\begin{equation}
|
||||
\label{difffrac}
|
||||
m = \frac{f(x + \Delta x) - f(x)}{\Delta x}
|
||||
\end{equation}
|
||||
einer Funktion $y = f(x)$ ist die Steigung der Sekante (rot) durch
|
||||
die beiden Punkte $(x,f(x))$ und $(x+\Delta x,f(x+\Delta x))$ mit
|
||||
dem Abstand $\Delta x$.
|
||||
|
||||
Die Steigung einer Funktion $y=f(x)$ an einer Stelle $x$ (gelb) wird durch
|
||||
die Ableitung $f'(x)$ der Funktion an dieser Stelle berechnet. Die
|
||||
Ableitung ist \"uber den Grenzwert (orange) des Differenzenquotienten f\"ur
|
||||
unendlich kleine Abst\"ande $\Delta x$ definiert:
|
||||
\begin{equation}
|
||||
\label{derivative}
|
||||
f'(x) = \frac{{\rm d} f(x)}{{\rm d}x} = \lim\limits_{\Delta x \to 0} \frac{f(x + \Delta x) - f(x)}{\Delta x} \end{equation}
|
||||
\end{minipage}\vspace{2ex}
|
||||
|
||||
Numerisch kann der Grenzwert \eqnref{derivative} nicht
|
||||
gebildet werden. Die Ableitung kann nur durch den
|
||||
Differenzenquotienten \eqnref{difffrac} mit gen\"ugend kleinem
|
||||
$\Delta x$ angen\"ahert werden.
|
||||
\end{ibox}
|
||||
|
||||
\begin{ibox}[t]{\label{partialderivativebox}Partielle Ableitungen und Gradient}
|
||||
Bei Funktionen
|
||||
\[ z = f(x,y) \]
|
||||
die von mehreren Variablen, z.B. $x$ und $y$ abh\"angen,
|
||||
kann die Steigung in Richtung jeder dieser Variablen
|
||||
mit den partiellen Ableitungen
|
||||
\[ \frac{\partial f(x,y)}{\partial x} = \lim\limits_{\Delta x \to 0} \frac{f(x + \Delta x,y) - f(x,y)}{\Delta x} \]
|
||||
und
|
||||
\[ \frac{\partial f(x,y)}{\partial y} = \lim\limits_{\Delta y \to 0} \frac{f(x, y + \Delta y) - f(x,y)}{\Delta y} \]
|
||||
definiert \"uber den jeweiligen Differenzenquotienten
|
||||
(Box~\ref{differentialquotientbox}) berechnet werden. \vspace{1ex}
|
||||
|
||||
\begin{minipage}[t]{0.44\textwidth}
|
||||
\mbox{}\\[-2ex]
|
||||
\includegraphics[width=1\textwidth]{gradient}
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}[t]{0.52\textwidth}
|
||||
Z.B. lauten die partiellen Ableitungen von
|
||||
\[ f(x,y) = x^2+y^2 \]
|
||||
\[ \frac{\partial f(x,y)}{\partial x} = 2x \; , \quad \frac{\partial f(x,y)}{\partial y} = 2y \; .\]
|
||||
|
||||
Der Gradient ist der aus den partiellen Ableitungen gebildete Vektor
|
||||
\[ \nabla f(x,y) = \left( \begin{array}{c} \frac{\partial f(x,y)}{\partial x} \\[1ex] \frac{\partial f(x,y)}{\partial y} \end{array} \right) \]
|
||||
und zeigt in Richtung des st\"arksten Anstiegs der Funktion $f(x,y)$.
|
||||
\end{minipage}
|
||||
|
||||
\vspace{1ex} Die Abbildung zeigt die Konturlinien einer bivariaten
|
||||
Gau{\ss}glocke $f(x,y) = \exp(-(x^2+y^2)/2)$ und den Gradienten mit
|
||||
seinen partiellen Ableitungen an drei verschiedenen Stellen.
|
||||
\end{ibox}
|
||||
|
||||
|
||||
\section{Gradient}
|
||||
|
||||
Wenn eine Kugel an einem beliebigen Startpunkt auf der Fehlerfl\"ache
|
||||
\figref{errorsurfacefig} losgelassen werden w\"urde, dann w\"urde sie
|
||||
entlang des steilsten Gef\"alles auf schnellsten Wege zum Minimum der
|
||||
Fehlerfl\"ache rollen und dort zum Stehen kommen (wenn sie keine
|
||||
Tr\"agheit besitzen w\"urde). Den Weg der Kugel wollen wir nun als
|
||||
Grundlage unseres Algorithmus zur Bestimmung des Minimums der
|
||||
Kostenfunktion verwenden. Da die Kugel immer entlang des steilsten
|
||||
Gef\"alles rollt, ben\"otigen wir Information \"uber die Richtung des
|
||||
Gef\"alles an der jeweils aktuellen Position.
|
||||
|
||||
Der \determ{Gradient} (Box~\ref{partialderivativebox}) der Kostenfunktion
|
||||
\[ \nabla f_{cost}(m,b) = \left( \frac{\partial f(m,b)}{\partial m},
|
||||
\frac{\partial f(m,b)}{\partial b} \right) \] bzgl. der beiden
|
||||
Parameter $m$ und $b$ der Geradengleichung ist ein Vektor, der in
|
||||
Richtung des steilsten Anstiegs der Kostenfunktion $f_{cost}(m,b)$ zeigt.
|
||||
Die L\"ange des Gradienten gibt die St\"arke des Anstiegs an
|
||||
(\figref{gradientquiverfig})). Da wir aber abw\"arts zum Minimum
|
||||
laufen wollen, m\"ussen wir die dem Gradienten entgegengesetzte
|
||||
Richtung einschlagen.
|
||||
|
||||
Die partiellen Ableitungen m\"ussen nicht analytisch berechnet werden
|
||||
sondern k\"onnen numerisch entsprechend dem Differenzenquotienten
|
||||
(Box~\ref{differentialquotientbox}) mit kleinen Schrittweiten $\Delta
|
||||
m$ und $\Delta b$ angen\"ahert werden. z.B. approximieren wir die
|
||||
partielle Ableitung nach $m$ durch
|
||||
\[\frac{\partial f_{cost}(m,b)}{\partial m} = \lim\limits_{\Delta m \to
|
||||
0} \frac{f_{cost}(m + \Delta m, b) - f_{cost}(m,b)}{\Delta m} \approx \frac{f_{cost}(m + \Delta m, b) -
|
||||
f_{cost}(m,b)}{\Delta m} \; . \]
|
||||
|
||||
\begin{figure}[t]
|
||||
\includegraphics[width=0.75\columnwidth]{error_gradient}
|
||||
\titlecaption{Gradient der Fehlerfl\"ache.}
|
||||
{Jeder Pfeil zeigt die Richtung und die
|
||||
Steigung f\"ur verschiedene Parameterkombination aus Steigung und
|
||||
$y$-Achsenabschnitt an. Die Konturlinien im Hintergrund
|
||||
illustrieren die Fehlerfl\"ache. Warme Farben stehen f\"ur
|
||||
gro{\ss}e Fehlerwerte, kalte Farben f\"ur kleine. Jede
|
||||
Konturlinie steht f\"ur eine Linie gleichen
|
||||
Fehlers.}\label{gradientquiverfig}
|
||||
\end{figure}
|
||||
|
||||
\begin{exercise}{lsqGradient.m}{}\label{gradientexercise}%
|
||||
Implementiere eine Funktion \code{lsqGradient()}, die den
|
||||
Parametersatz $(m, b)$ der Geradengleichung als 2-elementigen Vektor
|
||||
sowie die $x$- und $y$-Werte der Messdaten als Argumente
|
||||
entgegennimmt und den Gradienten an dieser Stelle zur\"uckgibt.
|
||||
\end{exercise}
|
||||
|
||||
\begin{exercise}{errorGradient.m}{}
|
||||
Benutze die Funktion aus der vorherigen \"Ubung (\ref{gradientexercise}),
|
||||
um f\"ur jede Parameterkombination aus der Fehlerfl\"ache
|
||||
(\"Ubung \ref{errorsurfaceexercise}) auch den Gradienten zu
|
||||
berechnen und darzustellen. Vektoren im Raum k\"onnen mithilfe der
|
||||
Funktion \code{quiver()} geplottet werden.
|
||||
\end{exercise}
|
||||
|
||||
|
||||
\section{Gradientenabstieg}
|
||||
|
||||
Zu guter Letzt muss nur noch der \determ{Gradientenabstieg} implementiert
|
||||
werden. Die daf\"ur ben\"otigten Zutaten haben wir aus den
|
||||
vorangegangenen \"Ubungen bereits vorbereitet. Wir brauchen: 1. Die Fehlerfunktion
|
||||
(\code{meanSquareError()}), 2. die Zielfunktion (\code{lsqError()})
|
||||
und 3. den Gradienten (\code{lsqGradient()}). Der Algorithmus
|
||||
f\"ur den Abstieg lautet:
|
||||
\begin{enumerate}
|
||||
\item Starte mit einer beliebigen Parameterkombination $p_0 = (m_0,
|
||||
b_0)$.
|
||||
\item \label{computegradient} Berechne den Gradienten an der akutellen Position $p_i$.
|
||||
\item Wenn die L\"ange des Gradienten einen bestimmten Wert
|
||||
unterschreitet, haben wir das Minum gefunden und k\"onnen die Suche
|
||||
abbrechen. Wir suchen ja das Minimum, bei dem der Gradient gleich
|
||||
Null ist. Da aus numerischen Gr\"unden der Gradient nie exakt Null
|
||||
werden wird, k\"onnen wir nur fordern, dass er hinreichend klein
|
||||
wird (z.B. \varcode{norm(gradient) < 0.1}).
|
||||
\item \label{gradientstep} Gehe einen kleinen Schritt ($\epsilon =
|
||||
0.01$) in die entgegensetzte Richtung des Gradienten:
|
||||
\[p_{i+1} = p_i - \epsilon \cdot \nabla f_{cost}(m_i, b_i)\]
|
||||
\item Wiederhole die Schritte \ref{computegradient} -- \ref{gradientstep}.
|
||||
\end{enumerate}
|
||||
|
||||
Abbildung \ref{gradientdescentfig} zeigt den Verlauf des
|
||||
Gradientenabstiegs. Von einer Startposition aus wird die Position
|
||||
solange ver\"andert, wie der Gradient eine bestimmte Gr\"o{\ss}e
|
||||
\"uberschreitet. An den Stellen, an denen der Gradient sehr stark ist,
|
||||
ist auch die Ver\"anderung der Position gro{\ss} und der Abstand der
|
||||
Punkte in Abbildung \ref{gradientdescentfig} gro{\ss}.
|
||||
|
||||
\begin{figure}[t]
|
||||
\includegraphics[width=0.6\columnwidth]{gradient_descent}
|
||||
\titlecaption{Gradientenabstieg.}{Es wird von einer beliebigen
|
||||
Position aus gestartet und der Gradient berechnet und die Position
|
||||
ver\"andert. Jeder Punkt zeigt die Position nach jedem
|
||||
Optimierungsschritt an.} \label{gradientdescentfig}
|
||||
\end{figure}
|
||||
|
||||
\setboolean{showexercisesolutions}{false}
|
||||
\begin{exercise}{gradientDescent.m}{}
|
||||
Implementiere den Gradientenabstieg f\"ur das Problem der
|
||||
Parameteranpassung der linearen Geradengleichung an die Messdaten in
|
||||
der Datei \file{lin\_regression.mat}.
|
||||
\begin{enumerate}
|
||||
\item Merke Dir f\"ur jeden Schritt den Fehler zwischen
|
||||
Modellvorhersage und Daten.
|
||||
\item Erstelle eine Plot, der die Entwicklung des Fehlers als
|
||||
Funktion der Optimierungsschritte zeigt.
|
||||
\item Erstelle einen Plot, der den besten Fit in die Daten plottet.
|
||||
\end{enumerate}
|
||||
\end{exercise}
|
||||
|
||||
|
||||
\section{Fazit}
|
||||
Mit dem Gradientenabstieg haben wir eine wichtige Methode zur
|
||||
Bestimmung eines globalen Minimums einer Kostenfunktion
|
||||
kennengelernt.
|
||||
|
||||
F\"ur den Fall des Kurvenfits mit einer Geradengleichung zeigt der
|
||||
mittlere quadratische Abstand als Kostenfunktion in der Tat ein
|
||||
einziges klar definiertes Minimum. Wie wir im n\"achsten Kapitel
|
||||
sehen werden, kann die Position des Minimums bei Geradengleichungen
|
||||
sogar analytisch bestimmt werden, der Gradientenabstieg w\"are also
|
||||
gar nicht n\"otig \matlabfun{polyfit()}.
|
||||
|
||||
F\"ur Parameter, die nichtlinear in einer Funktion
|
||||
enthalten sind, wie z.B. die Rate $\lambda$ als Parameter in der
|
||||
Exponentialfunktion $f(x;\lambda) = \exp(\lambda x)$, gibt es keine
|
||||
analytische L\"osung, und das Minimum der Kostenfunktion muss
|
||||
numerisch, z.B. mit dem Gradientenabstiegsverfahren bestimmt werden.
|
||||
|
||||
Um noch schneller das Minimum zu finden, kann das Verfahren des
|
||||
Gradientenabstiegs auf vielf\"altige Weise verbessert
|
||||
werden. z.B. kann die Schrittweite an die St\"arke des Gradienten
|
||||
angepasst werden. Diese numerischen Tricks sind in bereits vorhandenen
|
||||
Funktionen implementiert. Allgemeine Funktionen sind f\"ur beliebige
|
||||
Kostenfunktionen gemacht \matlabfun{fminsearch()}, w\"ahrend spezielle
|
||||
Funktionen z.B. f\"ur die Minimierung des quadratischen Abstands bei
|
||||
einem Kurvenfit angeboten werden \matlabfun{lsqcurvefit()}.
|
||||
|
||||
\newpage
|
||||
\begin{important}[Achtung Nebenminima!]
|
||||
Das Finden des globalen Minimums ist leider nur selten so leicht wie
|
||||
bei einem Geradenfit. Oft hat die Kostenfunktion viele Nebenminima,
|
||||
in denen der Gradientenabstieg enden kann, obwohl das gesuchte
|
||||
globale Minimum noch weit entfernt ist. Darum ist es meist sehr
|
||||
wichtig, wirklich gute Startwerte f\"ur die zu bestimmenden
|
||||
Parameter der Kostenfunktion zu haben. Auch sollten nur so wenig wie
|
||||
m\"oglich Parameter gefittet werden, da jeder zus\"atzliche
|
||||
Parameter den Optimierungsprozess schwieriger und
|
||||
rechenaufw\"andiger macht.
|
||||
\end{important}
|
||||
|
||||
\selectlanguage{english}
|
Reference in New Issue
Block a user