Added \enterm command for highlighting english terms.
First improvements on regression chapter.
This commit is contained in:
parent
afd6bdf791
commit
7f29a692b1
@ -167,6 +167,9 @@
|
|||||||
\newcommand{\reZpN}{\mathds{R^+_0}}
|
\newcommand{\reZpN}{\mathds{R^+_0}}
|
||||||
\newcommand{\koZ}{\mathds{C}}
|
\newcommand{\koZ}{\mathds{C}}
|
||||||
|
|
||||||
|
%%%%% english terms: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\newcommand{\enterm}[1]{``#1''}
|
||||||
|
|
||||||
%%%%% code/matlab commands: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%% code/matlab commands: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\usepackage{textcomp}
|
\usepackage{textcomp}
|
||||||
\newcommand{\code}[1]{\setlength{\fboxsep}{0.5ex}\colorbox{blue!10}{\texttt{#1}}}
|
\newcommand{\code}[1]{\setlength{\fboxsep}{0.5ex}\colorbox{blue!10}{\texttt{#1}}}
|
||||||
|
@ -5,16 +5,13 @@ load('lin_regression.mat');
|
|||||||
|
|
||||||
slopes = -5:0.25:5;
|
slopes = -5:0.25:5;
|
||||||
intercepts = -30:1:30;
|
intercepts = -30:1:30;
|
||||||
|
|
||||||
error_surf = zeros(length(slopes), length(intercepts));
|
error_surf = zeros(length(slopes), length(intercepts));
|
||||||
|
|
||||||
for i = 1:length(slopes)
|
for i = 1:length(slopes)
|
||||||
for j = 1:length(intercepts)
|
for j = 1:length(intercepts)
|
||||||
error_surf(i,j) = lsqError([slopes(i), intercepts(j)], x, y);
|
error_surf(i,j) = lsqError([slopes(i), intercepts(j)], x, y);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
% plot the error surface
|
% plot the error surface
|
||||||
figure()
|
figure()
|
||||||
[N,M] = meshgrid(intercepts, slopes);
|
[N,M] = meshgrid(intercepts, slopes);
|
||||||
@ -25,7 +22,7 @@ zlabel('error')
|
|||||||
set(gca,'xtick', (-5:2.5:5))
|
set(gca,'xtick', (-5:2.5:5))
|
||||||
grid on
|
grid on
|
||||||
view(3)
|
view(3)
|
||||||
|
|
||||||
set(gcf, 'paperunits', 'centimeters', 'papersize', [15, 15], ...
|
set(gcf, 'paperunits', 'centimeters', 'papersize', [15, 15], ...
|
||||||
'paperposition', [0., 0., 15, 15])
|
'paperposition', [0., 0., 15, 15])
|
||||||
|
|
||||||
saveas(gcf, 'error_surface', 'pdf')
|
saveas(gcf, 'error_surface', 'pdf')
|
@ -1,64 +1,57 @@
|
|||||||
\chapter{\tr{Optimization and Gradient Descent}{Optimierung und Gradientenabstiegsverfahren}}
|
\chapter{\tr{Optimization and Gradient Descent}{Optimierung und Gradientenabstiegsverfahren}}
|
||||||
|
|
||||||
Ein sehr \"ubliches Problem ist, dass die Abh\"angigkeit von
|
Ein sehr h\"aufiges Problem ist, dass die Abh\"angigkeit von
|
||||||
Messwerten von einem Input Parameter durch ein Modell erkl\"art werden
|
Messwerten von einer Eingangsgr\"o{\ss}e durch ein Modell erkl\"art
|
||||||
soll. Die Frage ist, wie man die beste Parametrisierung des Modells
|
werden soll. Das Modell enth\"alt \"ublicherweise einen oder mehrere
|
||||||
findet. Den Prozess der Prarmeteranpassung nennt man auch Optimierung
|
Parameter, die den Zusammenhang modifizieren. Wie soll die beste
|
||||||
oder English Fitting. Betrachtet man zum Beispiel die Punktewolke in
|
Parameterisierung des Modells gefunden werden, so dass das Modell die
|
||||||
Abbildung \ref{linregressiondatafig} liegt es nahe einen
|
Daten am besten beschreibt? Dieser Prozess der Parameteranpassung ist
|
||||||
(verrauschten) linearen Zusammenhang zwischen Einganggr\"{\ss}e
|
ein Optimierungsproblem, der besser als Kurvenfit bekannt ist
|
||||||
(Input) und Systemantwort (output) zu postulieren.
|
(\enterm{curve fitting}).
|
||||||
|
|
||||||
\begin{figure}
|
\begin{figure}[tp]
|
||||||
\includegraphics[width=0.45\columnwidth]{lin_regress.pdf}
|
\includegraphics[width=0.32\columnwidth]{lin_regress}\hfill
|
||||||
\caption{\textbf{Blick auf die Rohdaten.} F\"ur eine Reihe von
|
\includegraphics[width=0.32\columnwidth]{lin_regress_slope}\hfill
|
||||||
Eingangswerten, z.B. Stimulusintensit\"aten wurden die Antworten
|
\includegraphics[width=0.32\columnwidth]{lin_regress_abscissa}
|
||||||
eines Systems gemessen.}\label{linregressiondatafig}
|
\titlecaption{.}{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}
|
\end{figure}
|
||||||
|
|
||||||
Wir nehmen an, dass die lineare Geradengleichung ein guten Modell
|
Die Punktewolke in \figref{linregressiondatafig} legt
|
||||||
f\"ur das zugrundeliegende System ist.
|
zum Beispiel nahe einen (verrauschten) linearen Zusammenhang zwischen
|
||||||
\[f_{m,n}(x) = m\cdot x + n \]
|
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_{m,n}(x) = m\cdot x + n \] 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 $n$ und es wird
|
||||||
|
die Kombination von $m$ und $n$ gesucht, die die Systemantwort am
|
||||||
|
besten vorhersagt.
|
||||||
|
|
||||||
wobei $x$ die Eingangswerte, $f_{m,n}(x)$ die Systemantwort, $m$ die Steigung
|
In folgenden Kapitel werden wir anhand dieses Beispiels zeigen,
|
||||||
und $n$ der y-Achsenabschnitt darstellen (Abbildung
|
welchen Methoden hinter einem Kurvenfit stecken, wie also die optimale
|
||||||
\ref{linregressionslopeintersectfig}). In dieser Gleichung gibt es nur zwei Parameter
|
Kombination aus Steigung und $y$-Achsenabschnitt gefunden werden kann.
|
||||||
und es wird die Kombination von Steigung ($m$) und y-Achsenabschnitt
|
|
||||||
($n$) gesucht, die die Systemantwort am besten vorhersagen.
|
|
||||||
|
|
||||||
\begin{figure}
|
|
||||||
\begin{minipage}[t]{0.45\columnwidth}
|
|
||||||
\includegraphics[width=\textwidth]{figures/lin_regress_slope.pdf}
|
|
||||||
\end{minipage}
|
|
||||||
\begin{minipage}[t]{0.45\columnwidth}
|
|
||||||
\includegraphics[width=\textwidth]{figures/lin_regress_abscissa.pdf}
|
|
||||||
\end{minipage}
|
|
||||||
\caption{\textbf{Ver\"anderungen der Parameter und ihre Folgen.} Die
|
|
||||||
linke Abbildung zeigt den Effekt einer Ver\"anderung der Steigung
|
|
||||||
w\"ahrend die reche Abbildung die Ver\"anderung des
|
|
||||||
y-Achsenabschnittes
|
|
||||||
illustriert. }\label{linregressionslopeintersectfig}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
Wie wird nun die optimale Kombination aus Steigung und y-Achsenabschnitt gefunden?
|
\section{Methode der kleinsten quadratischen Abweichung}
|
||||||
|
|
||||||
\section{Methode der kleinsten Quadratischen Abweichung}
|
|
||||||
|
|
||||||
Um die optimale Parameterkombination zu finden muss zun\"achst ein
|
Um die optimale Parameterkombination zu finden muss zun\"achst ein
|
||||||
Ma{\ss} f\"ur den Unterschied zwischen den tats\"achlich gemessenen
|
Ma{\ss} f\"ur den Unterschied zwischen den tats\"achlich gemessenen
|
||||||
und den unter Verwendung eines Parametersatzes vorhergesagten Werten
|
und den unter Verwendung eines Parametersatzes vorhergesagten Werten
|
||||||
definiert werden. Eine der am h\"aufigsten verwendeten
|
definiert werden. Eine der am h\"aufigsten verwendeten
|
||||||
Fehlersch\"atzungen ist der \emph{mittlere qaudratische Abstand} (im
|
Fehlersch\"atzungen ist der \emph{mittlere qaudratische Abstand}
|
||||||
Englischen auch mean square error genannt, Abbildung \ref{leastsquareerrorfig}).
|
(``mean square error'', Abbildung \ref{leastsquareerrorfig})
|
||||||
|
\[ e = \frac{1}{N}\sum^{N}_{1=1} \left( y_i - y^{est}_i\right)^2 \; ,\]
|
||||||
\[ e = \frac{1}{N}\sum^{N}_{1=1} \left( y_i - y^{est}_i)\right )^2\]
|
|
||||||
|
|
||||||
wobei $e$ der Fehler, $N$ die Anzahl gemessener Datenpunkte $y_i$ die
|
wobei $e$ der Fehler, $N$ die Anzahl gemessener Datenpunkte $y_i$ die
|
||||||
Messwerte und $y^{est}_i$ die Vorhersagewerte an den enstprechenden
|
Messwerte und $y^{est}_i$ die Vorhersagewerte an den enstprechenden
|
||||||
Stellen sind.
|
Stellen sind.
|
||||||
|
|
||||||
\begin{figure}
|
\begin{figure}[tp]
|
||||||
\includegraphics[width=0.5\columnwidth]{figures/linear_least_squares.pdf}
|
\includegraphics[width=0.5\columnwidth]{linear_least_squares}
|
||||||
\caption{\textbf{Ermittlung des Mittleren quadratischen Abstands.}
|
\caption{\textbf{Ermittlung des Mittleren quadratischen Abstands.}
|
||||||
Der Abstand zwischen der Vorhersage und dem Modell wird f\"ur
|
Der Abstand zwischen der Vorhersage und dem Modell wird f\"ur
|
||||||
jeden gemessenen Datenpunkt ermittelt. Die Differenz zwischen
|
jeden gemessenen Datenpunkt ermittelt. Die Differenz zwischen
|
||||||
@ -102,15 +95,15 @@ Passung zu optimieren.
|
|||||||
|
|
||||||
\section{Fehlerfl\"ache}
|
\section{Fehlerfl\"ache}
|
||||||
|
|
||||||
Die beiden Parameter $m$ und $n$ spanngen eine F\"ache auf. F\"ur jede
|
Die beiden Parameter $m$ und $n$ spannen eine F\"ache auf. F\"ur jede
|
||||||
Kombination aus $m$ und $n$ erhalten wir Vorhersagewerte, die von den
|
Kombination aus $m$ und $n$ erhalten wir Vorhersagewerte, die von den
|
||||||
gemessenen Werten abweichen werden. Es gibt also f\"ur jeden Punkt in
|
gemessenen Werten abweichen werden. Es gibt also f\"ur jeden Punkt in
|
||||||
der sogenannten \emph{Fehlerfl\"ache} einen Fehler. In diesem Beispiel
|
der sogenannten \emph{Fehlerfl\"ache} einen Fehler. In diesem Beispiel
|
||||||
eines 2-dimensionalen Problems (zwei freie Parameter) kann man die
|
eines 2-dimensionalen Problems (zwei freie Parameter) kann die
|
||||||
Fehlerfl\"ache graphisch durch einen 3-d ``surface-plot''
|
Fehlerfl\"ache graphisch durch einen 3-d ``surface-plot'' dargestellt
|
||||||
darstellen. Wobei auf der x- und y-Achse die beiden Parameter und auf
|
werden. Dabei werden auf der $x$- und der $y$-Achse die beiden
|
||||||
der z-Achse der Fehlerwert aufgetragen wird (Abbildung
|
Parameter und auf der $z$-Achse der Fehlerwert aufgetragen
|
||||||
\ref{errorsurfacefig}).
|
(\figref{errorsurfacefig}).
|
||||||
|
|
||||||
\clearpage
|
\clearpage
|
||||||
\begin{figure}
|
\begin{figure}
|
||||||
@ -122,13 +115,12 @@ der z-Achse der Fehlerwert aufgetragen wird (Abbildung
|
|||||||
und der Fehlerwert geplottet.}\label{errorsurfacefig}
|
und der Fehlerwert geplottet.}\label{errorsurfacefig}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Die Fehlerfl\"ache zeigt uns nun an bei welcher Parameterkombination
|
Die Fehlerfl\"ache zeigt an, bei welcher Parameterkombination
|
||||||
der Fehler minimal, beziehungsweise die Parametertrisierung optimal an
|
der Fehler minimal, beziehungsweise die Parameterisierung optimal an
|
||||||
die Daten angepasst ist. Wie kann die Fehlerfunktion und die durch sie
|
die Daten angepasst ist. Wie kann die Fehlerfunktion und die durch sie
|
||||||
definierte Fehlerfl\"ache nun benutzt werden um den
|
definierte Fehlerfl\"ache nun benutzt werden, um den
|
||||||
Optimierungsprozess zu leiten?
|
Optimierungsprozess zu leiten?
|
||||||
|
|
||||||
|
|
||||||
\begin{exercise}{errorSurface.m}{}\label{errorsurfaceexercise}
|
\begin{exercise}{errorSurface.m}{}\label{errorsurfaceexercise}
|
||||||
Ladet den Datensatz \textit{lin\_regression.mat} in den
|
Ladet den Datensatz \textit{lin\_regression.mat} in den
|
||||||
Workspace. und schreibt ein Skript \code{errorSurface.m} dass den
|
Workspace. und schreibt ein Skript \code{errorSurface.m} dass den
|
||||||
@ -150,16 +142,15 @@ Position berechnet werden.
|
|||||||
|
|
||||||
Die Steigung einer Funktion an einer Stelle ist die Ableitung der
|
Die Steigung einer Funktion an einer Stelle ist die Ableitung der
|
||||||
Funktion an dieser Stelle, die durch den Differenzquotienten f\"ur
|
Funktion an dieser Stelle, die durch den Differenzquotienten f\"ur
|
||||||
unendlich kleine Schritte bestimmt wird.
|
unendlich kleine Schritte $h$ bestimmt wird.
|
||||||
|
|
||||||
\[f'(x) = \lim\limits_{h \rightarrow 0} \frac{f(x + h) - f(x)}{h} \]
|
\[f'(x) = \lim\limits_{h \rightarrow 0} \frac{f(x + h) - f(x)}{h} \]
|
||||||
Bei unserem Fittingproblem h\"angt die Fehlerfunktion von zwei
|
Bei unserem Fittingproblem h\"angt die Fehlerfunktion von zwei
|
||||||
Parametern ab und wir bestimmen die Steigung partiell f\"ur jeden
|
Parametern ab und wir bestimmen die Steigung partiell f\"ur jeden
|
||||||
Parameter einzeln. Die Partielle Ableitung nach \code{m} sieht so aus:
|
Parameter einzeln. Die partielle Ableitung nach $m$ sieht so aus:
|
||||||
\[\frac{\partial g(m,n)}{\partial m} = \lim\limits_{h \rightarrow 0} \frac{g(m + h, n) - g(m,n)}{h}\]
|
\[\frac{\partial g(m,n)}{\partial m} = \lim\limits_{h \rightarrow 0} \frac{g(m + h, n) - g(m,n)}{h}\]
|
||||||
Da wir die Ver\"anderung des Fehlers in Abh\"angigkeit der beiden
|
Da wir die Ver\"anderung des Fehlers in Abh\"angigkeit der beiden
|
||||||
Parameter bewerten ist der Gradient an der Stelle $(m,n)$ ein
|
Parameter bewerten, ist der Gradient an der Stelle $(m,n)$ ein
|
||||||
zweielementigen Vektor der aus den partiellen Ableitungen nach $m$ und
|
zweielementigen Vektor, der aus den partiellen Ableitungen nach $m$ und
|
||||||
nach $n$ besteht. Die Richtung des Gradienten zeigt die Richtung der
|
nach $n$ besteht. Die Richtung des Gradienten zeigt die Richtung der
|
||||||
gr\"o{\ss}ten Steigung an, seine L\"ange repr\"asentiert die St\"arke
|
gr\"o{\ss}ten Steigung an, seine L\"ange repr\"asentiert die St\"arke
|
||||||
des Gef\"alles.
|
des Gef\"alles.
|
||||||
@ -196,10 +187,10 @@ gelangen sollte man also die entgegengesetzte Richtung einschlagen.
|
|||||||
\end{exercise}
|
\end{exercise}
|
||||||
|
|
||||||
\begin{exercise}{errorGradient.m}{}
|
\begin{exercise}{errorGradient.m}{}
|
||||||
Benutzt die Funktion aus verheriger \"Ubung (\ref{gradientexercise})
|
Benutzt die Funktion aus vorheriger \"Ubung (\ref{gradientexercise}),
|
||||||
um f\"ur die jede Parameterkombination aus der Fehlerfl\"ache
|
um f\"ur die jede Parameterkombination aus der Fehlerfl\"ache
|
||||||
(\"Ubung \ref{errorsurfaceexercise}) auch den Gradienten zu
|
(\"Ubung \ref{errorsurfaceexercise}) auch den Gradienten zu
|
||||||
berechnen und darzustellen. Vektoren im Raum kann man mithilfe der
|
berechnen und darzustellen. Vektoren im Raum k\"onnen mithilfe der
|
||||||
Funktion \code{quiver} geplottet werden.
|
Funktion \code{quiver} geplottet werden.
|
||||||
\end{exercise}
|
\end{exercise}
|
||||||
|
|
||||||
@ -214,21 +205,22 @@ f\"ur den Abstieg lautet:
|
|||||||
\begin{enumerate}
|
\begin{enumerate}
|
||||||
\item Starte mit einer beliebigen Parameterkombination $p_0 = (m_0,
|
\item Starte mit einer beliebigen Parameterkombination $p_0 = (m_0,
|
||||||
n_0)$.
|
n_0)$.
|
||||||
\item Wiederhole die folgenden Schritte solange, wie die der Gradient \"uber einer bestimmten
|
\item \label{computegradient} Berechne den Gradienten an der akutellen Position $p_i$.
|
||||||
Schwelle ist (Es kann z.B. die L\"ange des Gradienten \code{norm(gradient) > 0.1}
|
\item Wenn die L\"ange des Gradienten einen bestimmten Wert
|
||||||
benutzt werden):
|
unterschreitet, haben wir das Minum gefunden und k\"onnen die Suche
|
||||||
\begin{itemize}
|
abbrechen. Wir suchen ja das Minimum, bei dem der Gradient gleich
|
||||||
\item Berechne den Gradienten an der akutellen Position $p_t$.
|
Null ist. Da aus numerischen Gr\"unden der Gradient nie exakt Null
|
||||||
\item Gehe einen kleinen Schritt ($\epsilon = 0.01$) in die entgegensetzte Richtung des
|
werden wird, k\"onnen wir nur fordern, dass er hinreichend klein
|
||||||
Gradienten:
|
wird (z.B. \code{norm(gradient) < 0.1}).
|
||||||
\[p_{t+1} = p_t - \epsilon \cdot \bigtriangledown g(m_t, n_t)\]
|
\item \label{gradientstep} Gehe einen kleinen Schritt ($\epsilon =
|
||||||
\end{itemize}
|
0.01$) in die entgegensetzte Richtung des Gradienten:
|
||||||
|
\[p_{i+1} = p_i - \epsilon \cdot \bigtriangledown g(m_i, n_i)\]
|
||||||
|
\item Wiederhole die Schritte \ref{computegradient} -- \ref{gradientstep}.
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
|
|
||||||
|
|
||||||
Abbildung \ref{gradientdescentfig} zeigt den Verlauf des
|
Abbildung \ref{gradientdescentfig} zeigt den Verlauf des
|
||||||
Gradientenabstiegs. Von einer Startposition aus wird die Position
|
Gradientenabstiegs. Von einer Startposition aus wird die Position
|
||||||
solange ver\"andert, wie der Gradint eine bestimmte Gr\"o{\ss}e
|
solange ver\"andert, wie der Gradient eine bestimmte Gr\"o{\ss}e
|
||||||
\"uberschreitet. An den Stellen, an denen der Gradient sehr stark ist
|
\"uberschreitet. An den Stellen, an denen der Gradient sehr stark ist
|
||||||
ist auch die Ver\"anderung der Position gro{\ss} und der Abstand der
|
ist auch die Ver\"anderung der Position gro{\ss} und der Abstand der
|
||||||
Punkte in Abbildung \ref{gradientdescentfig} gro{\ss}.
|
Punkte in Abbildung \ref{gradientdescentfig} gro{\ss}.
|
||||||
|
Reference in New Issue
Block a user