From 7ad54129f1d6a25059c1a016d65a96a7ba2a23bf Mon Sep 17 00:00:00 2001 From: paul-loedige Date: Wed, 10 Feb 2021 19:41:07 +0100 Subject: [PATCH] =?UTF-8?q?regularisierung=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 7 +- chapters/Semi-supervised Learning/CNN.tex | 98 +++++++++++++++++++ .../Deep Learning.tex | 62 ------------ .../Supervised Learning/Linear Machines.tex | 10 +- parts/Semi-supervised Learning.tex | 3 +- 5 files changed, 110 insertions(+), 70 deletions(-) create mode 100644 chapters/Semi-supervised Learning/CNN.tex diff --git a/Readme.md b/Readme.md index b2bc602..f7b0fab 100644 --- a/Readme.md +++ b/Readme.md @@ -10,16 +10,15 @@ Dieses Repo beinhaltet die $\LaTeX$ Informationen für die Zusammenfassung im Fa - [x] Gradientenverfahren aus KI - [x] inkl. mehrere Schichten (Übung 3.3) - [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 -- [ ] Perzeptron ist ein Überbegriff (kann aus mehreren Neuronen bestehen)(Besteht aus Input-Gedöns-Output) -- [ ] Regularisierung + - [x] Beispiele aus ML_2020_11_23 (43:00) miteinbeziehen +- [x] Perzeptron ist ein Überbegriff (kann aus mehreren Neuronen bestehen)(Besteht aus Input-Gedöns-Output) +- [x] Regularisierung - ist dafür da Overfitting zu vermeiden - 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$$ - Early stopping - Lasso Regularisierung (L1-Norm($L_1(w)=\sum|w|$)) $$V(y',y) + \lambda L_1(w) = V(y',y) + \lambda \sum|w|$$ - - Pull-out-Technik - [ ] Dropout - reduziert Neuronen in einer Schicht diff --git a/chapters/Semi-supervised Learning/CNN.tex b/chapters/Semi-supervised Learning/CNN.tex new file mode 100644 index 0000000..303f02d --- /dev/null +++ b/chapters/Semi-supervised Learning/CNN.tex @@ -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. \ No newline at end of file diff --git a/chapters/Semi-supervised Learning/Deep Learning.tex b/chapters/Semi-supervised Learning/Deep Learning.tex index e7371f2..fbb647a 100644 --- a/chapters/Semi-supervised Learning/Deep Learning.tex +++ b/chapters/Semi-supervised Learning/Deep Learning.tex @@ -56,68 +56,6 @@ \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} diff --git a/chapters/Supervised Learning/Linear Machines.tex b/chapters/Supervised Learning/Linear Machines.tex index 149a161..37c1f07 100644 --- a/chapters/Supervised Learning/Linear Machines.tex +++ b/chapters/Supervised Learning/Linear Machines.tex @@ -45,10 +45,14 @@ \section{Das technische Neuron} 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} 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)$. 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. @@ -57,7 +61,7 @@ \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} 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} \end{center} 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. 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. diff --git a/parts/Semi-supervised Learning.tex b/parts/Semi-supervised Learning.tex index d7d00eb..48a825d 100644 --- a/parts/Semi-supervised Learning.tex +++ b/parts/Semi-supervised Learning.tex @@ -1,3 +1,4 @@ \part{Semi-supervised Learning} -\input{chapters/Semi-supervised Learning/Deep Learning.tex} \ No newline at end of file +\input{chapters/Semi-supervised Learning/Deep Learning.tex} +\input{chapters/Semi-supervised Learning/CNN.tex} \ No newline at end of file