forked from TH_General/Template_Summary
128 lines
7.0 KiB
TeX
128 lines
7.0 KiB
TeX
\chapter{Kernel Basics}%
|
|
\label{cha:Kernel Basics}
|
|
\section{Was ist ein Kernel?}%
|
|
\label{sec:Was ist ein Kernel?}
|
|
Ein Kernel definiert eine Vergleichsfunktion $\nomeq{kernel_function}:\mathcal X \times \mathcal X \rightarrow \mathbb{R}$,
|
|
welche eine Aussage über die Ähnlichkeit von Datensätzen $x\in\mathcal{X}$ gibt.
|
|
Die Ausgabewerte lassen sich hierbei in einer Matrix \nomsym{kernel_matrix} - der sogenannten \noms{kernel_matrix} - darstellen.
|
|
Beispielsweise lässt sich ein Datensatz $\mathcal S = \{\bm x_1,\dots,\bm x_n\}$ durch eine $n\times n$ Matrix repräsentieren,
|
|
bei der $\nomeq{kernel_matrix}_{ij} = \nomeq{kernel_function}(\bm x_i, \bm x_j)$ gilt.
|
|
|
|
Die Matrix \nomsym{kernel_matrix} hat dabei folgende Eigenschaften:
|
|
\begin{itemize}
|
|
\item \nomsym{kernel_matrix} ist immer eine $n\times n$-Matrix
|
|
\item Die Wahl der Funktion \nomsym{kernel_function} ist unabhängig vom Algorithmus,
|
|
der den Kernel verwendet
|
|
\item schlechte Skalierung für größere Datensätze $O(n)$ für die Errechnung und Speicherung von \nomsym{kernel_matrix}
|
|
\end{itemize}
|
|
|
|
\section{Positive Definite Kernels}%
|
|
\label{sec:Positive Definite Kernels}
|
|
Eine positiv definite \nomf{kernel_function} ist eine Funktion, die
|
|
\begin{enumerate}
|
|
\item Symmetrisch ist:
|
|
$$ \forall \bm x,\bm x': \nomeq{kernel_function}(\bm x, \bm x') = \nomeq{kernel_function}(\bm x', \bm x) $$
|
|
\item deren \nomf{kernel_matrix} immer positiv definit (symmetrisch und nur positive Eigenwerte) ist:
|
|
$$ \bm a^T\nomeq{kernel_matrix}\bm a = \sum_{i=1}^n \sum_{j=1}^n a_i a_j \nomeq{kernel_function}(\bm x_i, \bm x_j)\ge 0,\qquad \forall\bm a, \forall S=\{\bm x_1,\dots,\bm x_n\}$$
|
|
\end{enumerate}
|
|
|
|
\subsection{Example: Linear Kernel}%
|
|
\label{sub:Example: Linear Kernel}
|
|
Der lineare Kernel ist der einfachste Kernel für Vektoren.
|
|
Die \nomf{kernel_function} definiert einfach nur das skalare Produkt (siehe \cref{sec:Vektoren})
|
|
\begin{equation} \label{eq:linear_kernel_function}
|
|
\nomeq{kernel_function}(\bm x,\bm x') = \langle \bm x,\bm x' \rangle
|
|
\end{equation}
|
|
Für diesen Kernel ist offensichtlich,
|
|
dass er immer positiv definit ist:
|
|
\begin{equation} \label{eq:linear_kernel_positive_definite}
|
|
\sum_{i=1}^n \sum_{j=1}^n a_i a_j \langle \bm x_j, \bm x_j \rangle = \| \sum_i a_i \bm x_i \|^2 \ge 0
|
|
\end{equation}
|
|
|
|
\subsubsection{Kernel in Feature Space}%
|
|
\label{ssub:Kernel in Feature Space}
|
|
Für eine Feature Function $\phi:\mathcal X\rightarrow\mathbb{R}^d$ kann eine \nomf{kernel_function} erstellt werden,
|
|
indem das skalare Produkt der Feature Function gebildet wird:
|
|
\begin{equation} \label{eq:linear_kernel_feature_function}
|
|
k(\bm x,\bm x') = \langle\phi(\bm x),\phi(\bm x')\rangle
|
|
\end{equation}
|
|
Auch hier kann gezeigt werden,
|
|
dass der Kernel positiv definit ist.
|
|
Mehr sogar.
|
|
Das Theorem von Aransjan aus dem Jahr 1950 besagt,
|
|
dass es für jeden positiv definiten Kernel einen Feature Space $\mathcal H$ gibt.
|
|
|
|
\subsection{Polynomial Kernel}%
|
|
\label{sub:Polynomial Kernel}
|
|
\begin{itemize}
|
|
\item Polynomieller Kernel vom Grad 1: Linear Kernel (\cref{sub:Example: Linear Kernel})
|
|
\item Polynomieller Kernel vom Grad 2: $\phi(\bm x) = [x_1^2, \sqrt{2}x_1 x_2, x_2^2]$ für $\bm x = [x_1,x_2]^T$
|
|
\begin{align} \label{eq:polynomial_kernel_2}
|
|
\nomeq{kernel_function}(\bm x,\bm x') &= x_1^2 {x'}_1^2 + 2x_1 x_2 x'_1 x'_2 + x_2^2 {x'}_2^2\\
|
|
&= (x_1 x'_1 + x_2 x'_2)^2 x_1 x_2\\
|
|
&= \langle\bm x,\bm x'\rangle^2
|
|
\end{align}
|
|
\item Polynomieller Kernel vom Grad $d$:
|
|
\begin{equation} \label{eq:polynomial_kernel_d}
|
|
\nomeq{kernel_function}(\bm x, \bm x') = \langle \bm x,\bm x'\rangle^d
|
|
\end{equation}
|
|
\end{itemize}
|
|
|
|
\subsection{Gaussian Kernel}%
|
|
\label{sub:Gaussian Kernel}
|
|
Der Gaussian Kernel wird auch als \gls{RBF} oder Squared Expoential Kernel bezeichnet
|
|
und ist die am häufigsten genutzte Kernel Methode
|
|
\begin{equation} \label{eq:gaussian_kernel}
|
|
\nomeq{kernel_function}(\bm x,\bm y) = \exp\left(-\frac{\|\bm x - \bm y\|^2}{2\nomeq{variance}}\right)
|
|
\end{equation}
|
|
{\color{red}Beweis für die positive Definitheit in Vorlesung 04 Seite 14 f.}
|
|
|
|
\section{Kernel Trick}%
|
|
\label{sec:Kernel Trick}
|
|
Der eigentliche Grund für die Nutzung von Kernels wird als Kernel Trick bezeichnet.
|
|
Durch die Verwendung eines entsprechenden Kernels ist es möglich einen Datenpunkt $x$ auf einen unendlich großen Feature Space (z.B. einen Function Space) zu mappen,
|
|
ohne dabei den eigentlichen Feature Vector errechnen zu müssen.
|
|
Es muss lediglich möglich sein,
|
|
das skalare Produkt von zwei Feature Vektoren zu bestimmen.
|
|
Dies ermöglicht es viele Algorithmen (z.B. \dref{cha:Linear Classification} oder \dref{cha:Linear Regression}) effizienter durchzuführen.
|
|
|
|
|
|
\section{Kernel Identities}%
|
|
\label{sec:Kernel Identities}
|
|
\begin{itemize}
|
|
\item $\bm\Phi_X = \begin{bmatrix} \bm\phi(\bm x_1)^T\\\vdots\\\bm\phi(\bm x_N)^T \end{bmatrix} \in \mathbb{R}^{N\times d}$
|
|
\item $\nomeq{kernel_matrix} = \bm\Phi_X\bm\Phi_X^T$
|
|
\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 \dref{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 (\cref{sec:Gradient Descent}) 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.})
|