Improved indices. Added optional parameter for index to *term* macros.
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
\lstset{inputpath=../code}
|
||||
\graphicspath{{figures/}}
|
||||
|
||||
\setcounter{page}{85}
|
||||
\setcounter{page}{89}
|
||||
\setcounter{chapter}{5}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
@@ -81,7 +81,7 @@ quadratischen Abst\"ande immer positiv, unabh\"angig ob die Datenwerte
|
||||
zus\"atzlich gro{\ss}e Abst\"ande st\"arker gewichtet.
|
||||
|
||||
\begin{exercise}{meanSquareError.m}{}\label{mseexercise}%
|
||||
Schreibe eine Funktion \code{meanSquareError}, die die mittlere
|
||||
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.\newpage
|
||||
@@ -134,16 +134,16 @@ der Fehler \eqnref{mseline} minimal wird.
|
||||
|
||||
\begin{exercise}{lsqError.m}{}
|
||||
Implementiere die Zielfunktion f\"ur die Optimierung mit der
|
||||
linearen Geradengleichung als Funktion \code{lsqError}.
|
||||
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 \code{m} und
|
||||
\code{b} enth\"alt. Das zweite ist ein Vektor mit den $x$-Werten,
|
||||
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
|
||||
\item Die Funktion soll die Funktion \code{meanSquareError()} der
|
||||
vorherigen \"Ubung benutzen.
|
||||
\end{itemize}
|
||||
\end{exercise}
|
||||
@@ -181,12 +181,12 @@ beiden Parameter und auf der $z$-Achse der Fehlerwert aufgetragen
|
||||
|
||||
\begin{exercise}{errorSurface.m}{}\label{errorsurfaceexercise}%
|
||||
Lade den Datensatz \textit{lin\_regression.mat} in den Workspace (20
|
||||
Datenpaare in den Vektoren \code{x} und \code{y}). Schreibe ein Skript
|
||||
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).
|
||||
\code{surf()} Funktion).
|
||||
\end{exercise}
|
||||
|
||||
An der Fehlerfl\"ache kann direkt erkannt werden, bei welcher
|
||||
@@ -310,7 +310,7 @@ partielle Ableitung nach $m$ durch
|
||||
\end{figure}
|
||||
|
||||
\begin{exercise}{lsqGradient.m}{}\label{gradientexercise}%
|
||||
Implementiere eine Funktion \code{lsqGradient}, die den
|
||||
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.
|
||||
@@ -321,7 +321,7 @@ partielle Ableitung nach $m$ durch
|
||||
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.
|
||||
Funktion \code{quiver()} geplottet werden.
|
||||
\end{exercise}
|
||||
|
||||
|
||||
@@ -330,8 +330,8 @@ partielle Ableitung nach $m$ durch
|
||||
Zu guter Letzt muss nur noch der Gradientenabstieg implementiert
|
||||
werden. Die daf\"ur ben\"otigten Zutaten haben wir aus den
|
||||
vorangegangenen \"Ubungen bereits vorbereitet. Wir brauchen: 1. Die Fehlerfunktion
|
||||
(\code{meanSquareError.m}), 2. die Zielfunktion (\code{lsqError.m})
|
||||
und 3. den Gradienten (\code{lsqGradient.m}). Der Algorithmus
|
||||
(\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,
|
||||
@@ -342,7 +342,7 @@ f\"ur den Abstieg lautet:
|
||||
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. \code{norm(gradient) < 0.1}).
|
||||
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)\]
|
||||
@@ -367,7 +367,7 @@ Punkte in Abbildung \ref{gradientdescentfig} gro{\ss}.
|
||||
\begin{exercise}{gradientDescent.m}{}
|
||||
Implementiere den Gradientenabstieg f\"ur das Problem der
|
||||
Parameteranpassung der linearen Geradengleichung an die Messdaten in
|
||||
der Datei \code{lin\_regression.mat}.
|
||||
der Datei \file{lin\_regression.mat}.
|
||||
\begin{enumerate}
|
||||
\item Merke Dir f\"ur jeden Schritt den Fehler zwischen
|
||||
Modellvorhersage und Daten.
|
||||
@@ -388,7 +388,7 @@ 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}.
|
||||
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
|
||||
@@ -401,9 +401,9 @@ 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
|
||||
Kostenfunktionen gemacht \matlabfun{fminsearch()}, w\"ahrend spezielle
|
||||
Funktionen z.B. f\"ur die Minimierung des quadratischen Abstands bei
|
||||
einem Kurvenfit angeboten werden \matlabfun{lsqcurvefit}.
|
||||
einem Kurvenfit angeboten werden \matlabfun{lsqcurvefit()}.
|
||||
|
||||
\begin{important}[Achtung Nebenminima!]
|
||||
Das Finden des globalen Minimums ist leider nur selten so leicht wie
|
||||
|
||||
Reference in New Issue
Block a user