forked from TH_General/Template_Summary
108 lines
5.1 KiB
TeX
108 lines
5.1 KiB
TeX
\chapter{Auto-Encoders}%
|
|
\label{cha:Auto-Encoders}
|
|
\begin{wrapfigure}{r}{.5\textwidth}
|
|
\centering
|
|
\includegraphics[width=\linewidth]{auto-encoder.png}
|
|
\caption{Auto-Encoder}
|
|
\label{fig:auto-encoder}
|
|
\end{wrapfigure}
|
|
Auto-Encoder sind \nameref{sec:Feedforward Neural Networks} (\cref{sec:Feedforward Neural Networks}),
|
|
welche auf Basis einer Eingabe $\bm x$ $\bm x$ vorhersagen.
|
|
Die Besonderheit liegt darin,
|
|
dass ein Auto-Encoder ein Bottelneck-Layer enthält,
|
|
welches eine deutlich geringere Dimension als die Eingabedaten hat.
|
|
Dies zwingt den Auto-Encoder implizit zu einer \dref{cha:Dimensionality Reduction}.
|
|
Das Ziel ist es den Reconstruction Loss $L(\bm\theta)$ zu minimieren.
|
|
\begin{equation} \label{eq:auto-encoder_reconstruction_loss}
|
|
L(\bm\theta) = \sum_i \|\dec_{\bm\theta}(\enc_{\bm\theta}(\bm x_i)) - \bm x_i \|^2
|
|
\end{equation}
|
|
Die einfachste Form eines Auto-Encoders verwendet jeweils nur eine lineare Schicht für das Encoden und Decoden (meist \gls{PCA} (\cref{sub:PCA})).
|
|
|
|
\paragraph{Anwendungsgebiete}%
|
|
\label{par:Auto-Encoders:Anwendungsgebiete}
|
|
Es gibt mehrere Gründe für den Einsatz von Auto-Encodern:
|
|
\begin{itemize}
|
|
\item Mapping von höherdimensionalen Daten in zweidimensionale Visualisierung
|
|
\item Datenkompression (hierfür werden \glsxtrshortpl{VAE}(\cref{sec:VAEs}) benötigt)
|
|
\item Lernen von abstrakten Features als Datenvorverarbeitung für einen Supervised Learning Algorithmus (\cref{part:Classical Supervised Learning})
|
|
\item \say{semantically meaningful representation}, die z.B. eine Interpolation zwischen Bildern ermöglicht (\cref{??})
|
|
\end{itemize}
|
|
|
|
\section{Deep Auto-Encoders}%
|
|
\label{sec:Deep Auto-Encoders}
|
|
Deep Auto-Encoders sind Auto-Encoder,
|
|
welche die Daten nicht auf eine linearen Unterraum projizieren,
|
|
sondern stattdessen auf eine nichtlineare \gls{manifold} abbildet.
|
|
Nichtlineare Auto-Encoder haben den vorteil,
|
|
dass sie deutlich mächtigere \say{Codes} lernen können als lineare Auto-Encoder.
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.8\textwidth]{linear_nonlinear_auto-encoder_comparison.png}
|
|
\caption{Vergleich von linearen und nichtlinearen Auto-Encodern}
|
|
\label{fig:linear_nonlinear_auto-encoder_comparion}
|
|
\end{figure}
|
|
|
|
\subsection{Generative Model}%
|
|
\label{sub:Generative Model}
|
|
\begin{wrapfigure}{r}{.4\textwidth}
|
|
\vspace*{-10mm}
|
|
\centering
|
|
\includegraphics[width=0.8\linewidth]{noisy_decoder.png}
|
|
\caption{Noisy Decoder}
|
|
\label{fig:noisy_decoder}
|
|
\end{wrapfigure}
|
|
Da Deep Auto-Encoder keine Verteilung erlernen können sie eigentlich nicht als generative Modelle verwendet werden.
|
|
Dies liegt vor allem daran,
|
|
dass der Decoder für einen Deep Auto-Encoder deterministisch arbeitet.
|
|
Dies lässt sich umgehen,
|
|
indem ein \say{Noisy Decoder}\slash\,\say{Noisy Observation Model} definiert wird.
|
|
\begin{equation} \label{eq:noisy_decoder}
|
|
p(\bm x|\bm z) = \nomeq{gaussian_distribution}{\bm x|\bm\mu_{\bm\theta}(\bm z),\nomeq{variance}\nomeq{identity_matrix}}
|
|
\end{equation}
|
|
\begin{itemize}
|
|
\item $\bm\mu_{\bm\theta(\bm z)}$: Funktion des Decoders mit den Parametern $\bm\theta$
|
|
\end{itemize}
|
|
|
|
|
|
\section{\glstopfullpl{VAE}}%
|
|
\label{sec:VAEs}
|
|
Ein \gls{VAE} unterscheidet sich von normalen Auto-Encodern darin,
|
|
dass es zugleich ein Generative Model ist.
|
|
Hierbei verwenden \glspl{VAE} das Verfahren der Amortized Variational Inference (\cref{par:Special Case 2: Amortized Variational Inference}) für die \dref{cha:Dimensionality Reduction}.
|
|
|
|
\subsection{Class\-/conditional \glstopshort{VAE}}%
|
|
\label{sub:Class-conditional VAE}
|
|
\begin{wrapfigure}{r}{.3\textwidth}
|
|
\centering
|
|
\includegraphics[width=0.8\linewidth]{class-conditional_VAE.png}
|
|
\caption{Class\-/conditional VAE}
|
|
\label{fig:class-conditional_VAE}
|
|
\end{wrapfigure}
|
|
Eine Erweiterung des \gls{VAE} sind Class"~conditional \glspl{VAE}.
|
|
Hierbei wird das Label der Eingabedaten sowohl an den Encoder als auch an den Decoder mit übergeben.
|
|
Dies ist vor allem für den Decoder eine große Vereinfachung,
|
|
da er nun nur noch versuchen muss eine Variation (z.B. Schriftart) einer bekannten Ausgabe (z.B. die Zahl 3) zu regenerieren.
|
|
\begin{itemize}
|
|
\item Durch die Veränderung von zwei latenten Dimensionen (z.B. Dimensionen von $\bm z$) bei gleichbleibenden $y$ kann der \say{latent space} visualisiert werden.
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.8\linewidth]{latent_space.png}
|
|
\caption{Latent Space}
|
|
\label{fig:latent_space}
|
|
\end{figure}
|
|
\item Durch die Veränderung des Labels $y$ bei gleichbleibenden $\bm z$ können Analogien von Bildern erzeugt werden
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.7\textwidth]{image_analogies.png}
|
|
\caption{Image Analogies}
|
|
\label{fig:image_analogies}
|
|
\end{figure}
|
|
\item die Interpolation zwischen zwei Vektoren im \say{latent space} kann zu interessanten Ergebnissen führen
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.8\textwidth]{latent_space_vector_interpolation.png}
|
|
\label{fig:latent_space_vector_interpolation}
|
|
\end{figure}
|
|
\end{itemize}
|
|
|