Vorlesung 02 bis Folie 166 hinzugefügt

This commit is contained in:
paul-loedige 2022-02-12 00:28:24 +01:00
parent 089c79b358
commit 33ca9c486e
10 changed files with 244 additions and 2 deletions

View File

@ -69,6 +69,7 @@
\newacronym{FRM}{FRM}{\gls{full_rank_matrix}}
\newacronym{MLE}{MLE}{Maximum Likelihood Estimation}
\newacronym{iid}{iid}{\gls{identically_independently_distributed}}
\newacronym{SDG}{SDG}{Stochastic Gradient Descent}
%--------------------
%nomenclature
@ -109,6 +110,8 @@
\newnom{mean-vector}{Mittelwerts-Vektor}{\bm{\mu}}{}{}
\newnom{covariance}{Kovarianz-Matrix}{\bm{\Sigma}}{}{}
\newnom{variance}{Varianz}{\sigma^2}{$\mathbb{E}_p[(X-\nomeq{mean})$]}{}
\newnom{sigmoid}{Sigmoid Function}{\sigma}{}{}
\newnom{learning_rate}{Learning Rate}{\eta}{}{}
\shorthandoff{"}
\makeglossaries

View File

@ -112,6 +112,8 @@ rightsub = \grq%
%--------------------
%math symbols and more
\usepackage{amsmath}
\DeclareMathOperator*{\argmax}{arg\,max}
\DeclareMathOperator*{\argmin}{arg\,min}
%special symbols
\usepackage{fontawesome}
\usepackage{amssymb}
@ -148,9 +150,15 @@ rightsub = \grq%
\makeatother
%boxes
\usepackage[framemethod=tikz]{mdframed}
\newmdenv[roundcorner=2mm, linecolor=blue, backgroundcolor=blue!5]{mybox}
%--------------------
% landscape
%--------------------
\usepackage{pdflscape}
%--------------------
% algorithms
%--------------------
\usepackage{algorithm}
\usepackage{algpseudocode}

View File

@ -1,3 +1,234 @@
\chapter{Linear Classification}%
\label{cha:Linear Classification}
Bei der Klassifikation eines Datensatzes $D =\{(\bm{x}_i,c_i)\}_{i=1\dots N}$ geht es darum,
die einzelnen Datenelemente $\bm{x}_i\in\mathbb{R}^d$ einer Klasse $c\in\{1\dots K\}$ zuzuordnen.
\paragraph{Generative Modelling}%
\label{par:Generative Modelling}
Bei generativen Klassifikator-Modellen wird auf Basis der gegebenen Daten die Wahrscheinlichkeitsverteilung $p(c)$ für alle Klassen
sowie die Wahrscheinlichkeitsverteilungen $p(\bm{x}|c)$ für die Elemente innerhalb der einzelnen Klassen bestimmt.
Anschließend kann mittels der Regel von Bayes (\cref{sub:Bayes Rule}) die Wahrscheinlichkeit dafür errechnet werden,
in welcher Klasse ein gegebenes $\bm{x}$ liegt:
\begin{equation}
p(c|\bm{x}) = \dfrac{p(\bm{x}|c)p(c)}{p(\bm{x})}
\end{equation}
Generative Modelle sind oft sehr komplex weshalb sie nicht näher behandelt werden.
\begin{itemize}
\item $p(c_1)\hat{=}$die Wahrscheinlichkeit, dass ein Element der Klasse $c_1$ angehört
\item $p(\bm{x}_1|c_1)\hat{=}$ die Wahrscheinlichkeit, dass ein Element, von dem bekannt ist, dass es zu $c_1$ gehört an Position $\bm{x}_1$ liegt
\end{itemize}
\paragraph{Discriminative Modelling}%
\label{par:Discriminative Modelling}
Bei diskriminativen Klassifikator-Modellen wird direkt $p(c|\bm{x})$ oder eine Prediktor-Funktion $f(\bm{x})$ ermittelt.
Diese Art von Klassifikator-Modellierung ist einfacher als das \nameref{par:Generative Modelling}.
\section{Binary Classification}%
\label{sec:Binary Classification}
Gibt es nur zwei Klassen ($c_i\in\{0,1\}$) spricht man von binärer Klassifikation.
Hierbei ist es das Ziel einen Klassifikator $f(\bm{x})$ anzulernen, sodass:
\begin{equation} \label{eq:binary_classification}
f(\bm{x}_i) = \begin{cases} >0 &\text{falls }c_i=1\\ <0 &\text{falls }c_i=0 \end{cases}
\end{equation}
\subsection{Linear Classifiers}%
\label{sub:Linear Classifiers}
\begin{wrapfigure}{r}{.5\textwidth}
\vspace*{-15mm}
\centering
\includegraphics[width=0.8\linewidth]{linear_classification.png}
\caption{Lineare Klassifikation}
\label{fig:linear_classification}
\end{wrapfigure}
Ein linearer Klassifikator hat die Form:
\begin{equation} \label{eq:linear_classifier}
f(\bm{x}) = \bm{w}^T\bm{x} + b
\end{equation}
Die Gerade (2D) bzw. Hyper-Ebene (N-D),
die durch diese Funktion $f(x)=0$ gegeben ist wird als Diskriminante (discriminator) bezeichnet.
$\bm{w}$ ist der Normalvektor (normal) zur Geraden und $b$ das Bias.
\subsubsection{Linear Separability}%
\label{ssub:Linear Separability}
\includegraphics[width=\textwidth]{linear_separability.png}
\subsection{Optimization}%
\label{sub:Optimization}
Um den linearen Klassifikator zu optimieren sind mehrere Methoden denkbar.
\subsubsection{0-1 loss}%
\label{ssub:0-1 loss}
Es lässt sich eine Stufenfunktion definieren,
welche 1 für $f(\bm{x})>0$ und 0 für alle anderen Werte von $f(\bm{x})$ ist:
\begin{equation} \label{eq:0-1_prediction}
y = \text{step}(f(\bm{x})) = \text{step}(\bm{w}^T\bm{x} + b)
\end{equation}
Eine Optimierung hätte dann das Ziel den 0-1-Verlust $L_0$ zu optimieren.
\begin{equation} \label{eq:0-1_loss}
L_0(\bm{w}) = \sum_i \mathbb{I}(\text{step}(\bm{w}^T\bm{x} + b)\ne c_i)
\end{equation}
In der Formel für $L_0$ gibt $\mathbb{I}$ 1 zurück,
wenn der Inhalt der Klammern wahr ist.
Die Summe gibt daher die Anzahl der falsch klassifizierten Datenpunkte zurück.
Da es sich bei der Optimierung von $L_0$ um ein NP-hartes Problem handelt wird diese Methode in der Praxis fast nie verwendet.
\subsubsection{regression loss}%
\label{ssub:regression loss}
Eine Optimierung des Klassifikators mithilfe des Regression Loss $L_{reg}$ ist einfach,
da es sich hierbei der quadratische Verlust verwendet werden kann.
\begin{equation} \label{eq:regression_loss}
L_{reg}(\bm{w}) = \sum_i (f(\bm{x}_i)-c_i)^2
\end{equation}
Allerdings hat diese Optimierungsmethode den Nachteil,
dass sie stark durch Ausreißer beeinflusst werden kann.
\begin{figure}[H]
\centering
\includegraphics[width=0.8\textwidth]{regression_loss.png}
\caption{Auswirkung von Ausreißern auf die Verwendung des Regression Loss'}
\label{fig:regression_loss}
\end{figure}
\subsubsection{Logistic \noms{sigmoid}}%
\label{ssub:Logistic sigmoid function}
\begin{wrapfigure}{r}{.5\textwidth}
\vspace*{-15mm}
\centering
\includegraphics[width=0.8\linewidth]{sigmoid_function.png}
\caption{die \noms{sigmoid}}
\label{fig:sigmoid_function}
\end{wrapfigure}
Da sich sowohl eine lineare (auch außerhalb des relevanten Bereiches $\{0,1\}$),
als auch eine stufenförmige (nicht kontinuierlich) Optimierung nicht besonders gut eignen wird oft auf die \nomf{sigmoid} zurückgegriffen.
\begin{equation} \label{eq:sigmoid_function}
\nomeq{sigmoid}(a) = \dfrac{1}{1+\exp(-a)}
\end{equation}
Auf der Basis dieser Funktion lässt sich eine Verlustfunktion definieren:
\begin{equation} \label{eq:sigmoid_loss_function}
L(\bm{w}) = \sum_i (\nomeq{sigmoid}(f(\bm{x}_i)) - c_i)^2 = \sum_i (\nomeq{sigmoid}(\bm{w}^T\bm{x}_i + b) - c_i)^2
\end{equation}
\subsubsection{Log-Likelihood}%
\label{ssub:Log-Likelihood}
Mithilfe des \noms{sigmoid} lässt sich die Wahrscheinlichkeitsdichtefunktion für die beiden Klassen aufstellen:
\begin{align} \label{eq:simoidial_probability_distribution}
&p(c=1|\bm{x}) = \nomeq{sigmoid}(\bm{w}^T\bm{x}+b), p(c=0|\bm{x}) = 1 - \nomeq{sigmoid}(\bm{w}^T\bm{x}+b)\\
\Leftrightarrow &p(c|\bm{x}) = p(c=1|\bm{x})^c p(c=0|\bm{x})^{1-c} = \nomeq{sigmoid}(\bm{w}^T\bm{x}+b)^c (1 - \nomeq{sigmoid}(\bm{w}^T\bm{x}+b))^{1-c}
\end{align}
Hierbei handelt es sich um eine bedingte Bernoulli Distribution (\cref{sub:Bernoulli Distribution}),
weshalb nun direkt die bedingte Bernoulli log-likelihood optimiert werden kann.
Die negative Likelihood wird auch oft als Cross-Entropy Loss bezeichnet
\begin{align} \label{eq:bernoulli_log-likelihood}
\log\text{lik}(\tilde{\bm{w}},D) &= \sum_i \log p(c_i|\bm{x}_i)\\
&= \sum_i \log(p(c=1|\bm{x}_i)^{c_i} p(c=0|\bm{x}_i)^{1-c_i})\\
&= \dots\\
&= \sum_i c_i \log \nomeq{sigmoid}(\tilde{\bm{w}}^T\tilde{\bm{x}}_i) + (1-c_i)\log(1 - \nomeq{sigmoid}(\tilde{\bm{w}}^T\tilde{\bm{x}}_i))
\end{align}
\subsubsection{Logistic Regression}%
\label{ssub:Logistic Regression}
Die Optimierung der Log-Likelihood einer \noms{sigmoid} nennt man \say{Logistic Regression},
obwohl es eigentlich eine Klasifizierung ist (alte Funktion; früher war man bei der Benennung noch nicht so streng).
\begin{equation} \label{eq:logistic_regression}
\argmax_{\tilde{\bm{w}}}\log\text{lik}(\tilde{\bm{w}},D) = \argmax_{\tilde{\bm{w}}} \sum_i c_i \log \nomeq{sigmoid}(\tilde{\bm{w}}^T\tilde{\bm{x}}_i) + (1-c_i)\log(1 - \nomeq{sigmoid}(\tilde{\bm{w}}^T\tilde{\bm{x}}_i))
\end{equation}
Für diese Funktion kann gezeigt werden,
dass sie konvex ist (es existiert nur ein globales Maximum).
Allerdings handelt es sich anders als bei der linearen Regression (\cref{cha:Linear Regression}) nicht um eine \say{Closed Form Solution},
was bedeutet,
dass hier der \nameref{sec:Gradient Descent} für die Optimierung verwendet wird.
\subsubsection{Generalized Logistic Models}%
\label{ssub:Generalized Logistic Models}
Um das Verfahren zur Erstellung linearer Diskriminanten auch für nicht-lineare Feature-Räume zu verwenden,
muss ein ähnlicher Trick wie bei der \nameref{sec:Generalisierung der linearen Regression} verwendet werden.
Auch hier wird mittels einer \nomf{vector_valued_function} auf eine nicht-lineare Funktion abgebildet.
\begin{equation} \label{eq:generlized_logisitc_regression}
\argmax_{\bm{w}}\log\text{lik}(\bm{w},D) = \argmax_{\bm{w}} \sum_i c_i \log \nomeq{sigmoid}(\bm{w}^T\bm{\phi}(\bm{x}_i)) + (1-c_i)\log(1 - \nomeq{sigmoid}(\bm{w}^T\bm{\phi}(\bm{x}_i)))
\end{equation}
\begin{figure}[H]
\vspace*{-5mm}
\centering
\includegraphics[width=0.5\textwidth]{generalized_logistic_regression.png}
\caption{Generalized Logistic Regression}
\label{fig:generalized_logistic_regression}
\end{figure}
\subsubsection{Regularization of the Logistic Regression}%
\label{ssub:Regularization of the Logistic Regression}
Ähnlich wie bei der Regularisierung der linearen Regression (\cref{sec:Regularization of the Linear Regression}) ist es auch bei der Logistic Regression sinnvoll eine Regularization Penalty einzuführen,
um Overfitting zu vermeiden.
\begin{equation} \label{eq:regularized_logisitc_regression}
L(\tilde{\bm{w}},D)=\log\text{lik}(\tilde{\bm{w}},D) - \nomeq{regularization_factor}\text{penalty}(\tilde{\bm{w}})
\end{equation}
Bei der Lositic Regression wird hierbei meist der der L2 Regularization Loss $\text{penalty}(\tilde{\bm{w}})= ||\tilde{\bm{w}}||^2$ verwendet
\section{Gradient Descent}%
\label{sec:Gradient Descent}
Der Gradient Descent ist ein Verfahren,
dass es ermöglicht den Extremwert einer konvexen Funktion zu finden.
Allgemein wird versucht eine Funktion,
die aus der Summe von Verlust $l$ und Penalty besteht zu optimieren.
\begin{equation} \label{eq:general_form_optimization}
\argmin_{\text{parameters $\bm{\theta}$}}\sum_{i=1}^N l(\bm{x}_i,\bm{\theta}) + \nomeq{regularization_factor} \text{penalty}(\bm{\theta})
\end{equation}
Bei diesem Verfahren wird ein beliebiger Anfangspunkt im Werteraum gewählt,
der Gradient bestimmt und ein neuer Punkt in absteigender Richtung gewählt.
Dieser Schritt wird so lange wiederholt,
bis ein Minimum erreicht ist (Gradient = 0).
\begin{algorithm}
\caption{Gradient Descent}\label{gradient_descent_algorithm}
\begin{algorithmic}[1]
\State $\bm{x}_0$ $\gets$ init, $t=0$
\While{termination condition does not hold}
\State $\bm{x}_{t+1}=\bm{x}_t-\nomeq{learning_rate}\nabla f(\bm{x}_t)$, $t=t+1$
\EndWhile
\end{algorithmic}
\end{algorithm}
Die \say{termination condition} des Algorithmus kann z.B. die Größe des Gradienten, die Änderung des Wertes von $f(\bm{x}_t)$
oder einfach eine bestimmte Anzahl an Schleifendurchläufen sein.
\subsection{\nomf{learning_rate}}%
\label{sub:learning_rate}
Meistens wird eine abnehmende \noms{learning_rate} verwendet (z.B. $\nomeq{learning_rate}_t = \frac{1}{t}$),
damit zu Beginn schnell Fortschritte in Richtung des Minimums gemacht werden und zudem vermieden wird,
im späteren Verlauf um das Minimum herumzuspringen.
\subsection{Batch Gradient Descent}%
\label{sub:Batch Gradient Descent}
Im Standardverfahren des Gradient Descents Loss Function über alle Datenpunkte evaluiert.
Man spricht daher auch von einem Batch Gradient Descent.
\begin{equation} \label{eq:batch_gradient_descent}
\frac{1}{n}\sum_i l(\bm{x}_i;\bm{\theta})\qquad \bm{\theta}_{t+1} = \bm{\theta}_t - \dfrac{\eta}{n}\sum_i \nabla_{\bm{\theta}} l(\bm{x}_i;\bm{\theta}_t)
\end{equation}
Dies stellt eine Approximation des tatsächlich erwarteten Verlustes nach dem Prinzip der \nameref{sub:Monte-carlo estimation} dar.
\begin{equation}
\mathbb{E}_{\bm{x}}\left[l(\bm{x};\bm{\theta})\right]\qquad \bm{\theta}_{t+1} = \bm{\theta}_t - \eta\mathbb{E}_{\bm{x}}\left[\nabla_{\bm{\theta}} l(\bm{x};\bm{\theta}_t)\right]
\end{equation}
\subsection{\glsxtrfull{SDG}}%
\label{sub:SDG}
\begin{wrapfigure}{r}{.5\textwidth}
\vspace*{-15mm}
\centering
\includegraphics[width=0.8\linewidth]{batch_vs_stochastic_gradient_descent.png}
\caption{Batch vs. Stochastic Gradient Descent}
\label{fig:batch_vs_stochastic_gradient_descent}
\end{wrapfigure}
Um die Loss Function nicht für alle Datenpunkte evaluieren zu müssen wird beim \gls{SDG} lediglich der Verlust an einem einzelnen, zufällig gewählten Punkt ermittelt
\begin{equation} \label{eq:stochastic_gradient_descent}
l(\bm{x}_i;\bm{\theta})\qquad \bm{\theta}_{t+1} = \bm{\theta}_t - \eta\nabla_{\bm{\theta}} l(\bm{x}_i;\bm{\theta}_t)
\end{equation}
Dies hat zwar den Nachteil,
dass Die Funktion nicht immer absteigt (jedoch meistens).
Allerdings ist die Evaluation der Loss Function wesentlich effizienter als beim Batch Gradient Descent.
\subsection{Mini-Batches}%
\label{sub:Mini-Batches}
Die Verwendung von Mini-Batches für den Gradient Descent stellt eine Mischform von \nameref{sub:Batch Gradient Descent} und \nameref{sub:SDG} dar.
Hierbei wird nicht die Loss Function für einen kleinen Teil der Datenpunkte ausgewertet.
Dies ist weniger rechenintensiv (vor allem, wenn die Mini-Batch-Größe an die verwendete GPU angepasst ist) als beim \nameref{sub:Batch Gradient Descent}
aber auch zielgerichteter als beim \nameref{sub:SDG}.
\begin{equation} \label{eq:mini-batches}
\frac{1}{b}\sum_i l(\bm{x}_i;\bm{\theta})\qquad \bm{\theta}_{t+1} = \bm{\theta}_t - \dfrac{\eta}{b}\sum_i \nabla_{\bm{\theta}} l(\bm{x}_i;\bm{\theta}_t)
\end{equation}
WEITER AUF SEITE 166

View File

@ -116,8 +116,8 @@ ist es oft sinnvoll die Eingabedaten mittels \nomsym{vector_valued_function} umz
\label{fig:2-d-linear-regression}
\end{figure}
\section{Regularization}%
\label{sec:Regularization}
\section{Regularization of the Linear Regression}%
\label{sec:Regularization of the Linear Regression}
Bei der Auswertung einer polynomialen Funktion (\cref{ssub:Polynomial Curve Fitting}) muss der Polynomialgrad der \nomf{vector_valued_function} hoch genug gewählt werden,
damit die lineare Regression kein kleineres Polynom als die echte Grundfunktion verwendet (\gls{underfitting}).
Allerdings darf der Grad des Polynoms auch nicht so hoch gewählt werden,

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
images/regression_loss.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
images/sigmoid_function.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB