Bayesian Learning abgeschlossen.

This commit is contained in:
paul-loedige 2022-02-16 00:57:54 +01:00
parent 4a994c767f
commit 1dc2ea3a94
4 changed files with 74 additions and 1 deletions

View File

@ -79,6 +79,7 @@
\newacronym{DNN}{DNN}{Deep Neural Network}
\newacronym{RBF}{RBF}{Radial Basis Function Kernel}
\newacronym{SVM}{SVM}{Support Vector Machine}
\newacronym{ARD}{ARD}{Automatic Relevance Determination}
%--------------------
%nomenclature
@ -131,6 +132,8 @@
\newnom{slack-variable}{Slack-Variable}{\xi_i}{}
\newnom{parameter_vector}{Parameter Vector}{\bm{\theta}}{}
\newnom{gaussian_distribution}{Gaußsche Normalverteilung}{\mathcal{N}}{}
\newnom{gaussian_process}{Gaußscher Prozess}{\mathcal{GP}}{}
\newnom{hyper_parameters}{Hyper-Parameter}{\bm{\beta}}{}
\shorthandoff{"}
\makeglossaries

View File

@ -1,4 +1,4 @@
\chapter{Bayesian Learning**}%
\chapter{Bayesian Learning}%
\label{cha:Bayesian Learning}
Die meisten bisher behandelten Algorithmen geben auf Basis der gegebenen Eingaben ein einzelnes Modell (den \nomf{parameter_vector}) zurück.
Wie allerdings bereits gezeigt wurde,

View File

@ -39,3 +39,43 @@ Anschließend erfolgt die Regression nach den Schritten des \nameref{cha:Bayesia
\end{enumerate}
Es fällt auf, dass $\nomeq{mean}(\bm{x^*})$ sich im Vergleich zur \nameref{sub:Ridge Regression} nicht verändert hat.
Allerdings ist $\nomeq{variance}(\bm x^*)$ jetzt abhängig von den Eingangsdaten.
\section{Gaussian Processes}%
\label{sec:Gaussian Processes}
Ein Gaußscher Prozess ist im Grunde nichts anderes als die kernelized version der \nameref{sec:Bayesian Linear Regression} ({\color{red}Beweis: Vorlesung 07 Folie 44 ff.}).
\begin{equation} \label{eq:guassian_process_general_definition}
f(\bm x)\sim\nomeq{gaussian_process}(\underbrace{m(\bm x)}_{\text{mean function}},\underbrace{k(\bm x,\bm x')}_{\text{covariance function}})
\end{equation}
\begin{itemize}
\item Die \say{mean function} gibt den Prior für die Funktion:
\begin{equation} \label{eq:gaussian_process_mean_function}
\mathbb{E}[f(\bm x)] = m(\bm x)
\end{equation}
(im folgenden wird angenommen $m(\bm x) = 0$)
\item Die \say{covariance function} gibt an, wie ähnlich die Funktion $f$ an den Stellen $\bm x$ und $\bm x'$ ist
\begin{equation}
\label{eq:gaussian_process_covariance_function}
\mathbb{E}[f(\bm x)f(\bm x')] = k(\bm x,\bm x')
\end{equation}
(Covariance Function muss positiv definit sein (genau wie Kernel Function(\cref{sec:Positive Definite Kernels})))
\end{itemize}
Für Gaußsche Prozesse lässt ist der Posterior gegeben durch:\\
({\color{red} Herleitung und weitere Informationen Vorlesung 07 Folie 40})
\begin{equation} \label{eq:gaussian_process_posterior}
p(\bm y|\bm X) = \nomeq{gaussian_distribution}(\bm y|0,\bm K + \sigma_y^2\nomeq{identity_matrix})
\end{equation}
Hierbei ist $\bm K$ die \say{covariance matrix} und nicht die \noms{kernel_matrix} (außer $k$ ist eine \noms{kernel_function})
\begin{equation} \label{eq:covariance_matrix}
\bm K = \begin{bmatrix}
k(\bm x_1,\bm x_1) & \cdots & k(\bm x_1,\bm x_N)\\
\vdots & \ddots & \vdots\\
k(\bm x_N, \bm x_1) & \cdots & k(\bm x_N,\bm x_N)
\end{bmatrix}
\end{equation}
Die Vorhersage $p(y^*|\bm X,\bm y,\bm x^*)$ ist eine \noms{gaussian_distribution},
wobei \noms{mean} und \noms{variance} gegeben sind durch:\\
({\color{red} Herleitung Vorlesung 07 Folie 41})
\begin{itemize}
\item $\nomeq{mean}(\bm x^*) = \bm k_{\bm x^*}^T(\bm K + \sigma_y^2\nomeq{identity_matrix})^{-1}\bm y$
\item $\nomeq{variance}(\bm x^*) = k^* + \sigma_y^2 - \bm k_{\bm x^*}^T(\bm K + \sigma_y^2\nomeq{identity_matrix})^{-1}\bm k_{\bm x^*}$
\end{itemize}

View File

@ -95,3 +95,33 @@ Dies ermöglicht es viele Algorithmen (z.B. \nameref{cha:Linear Classification}
\item $\nomeq{kernel_vector}(\bm x^*) = \begin{bmatrix} \nomeq{kernel_function}(\bm x_1,\bm x^*) \\\vdots\\\nomeq{kernel_function}(\bm x_N,\bm x^*) \end{bmatrix}
= \begin{bmatrix} \bm\phi(\bm x_1)^T\bm\phi(x^*)\\\vdots\\\bm\phi(\bm x_N)^T \bm\phi(x^*) \end{bmatrix} = \bm\Phi_X\bm\phi(\bm x^*)$
\end{itemize}
\section{Kernels and Hyperparameters}%
\label{sec:Kernels and Hyperparameters}
Die Parameter eines Kernels werden als \nomf{hyper_parameters} bezeichnet.
Wenn man den \nameref{sub:Gaussian Kernel} um eine length-scale $l_k$ für jede Dimension $k$ erweitert und alle \noms{hyper_parameters},
die meist nicht benötigt werden hinzufügt,
erhält man einen Kernel,
der auch als \gls{ARD} Kernel bezeichnet wird:
\begin{equation} \label{ARD_kernel}
k(\bm x_i,\bm x_j)= \lambda^{-1}\exp\left( -\sum_{k=1}^d \frac{(x_{i,k} - x_{j,k})^2}{2l_k^2} \right) + \delta_{ij}\sigma_y^2
\end{equation}
\begin{itemize}
\item $\lambda$: \tabto{2cm}a-priori Genauigkeit des Gewichtsvektors (prior precision of weight vector)
\item $\lambda^2$: \tabto{2cm} Rauschvarianz (noise variance) (gilt nur für $i=j$)
\item $l_k$:\tabto{2cm} Längenskalierung (length scale) für die Dimension $k$
\end{itemize}
Die Längenskalierung $l_k$ legt die Relevanz der jeweiligen Dimension fest (je größer $l_k$ desto unwichtiger $k$)
\subsection{Optimization of the Hyperparameters}%
\label{sub:Optimization of the Hyperparameters}
\begin{align} \label{eq:hyper_parameter_optimization}
\nomeq{hyper_parameters}^* &= \argmax_{\nomeq{hyper_parameters}} \nomeq{gaussian_distribution}(\bm y|0,\bm C_{\nomeq{hyper_parameters}})\\
&= \argmax_{\nomeq{hyper_parameters}} -\frac{1}{2}\log|\bm C_{\nomeq{hyper_parameters}}| - \frac{1}{2}\bm y^T\bm C_{\nomeq{hyper_parameters}}\bm y - \frac{N}{2}\log(2\pi)
\end{align}
Leider ist diese zu optimierende Funktion nicht konvex,
weshalb hier nur mit dem \nameref{sec:Gradient Descent} Verfahren angesetzt werden kann
und auch hierbei potentiell nur ein lokales Optimum gefunden wird.
\subsubsection{Beispiele}%
\label{ssub:Beispiele}
({\color{red}siehe Vorlesung 07 Folie 55 ff.})