From 5b12ef3ab1698bcd1edad73c6e8df446013390ae Mon Sep 17 00:00:00 2001 From: paul-loedige Date: Wed, 10 Feb 2021 19:02:45 +0100 Subject: [PATCH] =?UTF-8?q?backpropagation=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 9 +- .../Supervised Learning/Linear Machines.tex | 85 +++++++++++++++++- images/backpropagation_inner_layer.png | Bin 0 -> 32775 bytes 3 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 images/backpropagation_inner_layer.png diff --git a/Readme.md b/Readme.md index 4b8c8f8..b2bc602 100644 --- a/Readme.md +++ b/Readme.md @@ -6,11 +6,10 @@ Dieses Repo beinhaltet die $\LaTeX$ Informationen für die Zusammenfassung im Fa - [x] Nachteile von Accuracy - [x] Fokus auf Accuracy, F1, Precision und Recall - [x] $w_0$ bei Perzeptron erklären (siehe Feedback Übung 3.1) -- [ ] Verlustfunktionen aus KI -- [ ] Backpropagation Rechenbeispiel (Übung ML_2020_11_16, KI Zusammenfassung, Feedback Übung 3.2) - - [ ] Gradientenverfahren aus KI - - [ ] inkl. mehrere Schichten (Übung 3.3) -- [ ] Begründung für Anzahl von Neuronen in der verdeckten Schicht (ML_2020_11_23) +- [x] Backpropagation Rechenbeispiel (Übung ML_2020_11_16, KI Zusammenfassung, Feedback Übung 3.2) + - [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 diff --git a/chapters/Supervised Learning/Linear Machines.tex b/chapters/Supervised Learning/Linear Machines.tex index 68167ce..149a161 100644 --- a/chapters/Supervised Learning/Linear Machines.tex +++ b/chapters/Supervised Learning/Linear Machines.tex @@ -83,8 +83,15 @@ \subsection{Das XOR-Problem} Um das XOR-Problem zu zergliedern werden 2 Diskriminanten benötigt:\\ \includegraphics[width=\textwidth]{XOR-Problem1.png}\\ - Um das XOR-Problem von einer linearen Maschine klassifizieren zu lassen muss diese aus mindestens 2 Schichten bestehen.\\ - \includegraphics[width=\textwidth]{XOR-Problem2.png} + Um das XOR-Problem von einer linearen Maschine klassifizieren zu lassen muss diese aus mindestens 2 Schichten bestehen. + \begin{center} + \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. + 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. \section{Maximum Margin Approaches} Aus \ref{novikoffs theorem} ist bekannt, dass eine Diskriminate erstellt werden kann. @@ -158,4 +165,76 @@ Eine Reduzierung kann entweder dadurch erreicht werden, dass das empirische Risiko (\ref{empirical risk}) bei gleichbleibenden $\varepsilon$ (\ref{capacity term}) reduziert wird, oder durch eine Reduzierung von $\varepsilon$ bei gleichbleibenden empirischen Risiko. - Letzteres ist der Ansatz den die \ac{SVM}s (\ref{svm}) verfolgen. \ No newline at end of file + Letzteres ist der Ansatz den die \ac{SVM}s (\ref{svm}) verfolgen. + + \section{Parameteroptimierung} + \label{knn: parameteroptimierung} + Die Parameter werden iterativ so verändert/ optimiert, dass die Fehlerfunktion (Zusammenfassung KI: Fehlerfunktionen) minimal wird. + + \subsection{Gradientenabstieg} + \label{knn: gradientenabstieg} + Das Gradientenverfahren ist ein Verfahren zur Parameteroptimierung. + Die Idee für das Verfahren leitet sich vom Hill-Climbing Algorithmus (Zusammenfassung KI: Hill Climbing) ableitet. + Der größte Unterschied liegt darin, dass der Parameterraum nicht diskret sondern kontinuierlich ist. + Das bedeutet, das jeder Punkt unendlich viele Nachbarn hat. + Durch die Bestimmung des \textbf{Gradienten} kann die Richtung des steilsten Abstiegs angegeben werden: + \large + $$\Delta g= \begin{bmatrix} + \frac{\delta g}{\delta w_1}\\ + \frac{\delta g}{\delta w_2}\\ + \vdots\\ + \frac{\delta g}{\delta w_n} + \end{bmatrix} + $$ + \normalsize + Zu beginn werden die Gewichte $w$ des Neuronen definiert (zufällig oder anders). + Anschließend werden sie bei jeder Iteration über + \large + $$w\gets w+\alpha\cdot \Delta g(w)$$ + \normalsize + umdefiniert. + Hierbei ist $\alpha$ ein Hyperparamter, der die \textbf{Lernrate} definiert.\\ + Zu erwähnen ist noch, dass auch hier wie beim Hill-Climbing (Zusammenfassung KI: Hill Climbing) die Gefahr besteht, + dass lediglich ein lokales anstatt dem globalen Minimum gefunden wird. + + \subsection{Backpropagation} + \label{knn: backpropagation} + Da der Fehler, den die Fehlerfunktion angibt auf alle Schichten zurückzuführen ist, + muss auch die Optimierung Rückwärtsgerichtet in allen Schichten stattfinden. + Man spricht hierbei von einer \say{Backpropagation}.\\ + Um ein Ausgangsneuron zu updaten muss die Fehlerfunktion + $$f(a,t) = \sum_i \frac{1}{2}(a_i-t_i)^2$$ + erstmal auf den Ausgabewert des jeweiligen Neurons abgeleitet werden: + $$\frac{\delta f}{\delta a_i}=a_i-t$$ + Wenn man dies nun auf die Zustandsfunktion des Neurons ableitet erhält man: + $$\frac{\delta f}{\delta z_i} = \frac{\delta f}{\delta a_i}\cdot\frac{\delta a_i}{\delta z_i}$$ + Um die Änderung für eine Gewichtung $g_{ij}$ zu bestimmen muss die Fehlerfunktion nun zunächst auf dieses $g_{ij}$ abgeleitet werden: + $$\frac{\delta f}{\delta g_{ij}} = \frac{\delta f}{\delta z_i} \cdot\frac{\delta z_i}{\delta g_{ij}} = \frac{\delta f}{\delta a_i}\cdot\frac{\delta a_i}{\delta z_i}\cdot\frac{\delta z_i}{\delta g_{ij}}$$ + Nun kann man durch Einsetzen der verwendeten $f$, $a_i$ und $z_i$ die Formel für die Änderung von $g_{ij}$ aufstellen.\\ + \textbf{Beispiel:} + \Large + \begin{tabbing} + $f(a,t)=\sum_i\frac{1}{2}(a_i-t_i)^2$\hspace{5mm}\=und\hspace{5mm}\=$\frac{\delta f}{\delta a_i}=a_i-t_i$\\\\ + $a_i =\frac{1}{a+e^{z_i}}$ \>und \>$\frac{\delta a_i}{\delta z_i}=a_i(1-a_i)$\\\\ + $z_i=\sum^{N+1}_{j=1}g_{ij}\cdot a_i$ \>und \>$\frac{\delta z_i}{\delta g_{ij}}=a_j$ + \end{tabbing} + \normalsize + Hieraus ergibt sich: + $$\frac{\delta f}{\delta g_{ij}} = \frac{\delta f}{\delta z_i} \cdot\frac{\delta z_i}{\delta g_{ij}} = \frac{\delta f}{\delta a_i}\cdot\frac{\delta a_i}{\delta z_i}\cdot\frac{\delta z_i}{\delta g_{ij}}=(a_i-t_i)\cdot a_i(1-a_i)\cdot a_j$$ + Da uns alle diese Werte bekannt sind können wir $g_{ij}$ updaten: + \large + $$g_{ij}\gets g_{ij} + \alpha\cdot\left((a_i-t_i)\cdot a_i(1-a_i)\cdot a_j\right)$$ + \normalsize + Um die Backpropagation nun bei den anderen Neuronen auf tieferen Schichten anzuwenden muss auf diese abgeleitet werden:\\ + \begin{wrapfigure}{r}{.4\textwidth} + \vspace{-10mm} + \includegraphics[width = .4\textwidth]{backpropagation_inner_layer.png} + \end{wrapfigure} + + \begin{align*} + \frac{\delta f}{\delta a_i}&=(a_i-t_i)\\ + \frac{\delta f}{\delta z_i}&=\frac{\delta f}{\delta a_i}\cdot\frac{\delta a_i}{\delta z_i}=a_i(1-a_i)\frac{\delta f}{\delta a_i}\\ + \frac{\delta f}{\delta g_{ij}}&=\frac{\delta f}{\delta z_i}\cdot\frac{\delta z_i}{\delta g_{ij}} = a_j\frac{\delta f}{\delta z_i}\\ + \frac{\delta f}{\delta a_j}&=\sum_i\frac{\delta f}{\delta z_i}\cdot\frac{\delta z_i}{\delta a_j}=\sum_i g_{ij}\frac{\delta f}{\delta z_i} + \end{align*} + Die Summe wird durch die Mehrzahl der Nachfolgenden Neuronen von $B_j$ berursacht. \ No newline at end of file diff --git a/images/backpropagation_inner_layer.png b/images/backpropagation_inner_layer.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f70bb4d54d257ca20734461ba82f6c0d0b11a1 GIT binary patch literal 32775 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