\documentclass[12pt,a4paper,pdftex]{exam}

\usepackage[german]{babel}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[small]{caption}
\usepackage{sidecap}
\usepackage{pslatex}
\usepackage{amsmath}
\usepackage{amssymb}
\setlength{\marginparwidth}{2cm}
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}

%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
\pagestyle{headandfoot} \header{{\bfseries\large \"Ubung
}}{{\bfseries\large Gradientenabstiegsverfahren}}{{\bfseries\large 10. Januar, 2017}}
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
  jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{}

\setlength{\baselineskip}{15pt}
\setlength{\parindent}{0.0cm}
\setlength{\parskip}{0.3cm}
\renewcommand{\baselinestretch}{1.15}

\newcommand{\code}[1]{\texttt{#1}}
\renewcommand{\solutiontitle}{\noindent\textbf{L\"osung:}\par\noindent}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
\begin{document}

\vspace*{-6.5ex}
\begin{center}
  \textbf{\Large Einf\"uhrung in die wissenschaftliche
    Datenverarbeitung}\\[1ex] {\large Jan Grewe, Jan Benda}\\[-3ex]
  Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur
  Neurobiologie \hfill --- \hfill
  \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
\end{center}

\begin{questions}
  \question Implementiere den Gradientenabstieg f\"ur das Problem der
  Parameteranpassung der linearen Geradengleichung an die Messdaten in
  der Datei \emph{lin\_regression.mat}.

  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. \code{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}


  \begin{parts}
    \part Implementiere den Gradientenabstieg und merke Dir f\"ur jeden Schritt
    die Parameterkombination und den zugehörigen Fehler.  
    \part Erstelle einen Plot der die Originaldaten sowie die Vorhersage mit der
    besten Parameterkombination darstellt.
    \part Stelle in einem weiteren Plot die Entwicklung des Fehlers als Funktion der
    Optimierungsschritte dar.
  \end{parts}

\end{questions}

\end{document}