forked from TH_General/Template_Summary
103 lines
4.6 KiB
TeX
103 lines
4.6 KiB
TeX
\chapter{\texorpdfstring{\glsxtrlongpl{RNN}}{\glsfmtlongpl{CNN}}}%
|
|
\label{cha:RNNs}
|
|
\glspl{RNN} stellen eine Erweiterung von \glspl{CNN} (\cref{cha:CNNs}) dar.
|
|
Hierbei wir nicht nur aus einer einmaligen Eingabe eine Ausgabe produziert.
|
|
Stattdessen ist die Anzahl der Ein"~ und Ausgabeelemente flexibel gestaltet.
|
|
Hierbei ist die Mehrzahl nicht im absoluten Sinne,
|
|
sondern im zeitlichen Sinne zu verstehen (mehrere Eingaben\slash\,Ausgaben hintereinander).
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.8\textwidth]{RNN_process_sequences.png}
|
|
\caption{Verschiedene Prozess Sequenzen eines \texorpdfstring{\gls{RNN}}{RNN}}
|
|
\label{fig:rnn_process_sequences}
|
|
\end{figure}
|
|
\begin{wrapfigure}{r}{.3\textwidth}
|
|
\centering
|
|
\includegraphics[width=0.5\linewidth]{vanilla_rnn.png}
|
|
\caption{Vanilla \texorpdfstring{\glsxtrshort{RNN}}{\glsfmtshort{RNN}}}
|
|
\label{fig:vanilla_rnn}
|
|
\end{wrapfigure}
|
|
\glspl{RNN} unterscheiden sich vor allem darin von \glspl{CNN},
|
|
dass sie zu jedem Zeitpunkt einen festen Zustand $h$ haben.
|
|
Der Zustand ergibt sich aus der Rekurrenz Gleichung (recurrence formula).
|
|
\begin{align} \label{eq:recurrence formula}
|
|
&\bm h_t = f_{\bm W}(\bm h_{t-1},\bm x_t)
|
|
\end{align}
|
|
\begin{itemize}
|
|
\item $\bm h_t$: neuer Zustand
|
|
\item $f_{\bm W}$: Funktion mit den Parametern $\bm W$
|
|
\item $\bm h_{t-1}$: alter Zustand
|
|
\item $\bm x_t$ Input zum Zeitpunkt $t$
|
|
\end{itemize}
|
|
|
|
\section{\texorpdfstring{\glsxtrshort{RNN}}{\glsfmtshort{RNN}} Computational Graph}%
|
|
\label{sec:RNN Computational Graph}
|
|
{\color{red} Vorlesung 09 Folien 58-64}
|
|
|
|
\section{\texorpdfstring{\glsxtrfull{BPTT}}{\glsfmtfull{BPTT}}}%
|
|
\label{sec:BPTT}
|
|
Die Gewichte in einem \gls{RNN} können mithilfe von \gls{BPTT} angepasst werden.
|
|
Hierbei wird der Gradient wie bei der normalen \dref{sec:Backpropagation} errechnet,
|
|
wobei zusätzlich noch die Differentiation in Zeitrichtung durchgeführt werden muss.
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.8\textwidth]{BPTT.png}
|
|
\caption{\texorpdfstring{\glsxtrlong{BPTT}}{\glsfmtlong{BPTT}}}
|
|
\label{fig:BPTT}
|
|
\end{figure}
|
|
|
|
\subsection{Truncated \texorpdfstring{\glsxtrshort{BPTT}}{\glsfmtshort{BPTT}}}%
|
|
\label{sub:Truncated BPTT}
|
|
Da \gls{BPTT} bei einer langen Zeitfolge sehr rechenintensiv ist,
|
|
wird der Algorithmus zumeist nur für die letzten paar Schritte druchgeführt.
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.6\textwidth]{truncated_BPTT.png}
|
|
\caption{Truncated \texorpdfstring{\glsxtrshort{BPTT}}{\glsfmtshort{BPTT}}}
|
|
\label{fig:truncated_BPTT}
|
|
\end{figure}
|
|
|
|
\subsection{Gradient Flow}%
|
|
\label{sub:Gradient Flow}
|
|
\includegraphics[scale=.6]{gradient_flow_vanilla_rnns.png}\\
|
|
\includegraphics[scale=.6]{gradient_flow_vanilla_rnns2.png}
|
|
|
|
\section{\texorpdfstring{\glsxtrfull{LSTM}}{\glsfmtfull{LSTM}}}%
|
|
\label{sec:LSTM}
|
|
Da die Probleme des Gradient Flows bei Vanilla \glspl{RNN} (explodierende oder verschwindende Gradienten) gerade bei langen Zeitfolgen problematisch sind,
|
|
wurde das System der \glspl{LSTM} entwickelt.
|
|
Hierbei wird zu dem Zustand $\bm h$ noch ein weiterer Speicherzustand $\bm c$ hinzugefügt.
|
|
Die Berechnung erfolgt durch
|
|
\begin{equation} \label{eq:LSTM function}
|
|
\bm c = \bm f_t\circ\bm c_{t-1} + \bm i_t\circ\bm g_t,\quad \bm h_t = \bm o_t\circ\tanh{\bm c_t}
|
|
\end{equation}
|
|
\begin{wrapfigure}{r}{.4\textwidth}
|
|
\centering
|
|
\includegraphics[width=\linewidth]{LSTM.png}
|
|
\caption{\texorpdfstring{\glsxtrshort{LSTM}}{\glsfmtshort{LSTM}}}
|
|
\label{fig:LSTM}
|
|
\end{wrapfigure}
|
|
\begin{itemize}
|
|
\item $\bm c$ Speicherzustand zum Zeitpunkt $t$ bzw. $t-1$
|
|
\item $\bm f$ Forget Gate: \tabto{3cm}$\bm f_t = \nomeq{sigmoid}\left(\bm W_f \begin{bmatrix} \bm h_{t-1} \\ \bm x_t \end{bmatrix}\right)$
|
|
\item $\bm i$ Input Gate: \tabto{3cm}$\bm i_t = \nomeq{sigmoid}\left( \bm W_i \begin{bmatrix} \bm h_{t-1} \\ \bm x_t \end{bmatrix}\right) $
|
|
\item $\bm g$ Gate Gate: \tabto{3cm}$\bm g_t = \tanh \left(\bm W_g \begin{bmatrix} \bm h_{t-1} \\ \bm x_t \end{bmatrix}\right)$
|
|
\item $\bm o$ Output Gate: \tabto{3cm}$\bm o_t = \tanh \left(\bm W_o \begin{bmatrix} \bm h_{t-1} \\ \bm x_t \end{bmatrix}\right)$
|
|
\end{itemize}
|
|
Die Gatter sind dafür da,
|
|
zu entscheiden,
|
|
wann das \gls{RNN} sich ein Zwischenergebnis merkt und wann nicht
|
|
|
|
\subsection{Gradient Flow}%
|
|
\label{sub:LSTM:Gradient Flow}
|
|
\includegraphics[scale=.6]{LSTM_gradient_flow.png}\\
|
|
\includegraphics[scale=.6]{LSTM_gradient_flow2.png}
|
|
|
|
\subsection{Deep \texorpdfstring{\glsxtrshortpl{LSTM}}{\glsfmtshortpl{LSTM}}}%
|
|
\label{sub:Deep LSTMs}
|
|
\includegraphics[scale=.6]{deep_lstms.png}
|
|
|
|
\section{\texorpdfstring{\glsxtrfull{GRU}}{\glsfmtfull{GRU}}}%
|
|
\label{sec:GRU}
|
|
\includegraphics[scale=.6]{GRU.png}
|