more vector work and chapter stubs
This commit is contained in:
parent
4dd848f7ce
commit
9c7664128f
@ -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}
|
||||||
|
@ -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}
|
||||||
|
|
||||||
|
|
||||||
|
454
regression/lecture/linear_regression-slides.tex
Normal file
454
regression/lecture/linear_regression-slides.tex
Normal 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}
|
@ -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}
|
|
@ -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}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user