diff --git a/Packages.tex b/Packages.tex index 430d1cc..177405b 100644 --- a/Packages.tex +++ b/Packages.tex @@ -7,7 +7,8 @@ %-------------------- %language %-------------------- -\usepackage{babel} +\usepackage[ngerman, english]{babel} +\usepackage[shortcuts]{extdash} %-------------------- %images diff --git a/chapters/Classical_Unsupervised_Learning/Auto-Encoders.tex b/chapters/Classical_Unsupervised_Learning/Auto-Encoders.tex new file mode 100644 index 0000000..718f2b9 --- /dev/null +++ b/chapters/Classical_Unsupervised_Learning/Auto-Encoders.tex @@ -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} + diff --git a/chapters/Classical_Unsupervised_Learning/Variational_Auto-Encoders.tex b/chapters/Classical_Unsupervised_Learning/Variational_Auto-Encoders.tex deleted file mode 100644 index 3aff554..0000000 --- a/chapters/Classical_Unsupervised_Learning/Variational_Auto-Encoders.tex +++ /dev/null @@ -1,3 +0,0 @@ -\chapter{Variational Auto-Encoders}% -\label{cha:Variational Auto-Encoders} - diff --git a/images/auto-encoder.png b/images/auto-encoder.png new file mode 100644 index 0000000..0a92c1f Binary files /dev/null and b/images/auto-encoder.png differ diff --git a/images/class-conditional_VAE.png b/images/class-conditional_VAE.png new file mode 100644 index 0000000..6f6e0fc Binary files /dev/null and b/images/class-conditional_VAE.png differ diff --git a/images/image_analogies.png b/images/image_analogies.png new file mode 100644 index 0000000..da9237b Binary files /dev/null and b/images/image_analogies.png differ diff --git a/images/latent_space.png b/images/latent_space.png new file mode 100644 index 0000000..9fa68b5 Binary files /dev/null and b/images/latent_space.png differ diff --git a/images/latent_space_vector_interpolation.png b/images/latent_space_vector_interpolation.png new file mode 100644 index 0000000..4fd8435 Binary files /dev/null and b/images/latent_space_vector_interpolation.png differ diff --git a/images/linear_nonlinear_auto-encoder_comparison.png b/images/linear_nonlinear_auto-encoder_comparison.png new file mode 100644 index 0000000..747a6af Binary files /dev/null and b/images/linear_nonlinear_auto-encoder_comparison.png differ diff --git a/images/noisy_decoder.png b/images/noisy_decoder.png new file mode 100644 index 0000000..d0cd8c6 Binary files /dev/null and b/images/noisy_decoder.png differ