generated from TH_General/Template_Summary
140 lines
8.7 KiB
TeX
140 lines
8.7 KiB
TeX
\chapter{Deep Learning}
|
|
\label{chapter: deep learning}
|
|
Das \say{Deep Learning} ist ein Teilbereich des \ac{ML}.
|
|
Dieses ist wiederum ein Teilbereich der \ac{KI}.
|
|
Obwohl es faktisch ein Teilbereich ist haben sich \ac{KI} und \ac{ML} zu separaten Forschungsfeldern entwickelt.\\
|
|
\includegraphics[width = \textwidth]{ai_and_ml.png}\\
|
|
Allgemein beschrieben wird bei dem Deep Learning ein Modell aus mehreren Schichten aufgebaut.
|
|
Diese Schichten sind grundsätzlich hierarchisch aufgebaut und verarbeiten jeweils die Ausgabe des vorhergegangenen Schicht.
|
|
Hierfür werden sowohl Methoden aus dem Supervised Learning {\ref{supervised learning}}, als auch Methoden aus dem Unsupervised Learning {\ref{unsupervised learning}} verwendet.
|
|
Da die Modelle meist an das Menschliche Gehirn angelehnt sind werden hierfür Neurale Netzwerke verwendet.
|
|
Im Allgemeinen kommen 2 Arten von Neuralen Netzwerken zum Einsatz:
|
|
\begin{itemize}
|
|
\item \textbf{Faltunsnetzwerke (\ref{cnn}):}\\
|
|
für statische Daten (Bilder, Sprachaufnahmen, \dots)
|
|
\item \textbf{Zyklische Netzwerke (\ac{RNN}):}\\
|
|
für sequentielle Daten (Videostream, Fließtext, \dots)
|
|
\end{itemize}
|
|
|
|
\section{Allgemeines Lernprinzip}
|
|
\label{deep learning: principle}
|
|
\includegraphics[width=\textwidth]{deep-learing_learning-principle.png}
|
|
|
|
\section{Exkurs: Bilderkennung}
|
|
\label{bilderkennung}
|
|
\subsection{Neuro-biologisches Konzept}
|
|
\label{neuro-biological concept}
|
|
\includegraphics[width=.8\textwidth]{neuro-biological_concept.png}
|
|
|
|
\subsection{Bild Klassifizierung}
|
|
\label{image classification}
|
|
Der Inhalt eines Bildes soll klassifiziert werden.\\
|
|
\includegraphics[width=.8\textwidth]{image-classification.png}\\
|
|
Hierbei gibt es viele Probleme:
|
|
\begin{itemize}
|
|
\item \textbf{Semantic Gap:}\\
|
|
Der Computer sieht das Bild als eine Datenmenge von unabhängigen Pixeln.\\
|
|
\includegraphics[width=.6\textwidth]{semantical gap.png}
|
|
\item \textbf{Viewpoint Variation:}\\
|
|
Eine kleine Veränderung in der Kameraposition kann dazu führen, dass sich alle Pixel verändern.\\
|
|
\includegraphics[width=\textwidth]{viewpoint variation.png}
|
|
\item \textbf{Beleuchtung:}\\
|
|
Eine Veränderung der Beleuchtung kann zu sehr unterschiedlichen Pixeldaten führen.\\
|
|
\includegraphics[width=.8\textwidth]{illumination.png}
|
|
\item \textbf{Deformation:}\\
|
|
Die Objekte im Bild können unterschiedlich verzerrt sein.\\
|
|
\includegraphics[width=.8\textwidth]{deformation.png}
|
|
\item \textbf{Occlusion:}\\
|
|
Die zu klassifizierenden Objekte können teilweise verdeckt sein.\\
|
|
\includegraphics[width = .8\textwidth]{occlusion.png}
|
|
\item \textbf{Background Clutter:}\\
|
|
Das Bild kann einen Hintergrund mit starker Ähnlichkeit zu dem Objekt haben.\\
|
|
\includegraphics[width = .8\textwidth]{background clutter.png}
|
|
\end{itemize}
|
|
Um diese Probleme zu umgehen werden mehrschichtige Erkennungsmodelle verwendet.
|
|
Hierdurch wird versucht eine abstraktere Erkennung der Objekte zu ermöglichen.\\
|
|
\includegraphics[width=\textwidth]{abstract catifier.png}\\
|
|
Ein Beispiel für die einzelnen Features könnte wie folgt aussehen:\\
|
|
\includegraphics[width = \textwidth]{car features.png}
|
|
|
|
\section{\acp{CNN}}
|
|
\label{cnn}
|
|
\acp{CNN} enthalten 3 wichtige Bestandteilen:\\
|
|
\includegraphics[width=.8\textwidth]{cnn_building_blocks.png}\\
|
|
Diese Bestandteile können beliebig oft hintereinander geschaltet sein.
|
|
Zudem ist an ein komplettes \ac{CNN} zumeist noch ein weiteres Netzwerk für die Ausgabe der Vorhersage angeschlossen:\\
|
|
\includegraphics[width = \textwidth]{cnn_complete.png}
|
|
|
|
\subsection{convolutional stage}
|
|
\label{cnn: convolutional stage}
|
|
In der \say{convolutional stage} werden \say{convolutional layer} (Faltunsschicht) verwendet.
|
|
Diese wenden einen beweglichen Filter (detector) auf die Daten der vorhergegangenen Schicht an.
|
|
Hierbei stellt der detector ein Rezeptives Feld dar (vergleichbar mit dem Auge).\\
|
|
\includegraphics[width = \textwidth]{convolutional_operation.png}\\
|
|
\begin{wrapfigure}{h}{.4\textwidth}
|
|
\includegraphics[width = .4\textwidth]{cnn_inter_layer_connection.png}
|
|
\end{wrapfigure}
|
|
Aufgrund der geringen Größe des rezeptiven Feldes ist jedes Neuron in der nachfolgenden Schicht jeweils nur mit wenigen Neuronen in der unterliegenden Schicht verbunden:\\
|
|
\includegraphics[width=\textwidth]{convolutional filter.png}\\
|
|
|
|
\subsubsection{Beispiel}
|
|
\label{cnn: example}
|
|
Im folgenden wird das Verfahren des convolutional layers anhand von $3\times 3$ Filtern demononstriert.
|
|
Diese werden auf einem $6\times 6$ Bild verschoben.
|
|
Die Filter sollen jeweils unterschiedliche geometrische Formen erkennen (Filter1: Diagonalen)\\
|
|
\includegraphics[width=.8\textwidth]{cnn_example1.png}\\
|
|
Über den Parameter \say{stride} kann eingestellt werden, um wieviele Elemente der Filter jeweils verschoben wird:\\
|
|
\includegraphics[width = .8\textwidth]{cnn_example_stride1.png}\\
|
|
\includegraphics[width = .8\textwidth]{cnn_example_stride2.png}\\
|
|
Für jeden Filter entsteht durch diese Anwendung ein kleineres Bild, welches aus dem Ausgangsbild errechnet wurde:\\
|
|
\includegraphics[width=.8\textwidth]{cnn_feature_map1.png}\\
|
|
Durch die Anwendung der verschiedenen Filter entsteht hierbei eine mehrdimensionale \say{Feature Map}.
|
|
Diese wird allgemein als \say{Tensor} bezeichnet:\\
|
|
\includegraphics[width=.8\textwidth]{cnn_feature_map2.png}\\
|
|
|
|
\subsubsection{Convolutional vs. Fully Connected}
|
|
\label{cnn: convolutional vs. fully connected}
|
|
Der Vorteil, den der Ansatz der Faltungsschichten gegenüber dem einsatz von \say{fully connected layers} hat ist,
|
|
dass deutlich weniger Parameter benötigt werden.\\
|
|
\includegraphics[width = .8\textwidth]{convolutional_vs_fully-connected.png}
|
|
|
|
\subsection{non-linear stage}
|
|
\label{cnn: non-linear stage}
|
|
Es ist mathematisch beweisbar, dass für die Abbildung von gleichen Äquivalenzklassen auf eine Referenzklasse eine nicht-linear Funktion benötigt wird.
|
|
Hierbei gibt es mehrere mögliche Funktionen.
|
|
Die bekannteste ist hierbei die \say{Sigmoid}-Funktion.
|
|
Bei \acp{CNN} wird allerdings meistens die \say{ReLU}-Funktion verwendet.\\
|
|
\includegraphics[width = \textwidth]{non-linear_functions.png}
|
|
|
|
\subsection{Pooling}
|
|
\label{cnn:pooling}
|
|
Beim \say{Pooling} wird die Menge der Elemente in einer Schicht reduziert.
|
|
Hierbei wird darauf geachtet, dass nur unwichtige Daten \say{verloren gehen}.
|
|
Man spricht auch von \say{Subsampling}.\\
|
|
\includegraphics[width = .8\textwidth]{subsampling.png}
|
|
|
|
\subsubsection{Max Pooling}
|
|
\label{cnn: max pooling}
|
|
Das \say{Max Pooling} ist eine Form des Poolings, bei dem mehrere Elemente einer schicht dadurch zusammengefasst werden,
|
|
dass nur die Element mit dem höchsten Wert erhalten bleiben.\\
|
|
\includegraphics[width = .8\textwidth]{max_pooling.png}
|
|
|
|
\section{classsical \ac{ML} vs. Deep Learning}
|
|
\includegraphics[width = \textwidth]{classical_ml_vs_deep_learning.png}
|
|
|
|
\section{Probleme des Deep Learning}
|
|
\begin{itemize}
|
|
\item \textbf{Deep Learning ist gierig:}\\
|
|
Es werden Millionen von Datensätze für das Training von Deep Learning Modellen benötigt.
|
|
\item \textbf{Deep Learing ist undurchsichtig:}\\
|
|
Deep Learing Modelle sind Black Box Modelle, die kontextunabhängig arbeiten
|
|
\item \textbf{Deep Learning ist spröde:}\\
|
|
Deep Learning Modelle können bei manchen Anwendungen gut funktionieren und bei anderen komplett scheitern;
|
|
sie sind nicht-linerare Natur
|
|
\end{itemize}
|
|
\includegraphics[width = \textwidth]{deep_learing_problems.png}\\
|
|
\includegraphics[width = \textwidth]{dumm_aber_raffiniert.png}
|
|
|
|
\section{aktuelle Trends}
|
|
\includegraphics[width = \textwidth]{trends.png}
|