\chapter{Regularization with Neural Networks}%
\label{cha:Regularization with Neural Networks}
Obwohl die Modell-Komplexität bei Neuronalen Netzwerken aufgrund des Double Descent Effektes (\cref{sec:Double Descent effect for DNNs}) nicht nach oben beschränkt sein sollte,
ist es dennoch sinnvoll ein Neuronales Netzwerk zu regularisieren um eine bessere Generalisierung zu erreichen.
Neben den aus \cref{cha:Model Selection} bekannten Methoden (z.B. Data Augmentation) gibt es zusätzliche Methoden der Regularisierung von neuronalen Netzwerken.

\paragraph{Model Ensembles}%
\label{par:Model Ensembles}
Bei diesem Ansatz werden mehrere unabhängige Modelle Trainiert und die Testdaten anhand des durchschnittlichen Vorhersage der trainierten Modelle evaluiert.
Dies führt im Allgemeinen zu einer etwa 2\% höheren Genauigkeit.

Eine Abwandlung von dieser Methode verwendet Snapshots eines einzigen Modells zu unterschiedlichen Trainingsständen.
Oft wird bei diesem Verfahren nach dem Snapshot die Lernrate wieder hochgesetzt um dem Modell die Möglichkeit zu geben ein neues lokales Optimum zu finden.
Dies hat den Vorteil,
dass nur ein einzelnes Modell trainiert werden muss.
\begin{figure}[H]
    \centering
    \includegraphics[width=\textwidth]{images/model_ensembles_snapshots.png}
    \caption{Model Ensembles mit Snapshots}
    \label{fig:model_ensembles_snapshots}
\end{figure}

\paragraph{Dropout}%
\label{par:Dropout}
\begin{wrapfigure}{r}{.4\textwidth}
    \centering
    \includegraphics[width=0.8\linewidth]{dropout.png}
    \caption{Neuronal Network mit Dropout}
    \label{fig:dropout}
\end{wrapfigure}
Bei diesem Ansatz werden zufällig bei jedem Forward Pass ein Teil der Neuronen auf 0 gesetz (üblicherweise mit einer Wahrscheinlichkeit von 50\%).
Dies regularisiert das neuronale Netzwerk,
da es selbiges zu einer redundanten Repräsentation zwingt.
Zudem wird vermieden,
dass Duplikate zwischen den Neuronen,
da gleiche Gewichtsvektoren nicht mehr gleich angepasst werden.

Diese Methode kann auch als eine Art der \nameref{par:Model Ensembles} Methode verstanden werden,
da auch hier verschiedene Modelle trainiert werden.

Es gibt zwei zentrale Ansätze wie ein Modell,
welches auf diese Weise trainiert wurde getestet werden kann.
\begin{enumerate}
    \item \textbf{Ensemble View:} Wie bei der \nameref{par:Model Ensembles} Methode wird der Durchschnitt der Vorhersage mehrere Modelle genommen.
        Die verschiedenen Modelle sind hier lediglich das gleiche Modell mit unterschiedlichen Dropout Neuronen.
    \item \textbf{Expectation View:} Alle Neuronen werden aktiv gelassen und die Aktivierungsfunktion mit den Wahrscheinlichkeitsfaktor des Dropout multipliziert.
        Letzteres ist nötig, da die Aktivierungsfunktionen für ein lückenhaftes neuronales Netz trainiert wurden.
\end{enumerate} 

\paragraph{Drop Connect}%
\label{par:Drop Connect}
Eine Abwandlung von \dref{par:Dropout},
bei der alle Neuronen erhalten bleiben und lediglich Kanten zwischen den Neuronen weggelassen werden.
\begin{figure}[H]
    \centering
    \includegraphics[width=0.6\textwidth]{drop_connect.png}
    \caption{Drop Connect}
    \label{fig:drop_connect}
\end{figure}

\section{\texorpdfstring{Double Descent effect for \glsxtrshortpl{DNN}}{Double Descent effect for \glsfmtshortpl{DNN}}}%
\label{sec:Double Descent effect for DNNs}

\begin{wrapfigure}{r}{.5\textwidth}
    \vspace*{-10mm}
    \centering
    \includegraphics[width=\linewidth]{double_descent.png}
    \caption{Double Descent Effekt eines \glsxtrshortpl{DNN}}
    \label{fig:double_descent}
\end{wrapfigure}
Wie die meisten anderen Algorithmen haben auch Neuronale Netzwerke das Problem,
dass sie die Trainingsdaten overfitten und daher keine guten Ergebnisse auf den Validierungsdaten liefern.
Allerdings lässt sich bei \glspl{DNN} ein Double Descent beobachten.
Bis heute ist die Ursache für diesen Effekt noch nicht vollständig verstanden.
Nichtsdestotrotz lässt sich der Graph aus \cref{fig:double_descent} in 3 Bereiche einteilen:
\begin{enumerate}
    \item \say{classical regime}: Verhält sich wie jeder andere Algorithmus
    \item \say{interpolation threshold}: Die Trainingsdaten werden genau gelernt (Training Loss $\rightarrow$0),
        wobei hier die Anzahl der benötigten Parameter in etwa der Anzahl der gesampelten Datensätze entspricht
    \item \say{\say{Modern} interpolating regime}: Training Loss bleibt gering, allerdings senkt sich auch der Validation Loss auf wundersame Art
\end{enumerate}
Ein Beispiel hierfür ist der Populäre MNIST Datensatz ({\color{red}Vorlesung 08 Folie 82})

\subsection{Sample-wise non-monotonicity}%
\label{sub:Sample-wise non-monotonicity}
Der Zusammenhang zwischen interpolation threshold und Sample Size hat zur Folge,
dass es negative Folgen haben kann größere Sample zu nehmen,
da hier der interpolation threshold später erreicht wird.
\begin{figure}[H]
    \centering
    \includegraphics[width=0.6\textwidth]{sample-wise_non-monotonicity.png}
    \caption{Sample-wise non-monotonicity}
    \label{fig:sample-wise_non-monotonicity}
\end{figure}

\subsection{Episode-wise non-monotonicity}%
\label{sub:Episode-wise non-monotonicity}
Die interpolation threshold kann dazu führen,
dass ein längeres Training das Ergebniss erst verschlechtert und dann verbessert.
\begin{figure}[H]
    \centering
    \includegraphics[width=0.48\textwidth]{episode-wise_non-monotonicity_train_error.png}
    \hfill
    \includegraphics[width=0.48\textwidth]{episode-wise_non-monotonicity_test_error.png}
    \caption{Episode-wise non-monotonicity}
    \label{fig:episode-wise_non-monotonicity}
\end{figure}
