2019-07-08 21:18:31 +02:00
|
|
|
|
\PassOptionsToPackage{table}{xcolor}
|
2019-07-12 21:08:49 +02:00
|
|
|
|
\documentclass{custombeamer}
|
2019-07-08 21:18:31 +02:00
|
|
|
|
|
|
|
|
|
\usepackage[ngerman]{babel}
|
|
|
|
|
|
|
|
|
|
\usepackage{biblatex}
|
|
|
|
|
\nocite{*}
|
|
|
|
|
\addbibresource{sources.bib}
|
|
|
|
|
|
|
|
|
|
\usetikzlibrary{decorations.pathreplacing, positioning}
|
|
|
|
|
|
|
|
|
|
\usepackage[thinlines]{easytable}
|
|
|
|
|
|
|
|
|
|
\title{Machine Learning}
|
|
|
|
|
\subtitle{Eine Einführung}
|
|
|
|
|
\author{Simon Bruder}
|
|
|
|
|
%\titlegraphic{\includegraphics[scale=1.25]{focuslogo.pdf}}
|
|
|
|
|
\institute{Christian-von-Bomhard-Schule}
|
|
|
|
|
\usepackage{datetime}
|
|
|
|
|
\newdate{date}{09}{07}{2019}
|
|
|
|
|
\date{\displaydate{date}}
|
|
|
|
|
|
|
|
|
|
\begin{document}
|
|
|
|
|
\begin{frame}
|
|
|
|
|
\maketitle
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
|
\begin{frame}[noframenumbering]
|
|
|
|
|
\tableofcontents
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
|
\section{Einsatzgebiete}
|
|
|
|
|
\begin{frame}{Einsatzgebiete}
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item{Computerspiele-»KI«}
|
|
|
|
|
\item{Medizinische Diagnostik}
|
|
|
|
|
\item{Personalisierte Werbung}
|
|
|
|
|
\item{Selbstfahrende Autos}
|
|
|
|
|
\item{Spracherkennung}
|
|
|
|
|
\end{itemize}
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
|
\section{Praxis: Tic Tac Toe}
|
|
|
|
|
\begin{frame}{Tic Tac Toe}
|
|
|
|
|
\begin{minipage}[t]{.5\textwidth}
|
|
|
|
|
\textbf{Lernen}
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item{Computer weiß nur, wann das Spiel gewonnen ist}
|
|
|
|
|
\item{\textbf{Generator} gibt zufällige Züge zurück}
|
|
|
|
|
\item{Wenn gewonnen: \textbf{Diskriminator} wertet Züge von Gewinner auf, Züge von Verlierer ab}
|
|
|
|
|
\end{itemize}
|
|
|
|
|
\end{minipage}%
|
|
|
|
|
\begin{minipage}[t]{.5\textwidth}
|
|
|
|
|
\textbf{Anwenden}
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item{\textbf{Generator} weiß für jede Spielsituation, wie erfolgreich ein Zug ist}
|
|
|
|
|
\item{Erfolgreichster Zug wird ausgeführt}
|
|
|
|
|
\item{→ Immer Gewinn oder Unentschieden}
|
|
|
|
|
\end{itemize}
|
|
|
|
|
\end{minipage}
|
|
|
|
|
|
|
|
|
|
\vspace{1em}
|
|
|
|
|
\renewcommand*{\o}{$\pmb\bigcirc$}
|
|
|
|
|
\newcommand*{\x}{$\pmb\times$}
|
|
|
|
|
\begin{center}
|
|
|
|
|
\pause
|
|
|
|
|
\ttfamily\begin{TAB}(e,1em,1em){|c|c|c|}{|c|c|c|}
|
|
|
|
|
\x & \o & \x \\
|
2019-07-12 21:08:49 +02:00
|
|
|
|
1 & \o & 0.5\\
|
|
|
|
|
\x & 0 & \o \\
|
2019-07-08 21:18:31 +02:00
|
|
|
|
\end{TAB} \\
|
|
|
|
|
X am Zug
|
|
|
|
|
\end{center}
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
|
\section{Theorie: Neuronale Netzwerke}
|
|
|
|
|
\begin{frame}{Neuronale Netzwerke: Eingabe}
|
|
|
|
|
\begin{center}
|
|
|
|
|
\begin{tikzpicture}
|
|
|
|
|
\onslide<+>\node[] (traffic light) {\includegraphics[height=.75\textheight]{traffic-light-ryg}};
|
|
|
|
|
\onslide<+->\node[] (traffic light) {\includegraphics[height=.75\textheight]{traffic-light-ryg-gray}};
|
|
|
|
|
\onslide<+->
|
|
|
|
|
\draw[decoration={brace, raise=1pt, amplitude=5pt}, decorate] (traffic light.north west) -- node[above=5pt] (width) {$25$} (traffic light.north east);
|
|
|
|
|
\draw[decoration={brace, mirror, raise=1pt, amplitude=5pt}, decorate] (traffic light.south east) -- node[right=5pt] (height) {$75$} (traffic light.north east);
|
|
|
|
|
\onslide<+->
|
|
|
|
|
\node[right=5 of traffic light.north east] (input) {$25 \cdot 75 = 1875$};
|
|
|
|
|
\draw[->, thick] (traffic light.north east) ++ (0.25,0) -- (input);
|
|
|
|
|
\onslide<+->
|
|
|
|
|
\node[below=1em of input] (values) {$[0 .. 255]$ → $[0, 1]$};
|
|
|
|
|
\node[below=1em of values] {\includegraphics[width=.33\textwidth]{traffic-light-ryg-gray-values}};
|
|
|
|
|
\onslide<1-> % I don’t use reveal because I have to do ugly hacks there … wait what?
|
|
|
|
|
\end{tikzpicture}
|
|
|
|
|
\end{center}
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
|
\begin{frame}{Neuronale Netzwerke}
|
|
|
|
|
% stolen from https://tex.stackexchange.com/a/153974
|
|
|
|
|
\tikzset{%
|
|
|
|
|
every neuron/.style={
|
|
|
|
|
circle,
|
|
|
|
|
draw,
|
|
|
|
|
minimum size=1cm
|
|
|
|
|
},
|
|
|
|
|
neuron missing/.style={
|
|
|
|
|
draw=none,
|
|
|
|
|
scale=4,
|
|
|
|
|
text height=0.333cm,
|
|
|
|
|
execute at begin node=\color{black}$\vdots$
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
\begin{tikzpicture}[x=2.4cm, y=1.5cm, >=stealth, font=\sffamily]
|
|
|
|
|
|
|
|
|
|
\foreach \m/\l [count=\y] in {1,2,3,missing,4}
|
|
|
|
|
\node [every neuron/.try, neuron \m/.try] (input-\m) at (0,2.5-\y) {};
|
|
|
|
|
|
|
|
|
|
\foreach \m [count=\y] in {1,missing,2}
|
|
|
|
|
\node [every neuron/.try, neuron \m/.try ] (hidden-\m) at (2,2-\y*1.25) {};
|
|
|
|
|
|
|
|
|
|
\foreach \m [count=\y] in {1,2,3}
|
|
|
|
|
\node [every neuron/.try, neuron \m/.try ] (output-\m) at (4,1.5-\y) {};
|
|
|
|
|
|
|
|
|
|
\foreach \l [count=\i] in {1,2,3,1875}
|
|
|
|
|
\draw [<-] (input-\i) -- ++(-1,0)
|
|
|
|
|
node [above, midway] {$I_{\l}$};
|
|
|
|
|
|
|
|
|
|
\foreach \l [count=\i] in {1,n}
|
|
|
|
|
\node [above] at (hidden-\i.north) {$H_\l$};
|
|
|
|
|
|
|
|
|
|
\foreach \l [count=\i] in {1,2,3}
|
|
|
|
|
\draw [->] (output-\i) -- ++(1,0)
|
|
|
|
|
node [above, midway] {$O_\l$};
|
|
|
|
|
|
|
|
|
|
\foreach \i in {1,...,4}
|
|
|
|
|
\foreach \j in {1,...,2}
|
|
|
|
|
\draw [->] (input-\i) -- (hidden-\j);
|
|
|
|
|
|
|
|
|
|
\foreach \i in {1,...,2}
|
|
|
|
|
\foreach \j in {1,...,3}
|
|
|
|
|
\draw [->] (hidden-\i) -- (output-\j);
|
|
|
|
|
|
|
|
|
|
\foreach \l [count=\x from 0] in {Input, Hidden, Output}
|
|
|
|
|
\node [align=center, above] at (\x*2,1.9) {\l \\ layer};
|
|
|
|
|
|
|
|
|
|
\end{tikzpicture}
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
|
\begin{frame}{Graphische Demo}
|
|
|
|
|
\href{https://playground.tensorflow.org/\#activation=tanh&batchSize=10&dataset=gauss®Dataset=reg-plane&learningRate=0.03®ularizationRate=0&noise=0&networkShape=4,2&seed=0.90019&showTestData=false&discretize=false&percTrainData=50&x=true&y=true&xTimesY=false&xSquared=false&ySquared=false&cosX=false&sinX=false&cosY=false&sinY=false&collectStats=false&problem=classification&initZero=false&hideText=false&discretize_hide=true&numHiddenLayers_hide=true®ularizationRate_hide=true&learningRate_hide=true&batchSize_hide=true&dataset_hide=true®ularization_hide=true&noise_hide=true&problem_hide=true&activation_hide=true&showTestData_hide=false&percTrainData_hide=false}{playground.tensorflow.org}
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
|
\section{Training in der Praxis}
|
|
|
|
|
\begin{frame}{Training}
|
|
|
|
|
\pause\begin{minipage}[t]{.30\textwidth}
|
|
|
|
|
\textbf{Computer trainiert sich selbst}
|
|
|
|
|
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item{Diskriminator hat Regelwerk vorliegen}
|
|
|
|
|
\item{In zufälliger Generation ist auch ein richtiges Ergebnis vorhanden}
|
|
|
|
|
\item{Funktioniert gut für Spiele}
|
|
|
|
|
\end{itemize}
|
|
|
|
|
\end{minipage}\hfill%
|
|
|
|
|
\pause\begin{minipage}[t]{.30\textwidth}
|
|
|
|
|
\textbf{Entwickelnde Menschen als Diskriminator}
|
|
|
|
|
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item{Menschen geben Eingabe und gewünschte Ausgabe vor}
|
|
|
|
|
\item{Teilweise existieren schon Datensätze}
|
|
|
|
|
\item{Arbeitsaufwändig/Teuer}
|
|
|
|
|
\end{itemize}
|
|
|
|
|
\end{minipage}\hfill%
|
|
|
|
|
\pause\begin{minipage}[t]{.30\textwidth}
|
|
|
|
|
\includegraphics[height=.1\textheight]{im-not-a-robot} \\
|
|
|
|
|
\includegraphics[height=.7\textheight]{captcha}
|
|
|
|
|
\end{minipage}%
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
|
\appendix
|
|
|
|
|
\begin{frame}{Quellen}
|
|
|
|
|
\printbibliography[heading=none]
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
|
\begin{frame}[focus]
|
|
|
|
|
Nicht ganz verstanden? \\
|
|
|
|
|
Fragen?
|
|
|
|
|
\end{frame}
|
|
|
|
|
|
|
|
|
|
\begin{frame}{Bonus/Weiterführende Informationen}
|
|
|
|
|
\begin{itemize}
|
|
|
|
|
\item{Videoserie: \href{https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi}{3Blue1Brown: Neural networks}}
|
|
|
|
|
\end{itemize}
|
|
|
|
|
\end{frame}
|
|
|
|
|
\end{document}
|