backpropagation hinzugefügt

This commit is contained in:
paul-loedige 2021-02-10 19:02:45 +01:00
parent 7260e91d26
commit 5b12ef3ab1
3 changed files with 86 additions and 8 deletions

View File

@ -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

View File

@ -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.
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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB