forked from TH_General/Template_Summary
79 lines
4.7 KiB
TeX
79 lines
4.7 KiB
TeX
\chapter{Backpropagation}%
|
|
\label{cha:Backpropagation}
|
|
Um die einzelnen Gewichte rückwirkend durch die verschiedenen Schichten eines Neural Networks einzulernen wird das Verfahren der Backpropagation benutzt.
|
|
Bei diesem Verfahren wird der \nameref{sec:Gradient Descent} verwendet.
|
|
Die eigentliche Backpropagation findet erst dann statt,
|
|
wenn die Anpassungen,
|
|
die sich aus dem \nameref{sec:Gradient Descent} ergeben rückwirkend auf die verschiedenen Schichten des Neural Networks angewandt werden sollen.
|
|
Die Loss Function errechnet sich hier durch
|
|
\begin{equation} \label{eq:backpropagration_loss_function}
|
|
\mathcal L(\bm\theta,\mathcal D) = \sum_{i=1}^N l(\bm x_i,\bm\theta) + \nomeq{regularization_factor}\text{ penalty}(\bm\theta)
|
|
\end{equation}
|
|
\begin{wrapfigure}{r}{.5\textwidth}
|
|
\vspace*{-5mm}
|
|
\centering
|
|
\includegraphics[width=.8\linewidth]{back_propagation.png}
|
|
\caption{Zusammenhang zwischen Errechnung der Loss Function und Errechnung der partiellen Ableitungen}
|
|
\label{fig:backpropagation}
|
|
\vspace*{-15mm}
|
|
\end{wrapfigure}
|
|
Um die Gewichtsvektoren auf Basis dieser Loss Function anzupassen muss die partielle Ableitung für die jeweilige Gewichtsmatrix und den Biasvektor gezogen werden.
|
|
Hierfür ist die Kettenregel nützlich,
|
|
die die Regeln für die partielle Ableitung vorgibt
|
|
\begin{equation} \label{eq:chain_rule}
|
|
\frac{d}{dt}f(x(t)) = \frac{df}{dx}\frac{dx}{dt}
|
|
\end{equation}
|
|
In \cref{fig:backpropagation} ist dieser Ablauf am Beispiel eines zweistufigen Neuronalen Netzes gezeigt.
|
|
Hier berechnet sich der Loss durch
|
|
\begin{align} \label{eq:forward_pass}
|
|
z &= wx + b\\
|
|
y &= \sigma(z)\\
|
|
\mathcal L &= \frac{1}{2}(y-t)^2
|
|
\end{align}
|
|
Für dieses Neural Network ist die Backpropagation dann
|
|
\begin{alignat}{5} \label{eq:backward_pass}
|
|
\frac{\partial \mathcal L}{\partial y} &= y - t &&
|
|
&&=\overline{y}\\
|
|
\frac{\partial \mathcal L}{\partial z} &= \frac{\partial\mathcal L}{\partial y}\frac{\partial y}{\partial z} &&= \frac{\partial\mathcal L}{\partial y}\sigma'(z)
|
|
&&=\overline{z} &&= \overline{y}\sigma'(z)\\
|
|
\frac{\partial \mathcal L}{\partial w} &= \frac{\partial\mathcal L}{\partial z}\frac{\partial z}{\partial w} &&= \frac{\partial\mathcal L}{\partial z} x
|
|
&&=\overline{w} &&= \overline{z}x \\
|
|
\frac{\partial \mathcal L}{\partial b} &= \frac{\partial\mathcal L}{\partial z}\frac{\partial z}{\partial b}
|
|
&&= \frac{\partial\mathcal L}{\partial z} \cdot 1 &&=\overline{b} &&=\overline{z}
|
|
\end{alignat}
|
|
Wenn sich der Graph des Neural Networks sich allerdings verzweigt (mehrere Neuronen auf einer Schicht) muss die multivariable Kettenregel (multivariable chain rule) verwendet werden
|
|
\begin{equation} \label{eq:multivariable_chain_rule}
|
|
\frac{d}{dt}f(x(t),y(t)) = \frac{\partial f}{\partial x}\frac{dx}{dt} + \frac{\partial f}{\partial y}\frac{dy}{dt}
|
|
\end{equation}
|
|
Die Anwendung dieser Regel wird in den folgenden zwei Beispielen deutlich
|
|
|
|
\paragraph{Example: univariate logistic least squares regression}%
|
|
\label{par:Example: univariate logistic least squares regression}
|
|
\mbox{}\\
|
|
\includegraphics[scale=.65]{univariate_logisitc_least_squares_regression.png}
|
|
|
|
\paragraph{Example: Multi-layer Perceptron (multiple outputs)}%
|
|
\label{par:Example: Multi-layer Perceptron}
|
|
\mbox{}\\
|
|
\includegraphics[scale=.65]{multi-layer_perceptron.png}\\
|
|
Mithilfe der Matrix-Rechentricks aus \cref{sec:Matrix-Calculus} ist es möglich die Backpropagation für das Multi-layer Perceptron in Matrix-Form aufzuschreiben:\\
|
|
({\color{red}Herleitung Vorlesung 08 Folien 52 und 53})\\
|
|
\includegraphics[scale=.65]{multi-layer_perceptron_matrix_form.png}
|
|
|
|
\section{Computational costs}%
|
|
\label{sec:Computational costs}
|
|
Die Computational Costs für eine Backpropagation ergibt sich als Summe aus dem Forward Pass und dem Backward Pass.
|
|
Die Kosten für den Forward Pass sind in etwa linear in der Anzahl der Gewichte,
|
|
da für jedes Gewicht in etwa eine Addition und Multiplikation nötig ist.
|
|
\begin{equation} \label{eq:computational_cost_forward_pass}
|
|
\bm z = \bm W\bm x + \bm b
|
|
\end{equation}
|
|
Die Kosten für den Backward Pass sind ebenfalls in etwa linear,
|
|
mit jeweils zwei Additionen und Multiplikationen pro Gewicht.
|
|
\begin{equation} \label{eq:computational_cost_backward_pass}
|
|
\overline{\bm W} = \overline{\bm h}\bm z^T,\quad\overline{\bm h} = \bm W^T\overline{\bm y}
|
|
\end{equation}
|
|
In Summe ergeben sich also \say{nur} etwa 3 Additionen und Multiplikationen pro Gewicht.
|
|
Da der Algorithmus allerdings während des Trainings eines Neural Networks sehr sehr oft durchlaufen wird,
|
|
ist der Rechenaufwand dennoch sehr hoch, weshalb sich Neural Networks erst in den letzten 5"~10 Jahren durchsetzen konnten.
|