Letztes Kapitel hinzugefügt.

This commit is contained in:
paul-loedige 2022-02-20 21:34:37 +01:00
parent 44c81306a8
commit 26023f3ba7
10 changed files with 109 additions and 4 deletions

View File

@ -7,7 +7,8 @@
%--------------------
%language
%--------------------
\usepackage{babel}
\usepackage[ngerman, english]{babel}
\usepackage[shortcuts]{extdash}
%--------------------
%images

View File

@ -0,0 +1,107 @@
\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}

View File

@ -1,3 +0,0 @@
\chapter{Variational Auto-Encoders}%
\label{cha:Variational Auto-Encoders}

BIN
images/auto-encoder.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/image_analogies.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

BIN
images/latent_space.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

BIN
images/noisy_decoder.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB