generated from TH_General/Template_Summary
regularisierung hinzugefügt
This commit is contained in:
parent
5b12ef3ab1
commit
7ad54129f1
@ -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
|
||||||
|
98
chapters/Semi-supervised Learning/CNN.tex
Normal file
98
chapters/Semi-supervised Learning/CNN.tex
Normal 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.
|
@ -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}
|
||||||
|
@ -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.
|
||||||
|
@ -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}
|
Loading…
x
Reference in New Issue
Block a user