regularisierung hinzugefügt

This commit is contained in:
paul-loedige 2021-02-10 19:41:07 +01:00
parent 5b12ef3ab1
commit 7ad54129f1
5 changed files with 110 additions and 70 deletions

View File

@ -10,16 +10,15 @@ Dieses Repo beinhaltet die $\LaTeX$ Informationen für die Zusammenfassung im Fa
- [x] Gradientenverfahren aus KI - [x] Gradientenverfahren aus KI
- [x] inkl. mehrere Schichten (Übung 3.3) - [x] inkl. mehrere Schichten (Übung 3.3)
- [x] Begründung für Anzahl von Neuronen in der verdeckten Schicht (ML_2020_11_23) - [x] Begründung für Anzahl von Neuronen in der verdeckten Schicht (ML_2020_11_23)
- [ ] Beispiele aus ML_2020_11_23 (43:00) miteinbeziehen - [x] Beispiele aus ML_2020_11_23 (43:00) miteinbeziehen
- [ ] Perzeptron ist ein Überbegriff (kann aus mehreren Neuronen bestehen)(Besteht aus Input-Gedöns-Output) - [x] Perzeptron ist ein Überbegriff (kann aus mehreren Neuronen bestehen)(Besteht aus Input-Gedöns-Output)
- [ ] Regularisierung - [x] Regularisierung
- ist dafür da Overfitting zu vermeiden - ist dafür da Overfitting zu vermeiden
- Tikhonov Regularisierung (L2-Norm ($L_2(w)=\sqrt{\sum|w|^2}$)) (ridge regression) - Tikhonov Regularisierung (L2-Norm ($L_2(w)=\sqrt{\sum|w|^2}$)) (ridge regression)
$$V(y',y) + \lambda L_2^2(w) = V(y',y) + \lambda\sum|w|^2$$ $$V(y',y) + \lambda L_2^2(w) = V(y',y) + \lambda\sum|w|^2$$
- Early stopping - Early stopping
- Lasso Regularisierung (L1-Norm($L_1(w)=\sum|w|$)) - Lasso Regularisierung (L1-Norm($L_1(w)=\sum|w|$))
$$V(y',y) + \lambda L_1(w) = V(y',y) + \lambda \sum|w|$$ $$V(y',y) + \lambda L_1(w) = V(y',y) + \lambda \sum|w|$$
- Pull-out-Technik
- [ ] Dropout - [ ] Dropout
- reduziert Neuronen in einer Schicht - reduziert Neuronen in einer Schicht

View File

@ -0,0 +1,98 @@
\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.

View File

@ -56,68 +56,6 @@
\includegraphics[width=\textwidth]{abstract catifier.png}\\ \includegraphics[width=\textwidth]{abstract catifier.png}\\
Ein Beispiel für die einzelnen Features könnte wie folgt aussehen:\\ Ein Beispiel für die einzelnen Features könnte wie folgt aussehen:\\
\includegraphics[width = \textwidth]{car features.png} \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} \section{classsical \ac{ML} vs. Deep Learning}
\includegraphics[width = \textwidth]{classical_ml_vs_deep_learning.png} \includegraphics[width = \textwidth]{classical_ml_vs_deep_learning.png}

View File

@ -45,10 +45,14 @@
\section{Das technische Neuron} \section{Das technische Neuron}
Ein technisches Neuron besteht aus den Gewichten für die Eingangswerte und der Aktivierungsfunktion:\\ Ein technisches Neuron besteht aus den Gewichten für die Eingangswerte und der Aktivierungsfunktion:\\
\includegraphics[width=.8\textwidth]{technisches_neuron.png} \begin{center}
\includegraphics[width=.7\textwidth]{technisches_neuron.png}
\end{center}
\section{Das Perzeptron}\label{perceptron} \section{Das Perzeptron}\label{perceptron}
Ein Perzeptron beschreibt eine lineare Maschine, die eine Datenmenge durch eine Hyper-Ebene (die Diskriminante) in zwei Cluster unterteilt. Ein Perzeptron beschreibt eine lineare Maschine, die eine Datenmenge durch eine Hyper-Ebene (die Diskriminante) in zwei Cluster unterteilt.
Hierbei ist der Begriff \say{Perzeptron} ein Überbegriff für das Konzept.
Ein Perzeptron besteht in den meisten fällen nicht nur aus einem einfachen Neuron, sondern oft sogar aus mehreren Schichten von Neuronen.
Die Funktion für die Diskriminante ist hierbei $y(\bm{m})=\text{sng}(g(\bm{m})) = \text{sgn}(\bm{w}^T\bm{m}+w_0)$. Die Funktion für die Diskriminante ist hierbei $y(\bm{m})=\text{sng}(g(\bm{m})) = \text{sgn}(\bm{w}^T\bm{m}+w_0)$.
Da sich $\bm{w}$ durch $\bm{w} = \sum^n_{i=1}\alpha_i\cdot y_i \cdot \bm{m}_i$ (mit $n = $Anzahl der Datenpunkte und $\alpha_i = $ Anzahl, wie oft $\bm{m}_i$ ausgewählt wurde) definiert ist die Dimension von $\bm{m}$ unwichtig. Da sich $\bm{w}$ durch $\bm{w} = \sum^n_{i=1}\alpha_i\cdot y_i \cdot \bm{m}_i$ (mit $n = $Anzahl der Datenpunkte und $\alpha_i = $ Anzahl, wie oft $\bm{m}_i$ ausgewählt wurde) definiert ist die Dimension von $\bm{m}$ unwichtig.
Das Gewicht $w_0$ wird auch als \say{Bias} bezeichnet wird. Das Gewicht $w_0$ wird auch als \say{Bias} bezeichnet wird.
@ -57,7 +61,7 @@
\subsection{Beispiel: nicht-symmetrischer Lernalgorithmus} \subsection{Beispiel: nicht-symmetrischer Lernalgorithmus}
\includegraphics[width=\textwidth]{Perzeptron_Lernalgorithmus.png} \includegraphics[width=.8\textwidth]{Perzeptron_Lernalgorithmus.png}
\subsection{Novikoff's Theorem}\label{novikoffs theorem} \subsection{Novikoff's Theorem}\label{novikoffs theorem}
Novikoff's Theorem besagt, dass der Lernalgorithmus des Perzeptrons bei einem linear trennbaren Datensatz unweigerlich eine Diskriminante findet. Novikoff's Theorem besagt, dass der Lernalgorithmus des Perzeptrons bei einem linear trennbaren Datensatz unweigerlich eine Diskriminante findet.
@ -88,7 +92,7 @@
\includegraphics[width=.8\textwidth]{XOR-Problem2.png} \includegraphics[width=.8\textwidth]{XOR-Problem2.png}
\end{center} \end{center}
Allgemein werden mehr Neuronen in der verdeckten Schicht gebraucht, je komplexer die Klassifizierung ist. Allgemein werden mehr Neuronen in der verdeckten Schicht gebraucht, je komplexer die Klassifizierung ist.
Hierbei kann sich an der \ac{VC-Dimension} orientiert werden. Hierbei kann sich grob an der Anzahl an geraden orientiert werden, die benötigt werden, um die Cluster sauber zu trennen.
Dies gibt allerdings nur eine Angabe für die minimale Anzahl an benötigten Neuronen in der verdeckten Schicht. Dies gibt allerdings nur eine Angabe für die minimale Anzahl an benötigten Neuronen in der verdeckten Schicht.
Die genaue Anzahl der verdeckten Schichten und der darin enthaltenen Neuronen müssen vom Entwickler gewählt werden. Die genaue Anzahl der verdeckten Schichten und der darin enthaltenen Neuronen müssen vom Entwickler gewählt werden.
Hierbei ist die Erfahrung des Entwicklers entscheidend, um ein möglich gutes Modell zu erstellen. Hierbei ist die Erfahrung des Entwicklers entscheidend, um ein möglich gutes Modell zu erstellen.

View File

@ -1,3 +1,4 @@
\part{Semi-supervised Learning} \part{Semi-supervised Learning}
\input{chapters/Semi-supervised Learning/Deep Learning.tex} \input{chapters/Semi-supervised Learning/Deep Learning.tex}
\input{chapters/Semi-supervised Learning/CNN.tex}