diff --git a/header.tex b/header.tex index 29852aa..401a3ff 100644 --- a/header.tex +++ b/header.tex @@ -1,7 +1,7 @@ %%%%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \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} %%%% language %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -26,6 +26,7 @@ \usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro %%%%% graphics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{subcaption} \usepackage{graphicx} \usepackage{xcolor} \pagecolor{white} diff --git a/programming/lectures/vectors_matrices.tex b/programming/lectures/vectors_matrices.tex index 50317bf..20652a6 100644 --- a/programming/lectures/vectors_matrices.tex +++ b/programming/lectures/vectors_matrices.tex @@ -10,9 +10,9 @@ genannt.\\ In Wahrheit existiert auch in Matlab kein Unterschied zwischen - beiden Datenstrukturen. Im Hintergrund sind auch Vektoren auch - 2-diemsensionale Matrizen bei denen einen Dimension dir Gr\"o{\ss}e - 1 hat. + beiden Datenstrukturen. Im Hintergrund sind auch Vektoren + 2-diemsensionale Matrizen bei denen eine Dimension die Gr\"o{\ss}e 1 + hat. \end{definition} @@ -20,11 +20,12 @@ Im Gegensatz zu den Variablen, die einzelene Werte beinhalten, 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} - \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 genau einen Wert tragen. \textbf{B)} Ein Vektor kann mehrer Werte des gleichen Datentyps (z.B. ganzzahlige Integer Werte) @@ -33,6 +34,22 @@ beinhalten (Abbildung \ref{vectorfig} B). \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} diff --git a/regression/lecture/linear_regression-slides.tex b/regression/lecture/linear_regression-slides.tex new file mode 100644 index 0000000..2448f16 --- /dev/null +++ b/regression/lecture/linear_regression-slides.tex @@ -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 +{ + \usetheme{Singapore} + \setbeamercovered{opaque} + \usecolortheme{tuebingen} + \setbeamertemplate{navigation symbols}{} + \usefonttheme{default} + \useoutertheme{infolines} + % \useoutertheme{miniframes} +} + +\AtBeginSection[] +{ + \begin{frame} + \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} \ No newline at end of file diff --git a/regression/lecture/linear_regression.tex b/regression/lecture/linear_regression.tex index 2448f16..46e3b95 100644 --- a/regression/lecture/linear_regression.tex +++ b/regression/lecture/linear_regression.tex @@ -1,454 +1,3 @@ -\documentclass{beamer} -\usepackage{xcolor} -\usepackage{listings} -\usepackage{pgf} -%\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade} -%\usepackage{multimedia} +\chapter{\tr{Optimization and Gradient Descent}{Parameteroptimierung und Gradientenabstiegsverfahren}} -\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 -{ - \usetheme{Singapore} - \setbeamercovered{opaque} - \usecolortheme{tuebingen} - \setbeamertemplate{navigation symbols}{} - \usefonttheme{default} - \useoutertheme{infolines} - % \useoutertheme{miniframes} -} - -\AtBeginSection[] -{ - \begin{frame} - \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} \ No newline at end of file diff --git a/scientificcomputing-script.tex b/scientificcomputing-script.tex index 2ae2f22..b48237b 100644 --- a/scientificcomputing-script.tex +++ b/scientificcomputing-script.tex @@ -4,7 +4,7 @@ \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 +\lstset{inputpath=programming/code} +\include{programming/lectures/programming} + \lstset{inputpath=statistics/code} \include{statistics/lecture/statistics} \lstset{inputpath=bootstrap/code} \include{bootstrap/lecture/bootstrap} +\lstset{inputpath=regression/code} +\include{regression/lecture/linear_regression} + \lstset{inputpath=likelihood/code} \include{likelihood/lecture/likelihood} @@ -28,6 +34,10 @@ \renewcommand{\texinputpath}{pointprocesses/lecture/} \include{pointprocesses/lecture/pointprocesses} +lstset{inputpath=spike_trains/code/} +\renewcommand{\texinputpath}{spike_trains/lecture/} +\include{spike_trains/lecture/psth_sta} + \lstset{inputpath=designpattern/code/} \include{designpattern/lecture/designpattern}