more vector work and chapter stubs

This commit is contained in:
Jan Grewe 2015-11-02 00:14:16 +01:00
parent 4dd848f7ce
commit 9c7664128f
5 changed files with 490 additions and 459 deletions

View File

@ -1,7 +1,7 @@
%%%%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{\tr{Introduction to Scientific Computing}{Einf\"uhrung in die wissenschaftliche Datenverarbeitung}} \title{\tr{Introduction to Scientific Computing}{Einf\"uhrung in die wissenschaftliche Datenverarbeitung}}
\author{Jan Benda\\Abteilung Neuroethologie\\[2ex]\includegraphics[width=0.3\textwidth]{UT_WBMW_Rot_RGB}} \author{Jan Benda, Jan Grewe\\Abteilung Neuroethologie\\[2ex]\includegraphics[width=0.3\textwidth]{UT_WBMW_Rot_RGB}}
\date{WS 15/16} \date{WS 15/16}
%%%% language %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% language %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -26,6 +26,7 @@
\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro \usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro
%%%%% graphics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% graphics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{subcaption}
\usepackage{graphicx} \usepackage{graphicx}
\usepackage{xcolor} \usepackage{xcolor}
\pagecolor{white} \pagecolor{white}

View File

@ -10,9 +10,9 @@
genannt.\\ genannt.\\
In Wahrheit existiert auch in Matlab kein Unterschied zwischen In Wahrheit existiert auch in Matlab kein Unterschied zwischen
beiden Datenstrukturen. Im Hintergrund sind auch Vektoren auch beiden Datenstrukturen. Im Hintergrund sind auch Vektoren
2-diemsensionale Matrizen bei denen einen Dimension dir Gr\"o{\ss}e 2-diemsensionale Matrizen bei denen eine Dimension die Gr\"o{\ss}e 1
1 hat. hat.
\end{definition} \end{definition}
@ -20,11 +20,12 @@
Im Gegensatz zu den Variablen, die einzelene Werte beinhalten, Im Gegensatz zu den Variablen, die einzelene Werte beinhalten,
Skalare, kann ein Vektor mehrere Werte des gleichen Datentyps Skalare, kann ein Vektor mehrere Werte des gleichen Datentyps
beinhalten (Abbildung \ref{vectorfig} B). beinhalten (Abbildung \ref{vectorfig} B). Die Variable ``test''
enth\"alt in diesem Beispiel vier ganzzahlige Werte.
\begin{figure} \begin{figure}
\includegraphics[width=0.8\columnwidth]{images/scalarArray} \includegraphics[width=0.8\columnwidth]{programming/lectures/images/scalarArray}
\caption{\textbf{Skalare und Vektoren. A)} Eine skalare Variable kann \caption{\textbf{Skalare und Vektoren. A)} Eine skalare Variable kann
genau einen Wert tragen. \textbf{B)} Ein Vektor kann mehrer genau einen Wert tragen. \textbf{B)} Ein Vektor kann mehrer
Werte des gleichen Datentyps (z.B. ganzzahlige Integer Werte) Werte des gleichen Datentyps (z.B. ganzzahlige Integer Werte)
@ -33,6 +34,22 @@ beinhalten (Abbildung \ref{vectorfig} B).
\end{figure} \end{figure}
\footnotesize
\begin{lstlisting}[label=arrayListing1]
>> a = [0 1 2 3 4 5 6 7 8 9] % Erstellen eines Zeilenvektors
a =
0 1 2 3 4 5 6 7 8 9
>>
>> b = (0:9) % etwas bequemer
b =
0 1 2 3 4 5 6 7 8 9
>>
>> c = (0:2:10)
c =
0 2 4 6 8 10
\end{lstlisting}
\normalsize
\subsection{Unterscheidung Zeilen- und Spaltenvektoren} \subsection{Unterscheidung Zeilen- und Spaltenvektoren}

View File

@ -0,0 +1,454 @@
\documentclass{beamer}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{pgf}
%\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade}
%\usepackage{multimedia}
\usepackage[english]{babel}
\usepackage{movie15}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage{amsmath}
\usepackage{bm}
\usepackage[T1]{fontenc}
\usepackage[scaled=.90]{helvet}
\usepackage{scalefnt}
\usepackage{tikz}
\usepackage{ textcomp }
\usepackage{soul}
\usepackage{hyperref}
\definecolor{lightblue}{rgb}{.7,.7,1.}
\definecolor{mygreen}{rgb}{0,1.,0}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\mode<presentation>
{
\usetheme{Singapore}
\setbeamercovered{opaque}
\usecolortheme{tuebingen}
\setbeamertemplate{navigation symbols}{}
\usefonttheme{default}
\useoutertheme{infolines}
% \useoutertheme{miniframes}
}
\AtBeginSection[]
{
\begin{frame}<beamer>
\begin{center}
\Huge \insertsectionhead
\end{center}
% \frametitle{\insertsectionhead}
% \tableofcontents[currentsection,hideothersubsections]
\end{frame}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
\setbeamertemplate{blocks}[rounded][shadow=true]
\title[]{Scientific Computing -- Statistik}
\author[]{Jan Grewe, Fabian Sinz\\Abteilung f\"ur Neuroethologie\\
Universit\"at T\"ubingen}
\institute[Wissenschaftliche Datenverarbeitung]{}
\date{12.10.2015 - 06.11.2015}
%\logo{\pgfuseimage{../../resources/UT_BM_Rot_RGB.pdf}}
\subject{Einf\"uhrung in die wissenschaftliche Datenverarbeitung}
\vspace{1em}
\titlegraphic{
\includegraphics[width=0.5\linewidth]{../../resources/UT_WBMW_Rot_RGB}
}
%%%%%%%%%% configuration for code
\lstset{
basicstyle=\ttfamily,
numbers=left,
showstringspaces=false,
language=Matlab,
commentstyle=\itshape\color{darkgray},
keywordstyle=\color{blue},
stringstyle=\color{green},
backgroundcolor=\color{blue!10},
breaklines=true,
breakautoindent=true,
columns=flexible,
frame=single,
captionpos=b,
xleftmargin=1em,
xrightmargin=1em,
aboveskip=10pt
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\mycite}[1]{
\begin{flushright}
\tiny \color{black!80} #1
\end{flushright}
}
\newcommand{\code}[1]{\texttt{#1}}
\input{../../latex/environments.tex}
\makeatother
\begin{document}
\begin{frame}[plain]
\frametitle{}
\vspace{-1cm}
\titlepage % erzeugt Titelseite
\end{frame}
\begin{frame}[plain]
\huge{Curve Fitting/Optimierung mit dem Gradientenabstiegsverfahren}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{\"Ubersicht}
\begin{enumerate}
\item Das Problem: Wir haben beobachtete Daten und ein Modell, das die Daten erkl\"aren soll.
\item Wie finden wir die Parameter (des Modells), die die Daten am Besten erkl\"aren?
\item L\"osung: Anpassen der Parameter an die Daten (Fitting).
\item Wie macht man das?
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Ein 1-D Beispiel}
\begin{columns}
\begin{column}{6.25cm}
\begin{figure}
\includegraphics[width=1.\columnwidth]{figures/one_d_problem_a.pdf}
\end{figure}
\end{column}
\begin{column}{6.5cm}
\begin{itemize}
\item z.B. eine Reihe Me{\ss}werte bei einer Bedingung.
\item Ich suche den y-Wert, der die Daten am besten
repr\"asentiert.
\item F\"ur jeden m\"oglichen y-Wert wird die mittlere
quadratische Abweichung zu allen Daten berechnet:\\
\[ error = \frac{1}{N}\sum_{i=1}^{N}(y_i - y_{test})^2 \]
\end{itemize}
\end{column}
\end{columns}\pause
Wie finde ich den besten Wert heraus?
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Ein 1-D Beispiel}
\only<1> {
\begin{columns}
\begin{column}{4.5cm}
\begin{figure}
\includegraphics[width=1.\columnwidth]{figures/one_d_problem_b.pdf}
\end{figure}
\end{column}
\begin{column}{8cm}
\begin{itemize}
\item Man folgt dem Gradienten!
\item Der Gradient kann numerisch berechnet werden indem man ein
(sehr kleines) ``Steigungsdreieck'' an den Positionen anlegt.\\ \vspace{0.25cm}
$\frac{\Delta error}{\Delta y} = \frac{error(y+h) - error(y)}{h}$
\end{itemize}
\end{column}
\end{columns}
}
\only<2>{
\begin{columns}
\begin{column}{4.5cm}
\begin{figure}
\includegraphics[width=1.\columnwidth]{figures/one_d_problem_c.pdf}
\end{figure}
\end{column}
\begin{column}{8cm}
\begin{itemize}
\item Man folgt dem Gradienten!
\item Der Gradient kann numerisch berechnet werden indem man ein
(sehr kleines) ``Steigungsdreieck'' an den Positionen anlegt.\\ \vspace{0.25cm}
$\frac{\Delta error}{\Delta y} = \frac{error(y+h) - error(y)}{h}$
\item Da, wo der Gradient seine Nullstelle hat, liegt der beste y-Wert.
\end{itemize}
\end{column}
\end{columns}
}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression}
\only<1-2> {
\begin{figure}
\includegraphics[width=0.45\columnwidth]{figures/lin_regress.pdf}
\end{figure}
}
\only<2>{
Nehmen wir mal einen linearen Zusammenhang zwischen \textit{Input}
und \textit{Output} an. ($y = m\cdot x + n$)
}
\only<3> {
Ver\"anderung der Steigung:
\begin{figure}
\includegraphics[width=0.45\columnwidth]{figures/lin_regress_slope.pdf}
\end{figure}
}
\only<4> {
Ver\"anderung des y-Achsenabschnitts:
\begin{figure}
\includegraphics[width=0.45\columnwidth]{figures/lin_regress_abscissa.pdf}
\end{figure}
}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regresssion}
\huge{Welche Kombination ist die richtige?}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichung}
\begin{columns}
\begin{column}{4.5cm}
\begin{figure}
\includegraphics[width=\columnwidth]{figures/linear_least_squares.pdf}
\end{figure}
\footnotesize{\url{http://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)}}
\end{column}
\begin{column}{7cm}
\begin{enumerate}
\item Die am h\"aufigstern Angewandte Methode ist die der
kleinsten quadratischen Abweichungen.
\item Es wird versucht die Summe der quadratischen Abweichung zu
minimieren.
\end{enumerate}
\[g(m,n) = \frac{1}{N}\sum^{N}_{1=1} \left( y_i - f_{m, n}(x_i)\right )^2\]
\end{column}
\end{columns}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichun}
\begin{itemize}
\item Was heisst das: Minimieren der Summe der kleinsten
quadratischen Abweichungen?
\item Kann man einen Algortihmus zur L\"osung des Problems
erstellen?
\item Kann man das visualisieren?
\end{itemize}\pause
\begin{columns}
\begin{column}{5.5cm}
\tiny
\begin{lstlisting}
x_range = linspace(-1, 1, 20);
y_range = linspace(-5, 5, 20);
[X, Y] = meshgrid(x_range, y_range);
Z = X.^2 + Y.^2;
surf(X, Y, Z);
colormap('autumn')
xlabel('x')
ylabel('y')
zlabel('z')
\end{lstlisting}
\end{column}
\begin{column}{5.5cm}
\begin{figure}
\includegraphics[width=0.9\columnwidth]{figures/surface.pdf}
\end{figure}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichung}
\textbf{Aufgabe}
\begin{enumerate}
\item Ladet den Datensatz \textit{lin\_regression.mat} in den
Workspace. Wie sehen die Daten aus?
\item Schreibt eine Funktion \code{lsq\_error}, die den Fehler
brechnet:
\begin{itemize}
\item \"Ubernimmt einen 2-elementigen Vektor, der die Parameter
\code{m} und \code{n} enth\"alt, die x-Werte und y-Werte.
\item Die Funktion gibt den Fehler zur\"uck.
\end{itemize}
\item Schreibt ein Skript dass den Fehler in Abh\"angigkeit von
\code{m} und \code{n} als surface plot darstellt (\code{surf}
Funktion).
\item Wie k\"onnen wir diesen Plot benutzen um die beste Kombination
zu finden?
\item Wo lieft die beste Kombination?
\end{enumerate}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichung}
\begin{itemize}
\item Wie findet man die Extrempunkte in einer Kurve?\pause
\item Ableitung der Funktion auf Null setzen und nach x aufl\"osen.
\item Definition der Ableitung:\\ \vspace{0.25cm}
\begin{center}
$ f'(x) = \lim\limits_{h \rightarrow 0} \frac{f(x + h) - f(x)}{h} $
\vspace{0.25cm}\pause
\end{center}
\item Bei zwei Parametern $g(m,n)$ k\"onnen wie die partielle
Ableitung bez\"uglich eines Parameters benutzen um die
Ver\"anderung des Fehlers bei Ver\"anderung eines Parameters
auszuwerten.
\item Partielle Ableitung nach \code{m}?\\\pause
\vspace{0.25cm}
\begin{center}
$\frac{\partial g(m,n)}{\partial m} = \lim\limits_{h \rightarrow 0} \frac{g(m + h, n) - g(m,n)}{h}$
\vspace{0.25cm}
\end{center}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Gradientenabstieg}
\large{Der Gradient:}
\begin{center}
$\bigtriangledown g(m,n) = \left( \frac{\partial g(m,n)}{\partial m}, \frac{\partial g(m,n)}{\partial n}\right)$
\end{center}
Ist der Vektor mit den partiellen Ableitungen nach \code{m} und
\code{n}.
\pause Numerisch kann die Ableitung durch einen sehr kleinen Schritt
angen\"ahert werden.
\begin{center}
$\frac{\partial g(m,n)}{\partial m} = \lim\limits_{h \rightarrow
0} \frac{g(m + h, n) - g(m,n)}{h} \approx \frac{g(m + h, n) -
g(m,n)}{h}$
\end{center}
f\"ur sehr kleine Schritte \code{h}.
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Gradientenabstieg}
Plotten des Gradientenfeldes:
\begin{itemize}
\item Ladet die Daten in \code{lin\_regession.mat}.
\item Schreibt eine Funktion \code{lsq\_gradient.m} in dem gleichen
Muster wie \code{lsq\_error.m}. Die Funktion berechnet
den Gradienten an einer Position (Kombination von Parametern),
wenn ein kleiner Schritt gemacht wird (\code{h=1e-6;}).
\item Variiert \code{m} im Bereich von -2 bis +5 und \code{n} im
Bereich -10 bis 10.
\item Plottet die Fehlerfl\"ache als \code{surface} und
\code{contour} plot in die gleiche Abbildung.
\item F\"ugt die Gradienten als \code{quiver} plot hinzu.
\item Was sagen die Pfeile? Wie passen Pfeile und Fl\"ache zusammen?
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Gradientenabstieg}
\begin{itemize}
\item Der Gradient zeigt in die Richtung des gr\"o{\ss}ten \textbf{Anstiegs}. \pause
\item Wie kann der Gradient nun dazu genutzt werden zum Minimum zu kommen?\pause
\item \textbf{Man nehme: $-\bigtriangledown g(m,n)$!}\pause
\vspace{0.25cm}
\item Wir haben jetzt alle Zutaten um den Gradientenabstieg zu formulieren.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Gradientenabstieg - Algorithums}
\begin{enumerate}
\item Starte mit einer beliebigen Parameterkombination $p_0 = (m_0,
n_0)$.
\item Wiederhole solange wie die der Gradient \"uber einer
bestimmten Schwelle ist:
\begin{itemize}
\item Berechne den Gradienten an der akutellen Position $p_t$.
\item Gehe einen kleinen Schritt in die entgegensetzte Richtung des
Gradienten:\\
\begin{center}
$p_{t+1} = p_t - \epsilon \cdot \bigtriangledown g(m_t, n_t)$
\end{center}
wobei $\epsilon$ eine kleine Zahl (0.01) ist.
\end{itemize}
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Gradientenabstieg - \"Ubung}
\begin{enumerate}
\item Implementiert den Grandientenabstieg f\"ur das Fitten der
linearen Geradengleichung an die Daten.
\item Plottet f\"ur jeden Schritt den surface plot und die aktuelle
Position als roten Punkt (nutzt \code{plot3}).
\item Plottet f\"ur jeden Schritt den Fit in einen separaten plot.
\item Nutzt \code{pause(0.1)} nach jedem Schritt um die Entwicklung
des Fits zu beobachten.
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Gradientenabstieg - \"Ubung II}
\begin{columns}
\begin{column}{6cm}
\begin{figure}
\includegraphics[width=1\columnwidth]{figures/charging_curve.pdf}
\end{figure}
\end{column}
\begin{column}{7cm}
\begin{itemize}
\item Ladet die Daten aus der \code{membraneVoltage.mat}.
\item Plottet die Rohdaten.
\item Fittet folgende Funktion an die Daten:\\
\begin{center}
$f_{A,\tau}(t) = A \cdot \left(1 - e^{-\frac{t}{\tau}}\right )$
\end{center}
\item An welcher Stelle muss der Code von oben ver\"andert
werden?
\item Plottet die Daten zusammen mit dem Fit.
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Fitting mit Matlab}
\begin{itemize}
\item Es gibt mehrere Funktionen in Matlab, die eine Optimierung
automatisch durchf\"uhren.
\item z.B. \code{fminunc, lsqcurvefit, fminsearch, lsqnonlin, ...}
\item Einige der Funktionen stecken allerdings in der
\textit{Optimization Toolbox}, die nicht zum Standard Matlab
geh\"ort.
\end{itemize}
\begin{lstlisting}
function param = estimated_regression(x, y, start_parameter)
objective_function = @(p)(lsq_error(p, x, y));
param = fminunc(objective_function, start_parameter)
\end{lstlisting}
\end{frame}
\end{document}

View File

@ -1,454 +1,3 @@
\documentclass{beamer} \chapter{\tr{Optimization and Gradient Descent}{Parameteroptimierung und Gradientenabstiegsverfahren}}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{pgf}
%\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade}
%\usepackage{multimedia}
\usepackage[english]{babel}
\usepackage{movie15}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage{amsmath}
\usepackage{bm}
\usepackage[T1]{fontenc}
\usepackage[scaled=.90]{helvet}
\usepackage{scalefnt}
\usepackage{tikz}
\usepackage{ textcomp }
\usepackage{soul}
\usepackage{hyperref}
\definecolor{lightblue}{rgb}{.7,.7,1.}
\definecolor{mygreen}{rgb}{0,1.,0}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\mode<presentation>
{
\usetheme{Singapore}
\setbeamercovered{opaque}
\usecolortheme{tuebingen}
\setbeamertemplate{navigation symbols}{}
\usefonttheme{default}
\useoutertheme{infolines}
% \useoutertheme{miniframes}
}
\AtBeginSection[]
{
\begin{frame}<beamer>
\begin{center}
\Huge \insertsectionhead
\end{center}
% \frametitle{\insertsectionhead}
% \tableofcontents[currentsection,hideothersubsections]
\end{frame}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
\setbeamertemplate{blocks}[rounded][shadow=true]
\title[]{Scientific Computing -- Statistik}
\author[]{Jan Grewe, Fabian Sinz\\Abteilung f\"ur Neuroethologie\\
Universit\"at T\"ubingen}
\institute[Wissenschaftliche Datenverarbeitung]{}
\date{12.10.2015 - 06.11.2015}
%\logo{\pgfuseimage{../../resources/UT_BM_Rot_RGB.pdf}}
\subject{Einf\"uhrung in die wissenschaftliche Datenverarbeitung}
\vspace{1em}
\titlegraphic{
\includegraphics[width=0.5\linewidth]{../../resources/UT_WBMW_Rot_RGB}
}
%%%%%%%%%% configuration for code
\lstset{
basicstyle=\ttfamily,
numbers=left,
showstringspaces=false,
language=Matlab,
commentstyle=\itshape\color{darkgray},
keywordstyle=\color{blue},
stringstyle=\color{green},
backgroundcolor=\color{blue!10},
breaklines=true,
breakautoindent=true,
columns=flexible,
frame=single,
captionpos=b,
xleftmargin=1em,
xrightmargin=1em,
aboveskip=10pt
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\mycite}[1]{
\begin{flushright}
\tiny \color{black!80} #1
\end{flushright}
}
\newcommand{\code}[1]{\texttt{#1}}
\input{../../latex/environments.tex}
\makeatother
\begin{document}
\begin{frame}[plain]
\frametitle{}
\vspace{-1cm}
\titlepage % erzeugt Titelseite
\end{frame}
\begin{frame}[plain]
\huge{Curve Fitting/Optimierung mit dem Gradientenabstiegsverfahren}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{\"Ubersicht}
\begin{enumerate}
\item Das Problem: Wir haben beobachtete Daten und ein Modell, das die Daten erkl\"aren soll.
\item Wie finden wir die Parameter (des Modells), die die Daten am Besten erkl\"aren?
\item L\"osung: Anpassen der Parameter an die Daten (Fitting).
\item Wie macht man das?
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Ein 1-D Beispiel}
\begin{columns}
\begin{column}{6.25cm}
\begin{figure}
\includegraphics[width=1.\columnwidth]{figures/one_d_problem_a.pdf}
\end{figure}
\end{column}
\begin{column}{6.5cm}
\begin{itemize}
\item z.B. eine Reihe Me{\ss}werte bei einer Bedingung.
\item Ich suche den y-Wert, der die Daten am besten
repr\"asentiert.
\item F\"ur jeden m\"oglichen y-Wert wird die mittlere
quadratische Abweichung zu allen Daten berechnet:\\
\[ error = \frac{1}{N}\sum_{i=1}^{N}(y_i - y_{test})^2 \]
\end{itemize}
\end{column}
\end{columns}\pause
Wie finde ich den besten Wert heraus?
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Ein 1-D Beispiel}
\only<1> {
\begin{columns}
\begin{column}{4.5cm}
\begin{figure}
\includegraphics[width=1.\columnwidth]{figures/one_d_problem_b.pdf}
\end{figure}
\end{column}
\begin{column}{8cm}
\begin{itemize}
\item Man folgt dem Gradienten!
\item Der Gradient kann numerisch berechnet werden indem man ein
(sehr kleines) ``Steigungsdreieck'' an den Positionen anlegt.\\ \vspace{0.25cm}
$\frac{\Delta error}{\Delta y} = \frac{error(y+h) - error(y)}{h}$
\end{itemize}
\end{column}
\end{columns}
}
\only<2>{
\begin{columns}
\begin{column}{4.5cm}
\begin{figure}
\includegraphics[width=1.\columnwidth]{figures/one_d_problem_c.pdf}
\end{figure}
\end{column}
\begin{column}{8cm}
\begin{itemize}
\item Man folgt dem Gradienten!
\item Der Gradient kann numerisch berechnet werden indem man ein
(sehr kleines) ``Steigungsdreieck'' an den Positionen anlegt.\\ \vspace{0.25cm}
$\frac{\Delta error}{\Delta y} = \frac{error(y+h) - error(y)}{h}$
\item Da, wo der Gradient seine Nullstelle hat, liegt der beste y-Wert.
\end{itemize}
\end{column}
\end{columns}
}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression}
\only<1-2> {
\begin{figure}
\includegraphics[width=0.45\columnwidth]{figures/lin_regress.pdf}
\end{figure}
}
\only<2>{
Nehmen wir mal einen linearen Zusammenhang zwischen \textit{Input}
und \textit{Output} an. ($y = m\cdot x + n$)
}
\only<3> {
Ver\"anderung der Steigung:
\begin{figure}
\includegraphics[width=0.45\columnwidth]{figures/lin_regress_slope.pdf}
\end{figure}
}
\only<4> {
Ver\"anderung des y-Achsenabschnitts:
\begin{figure}
\includegraphics[width=0.45\columnwidth]{figures/lin_regress_abscissa.pdf}
\end{figure}
}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regresssion}
\huge{Welche Kombination ist die richtige?}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichung}
\begin{columns}
\begin{column}{4.5cm}
\begin{figure}
\includegraphics[width=\columnwidth]{figures/linear_least_squares.pdf}
\end{figure}
\footnotesize{\url{http://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)}}
\end{column}
\begin{column}{7cm}
\begin{enumerate}
\item Die am h\"aufigstern Angewandte Methode ist die der
kleinsten quadratischen Abweichungen.
\item Es wird versucht die Summe der quadratischen Abweichung zu
minimieren.
\end{enumerate}
\[g(m,n) = \frac{1}{N}\sum^{N}_{1=1} \left( y_i - f_{m, n}(x_i)\right )^2\]
\end{column}
\end{columns}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichun}
\begin{itemize}
\item Was heisst das: Minimieren der Summe der kleinsten
quadratischen Abweichungen?
\item Kann man einen Algortihmus zur L\"osung des Problems
erstellen?
\item Kann man das visualisieren?
\end{itemize}\pause
\begin{columns}
\begin{column}{5.5cm}
\tiny
\begin{lstlisting}
x_range = linspace(-1, 1, 20);
y_range = linspace(-5, 5, 20);
[X, Y] = meshgrid(x_range, y_range);
Z = X.^2 + Y.^2;
surf(X, Y, Z);
colormap('autumn')
xlabel('x')
ylabel('y')
zlabel('z')
\end{lstlisting}
\end{column}
\begin{column}{5.5cm}
\begin{figure}
\includegraphics[width=0.9\columnwidth]{figures/surface.pdf}
\end{figure}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichung}
\textbf{Aufgabe}
\begin{enumerate}
\item Ladet den Datensatz \textit{lin\_regression.mat} in den
Workspace. Wie sehen die Daten aus?
\item Schreibt eine Funktion \code{lsq\_error}, die den Fehler
brechnet:
\begin{itemize}
\item \"Ubernimmt einen 2-elementigen Vektor, der die Parameter
\code{m} und \code{n} enth\"alt, die x-Werte und y-Werte.
\item Die Funktion gibt den Fehler zur\"uck.
\end{itemize}
\item Schreibt ein Skript dass den Fehler in Abh\"angigkeit von
\code{m} und \code{n} als surface plot darstellt (\code{surf}
Funktion).
\item Wie k\"onnen wir diesen Plot benutzen um die beste Kombination
zu finden?
\item Wo lieft die beste Kombination?
\end{enumerate}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Methode der kleinsten quadratischen Abweichung}
\begin{itemize}
\item Wie findet man die Extrempunkte in einer Kurve?\pause
\item Ableitung der Funktion auf Null setzen und nach x aufl\"osen.
\item Definition der Ableitung:\\ \vspace{0.25cm}
\begin{center}
$ f'(x) = \lim\limits_{h \rightarrow 0} \frac{f(x + h) - f(x)}{h} $
\vspace{0.25cm}\pause
\end{center}
\item Bei zwei Parametern $g(m,n)$ k\"onnen wie die partielle
Ableitung bez\"uglich eines Parameters benutzen um die
Ver\"anderung des Fehlers bei Ver\"anderung eines Parameters
auszuwerten.
\item Partielle Ableitung nach \code{m}?\\\pause
\vspace{0.25cm}
\begin{center}
$\frac{\partial g(m,n)}{\partial m} = \lim\limits_{h \rightarrow 0} \frac{g(m + h, n) - g(m,n)}{h}$
\vspace{0.25cm}
\end{center}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Gradientenabstieg}
\large{Der Gradient:}
\begin{center}
$\bigtriangledown g(m,n) = \left( \frac{\partial g(m,n)}{\partial m}, \frac{\partial g(m,n)}{\partial n}\right)$
\end{center}
Ist der Vektor mit den partiellen Ableitungen nach \code{m} und
\code{n}.
\pause Numerisch kann die Ableitung durch einen sehr kleinen Schritt
angen\"ahert werden.
\begin{center}
$\frac{\partial g(m,n)}{\partial m} = \lim\limits_{h \rightarrow
0} \frac{g(m + h, n) - g(m,n)}{h} \approx \frac{g(m + h, n) -
g(m,n)}{h}$
\end{center}
f\"ur sehr kleine Schritte \code{h}.
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Gradientenabstieg}
Plotten des Gradientenfeldes:
\begin{itemize}
\item Ladet die Daten in \code{lin\_regession.mat}.
\item Schreibt eine Funktion \code{lsq\_gradient.m} in dem gleichen
Muster wie \code{lsq\_error.m}. Die Funktion berechnet
den Gradienten an einer Position (Kombination von Parametern),
wenn ein kleiner Schritt gemacht wird (\code{h=1e-6;}).
\item Variiert \code{m} im Bereich von -2 bis +5 und \code{n} im
Bereich -10 bis 10.
\item Plottet die Fehlerfl\"ache als \code{surface} und
\code{contour} plot in die gleiche Abbildung.
\item F\"ugt die Gradienten als \code{quiver} plot hinzu.
\item Was sagen die Pfeile? Wie passen Pfeile und Fl\"ache zusammen?
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Lineare Regression - Gradientenabstieg}
\begin{itemize}
\item Der Gradient zeigt in die Richtung des gr\"o{\ss}ten \textbf{Anstiegs}. \pause
\item Wie kann der Gradient nun dazu genutzt werden zum Minimum zu kommen?\pause
\item \textbf{Man nehme: $-\bigtriangledown g(m,n)$!}\pause
\vspace{0.25cm}
\item Wir haben jetzt alle Zutaten um den Gradientenabstieg zu formulieren.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Gradientenabstieg - Algorithums}
\begin{enumerate}
\item Starte mit einer beliebigen Parameterkombination $p_0 = (m_0,
n_0)$.
\item Wiederhole solange wie die der Gradient \"uber einer
bestimmten Schwelle ist:
\begin{itemize}
\item Berechne den Gradienten an der akutellen Position $p_t$.
\item Gehe einen kleinen Schritt in die entgegensetzte Richtung des
Gradienten:\\
\begin{center}
$p_{t+1} = p_t - \epsilon \cdot \bigtriangledown g(m_t, n_t)$
\end{center}
wobei $\epsilon$ eine kleine Zahl (0.01) ist.
\end{itemize}
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Gradientenabstieg - \"Ubung}
\begin{enumerate}
\item Implementiert den Grandientenabstieg f\"ur das Fitten der
linearen Geradengleichung an die Daten.
\item Plottet f\"ur jeden Schritt den surface plot und die aktuelle
Position als roten Punkt (nutzt \code{plot3}).
\item Plottet f\"ur jeden Schritt den Fit in einen separaten plot.
\item Nutzt \code{pause(0.1)} nach jedem Schritt um die Entwicklung
des Fits zu beobachten.
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Fitting und Optimierung}
\framesubtitle{Gradientenabstieg - \"Ubung II}
\begin{columns}
\begin{column}{6cm}
\begin{figure}
\includegraphics[width=1\columnwidth]{figures/charging_curve.pdf}
\end{figure}
\end{column}
\begin{column}{7cm}
\begin{itemize}
\item Ladet die Daten aus der \code{membraneVoltage.mat}.
\item Plottet die Rohdaten.
\item Fittet folgende Funktion an die Daten:\\
\begin{center}
$f_{A,\tau}(t) = A \cdot \left(1 - e^{-\frac{t}{\tau}}\right )$
\end{center}
\item An welcher Stelle muss der Code von oben ver\"andert
werden?
\item Plottet die Daten zusammen mit dem Fit.
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}[fragile]
\frametitle{Fitting und Optimierung}
\framesubtitle{Fitting mit Matlab}
\begin{itemize}
\item Es gibt mehrere Funktionen in Matlab, die eine Optimierung
automatisch durchf\"uhren.
\item z.B. \code{fminunc, lsqcurvefit, fminsearch, lsqnonlin, ...}
\item Einige der Funktionen stecken allerdings in der
\textit{Optimization Toolbox}, die nicht zum Standard Matlab
geh\"ort.
\end{itemize}
\begin{lstlisting}
function param = estimated_regression(x, y, start_parameter)
objective_function = @(p)(lsq_error(p, x, y));
param = fminunc(objective_function, start_parameter)
\end{lstlisting}
\end{frame}
\end{document}

View File

@ -4,7 +4,7 @@
\setcounter{maxexercise}{10000} % show listings up to exercise maxexercise \setcounter{maxexercise}{10000} % show listings up to exercise maxexercise
\graphicspath{{statistics/lecture/}{statistics/lecture/figures/}{bootstrap/lecture/}{bootstrap/lecture/figures/}{likelihood/lecture/}{likelihood/lecture/figures/}{pointprocesses/lecture/}{pointprocesses/lecture/figures/}} \graphicspath{{statistics/lecture/}{statistics/lecture/figures/}{bootstrap/lecture/}{bootstrap/lecture/figures/}{likelihood/lecture/}{likelihood/lecture/figures/}{pointprocesses/lecture/}{pointprocesses/lecture/figures/}{programming/lectures/images/}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -15,12 +15,18 @@
\tableofcontents \tableofcontents
\lstset{inputpath=programming/code}
\include{programming/lectures/programming}
\lstset{inputpath=statistics/code} \lstset{inputpath=statistics/code}
\include{statistics/lecture/statistics} \include{statistics/lecture/statistics}
\lstset{inputpath=bootstrap/code} \lstset{inputpath=bootstrap/code}
\include{bootstrap/lecture/bootstrap} \include{bootstrap/lecture/bootstrap}
\lstset{inputpath=regression/code}
\include{regression/lecture/linear_regression}
\lstset{inputpath=likelihood/code} \lstset{inputpath=likelihood/code}
\include{likelihood/lecture/likelihood} \include{likelihood/lecture/likelihood}
@ -28,6 +34,10 @@
\renewcommand{\texinputpath}{pointprocesses/lecture/} \renewcommand{\texinputpath}{pointprocesses/lecture/}
\include{pointprocesses/lecture/pointprocesses} \include{pointprocesses/lecture/pointprocesses}
lstset{inputpath=spike_trains/code/}
\renewcommand{\texinputpath}{spike_trains/lecture/}
\include{spike_trains/lecture/psth_sta}
\lstset{inputpath=designpattern/code/} \lstset{inputpath=designpattern/code/}
\include{designpattern/lecture/designpattern} \include{designpattern/lecture/designpattern}