\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} \ifprintanswers \newcommand{\stitle}{: Solutions} \else \newcommand{\stitle}{} \fi \header{{\bfseries\large Exercise 11\stitle}}{{\bfseries\large Gradient descent}}{{\bfseries\large January 9th, 2018}} \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{Solution:}\par\noindent} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \input{instructions} \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}