generated from TH_General/Template_Summary
98 lines
5.7 KiB
TeX
98 lines
5.7 KiB
TeX
\chapter{\acfp{CNN}}
|
|
\label{cnn}
|
|
\acp{CNN} enthalten 3 wichtige Bestandteilen:
|
|
\begin{center}
|
|
\includegraphics[width=.7\textwidth]{cnn_building_blocks.png}
|
|
\end{center}
|
|
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:
|
|
\begin{center}
|
|
\includegraphics[width = .7\textwidth]{cnn_complete.png}
|
|
\end{center}
|
|
|
|
\section{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}{r}{.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:\\
|
|
\vspace{30mm}
|
|
|
|
\includegraphics[width=\textwidth]{convolutional filter.png}
|
|
\pagebreak
|
|
|
|
\subsection{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=.6\textwidth]{cnn_example1.png}\\
|
|
Über den Parameter \say{stride} kann eingestellt werden, um wieviele Elemente der Filter jeweils verschoben wird:\\
|
|
\includegraphics[width = .7\textwidth]{cnn_example_stride1.png}\\
|
|
\includegraphics[width = .7\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}\\
|
|
\pagebreak
|
|
|
|
\subsection{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}
|
|
|
|
\section{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 = .9\textwidth]{non-linear_functions.png}
|
|
|
|
\section{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}
|
|
|
|
\subsection{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{Regularisierung}
|
|
\label{cnn: regularisierung}
|
|
Um Overfitting zu vermeiden können die Verlustfunktionen (Zusammenfassung KI),
|
|
mithilfe derer die Gewichte über Backpropagation (\ref{knn: backpropagation}) geupdated werden,
|
|
regularisiert werden.\\
|
|
\textbf{Vorsicht:} eine zu starke Regularisierung kann zu einem Underfitting führen,
|
|
wohingegen eine zu schwache Regularisierung das Overfitting nicht verhindert.
|
|
Meist lässt sich die \say{Stärke} der Regularisierung durch eine Parameter ($\lambda$) vorgeben.
|
|
|
|
\subsection{Lasso Regularisierung}
|
|
\label{cnn: lasso regularisierung}
|
|
Die Lasso Regularisierung nutzt die $L_1$-Norm:
|
|
$$L_1(\bm{w})=\sum_{w_i\in\bm{w}}|w_i|$$
|
|
Hierdurch ergibt sich für den Wert, mit dem die Gewichte geupdated werden:
|
|
$$V(y,y')+\lambda\cdot L_1(\bm{w}) = V(y,y') + \lambda\cdot\sum_{w_i\in\bm{w}}|w_i|$$
|
|
|
|
\subsection{Tikhonov Regularisierung}
|
|
\label{cnn: ridge regression}
|
|
Die auch als \say{Ridge Regression} bekannte Regularisierung nutzt die $L_2$-Norm:
|
|
$$L_2(\bm{w})=\sqrt{\sum_{w_i\in\bm{w}}|w_i|^2}$$
|
|
Hierdurch ergibt sich für den Wert, mit dem die Gewichte geupdated werden:
|
|
$$V(y,y')+\lambda\cdot L_2^2(\bm{w}) = V(y,y') + \lambda\cdot\sum_{w_i\in\bm{w}}|w_i|^2$$
|
|
|
|
\subsection{Early Stopping}
|
|
\label{cnn: early stopping}
|
|
Das Verfahren des \say{Early Stopping} kann als eine Regularisierung in der Zeit betrachtet werden.
|
|
Hierbei wird nach einer bestimmten Anzahl von Epochen das Lernen beendet.
|
|
Dies kann ebenfalls ein Overfitting verhindern. |