diff --git a/Glossary.tex b/Glossary.tex index c763191..5cf285b 100644 --- a/Glossary.tex +++ b/Glossary.tex @@ -77,6 +77,7 @@ \newacronym{RSS}{RSS}{Residual Sum of Squares} \newacronym{CART}{CART}{Classification an Regression Trees} \newacronym{DNN}{DNN}{Dynamic Neural Network} +\newacronym{RBF}{RBF}{Radial Basis Function Kernel} %-------------------- %nomenclature @@ -121,6 +122,9 @@ \newnom{variance}{Varianz}{\sigma^2}{$\mathbb{E}_p[(X-\nomeq{mean})$]}{} \newnom{sigmoid}{Sigmoid Function}{\sigma}{}{} \newnom{learning_rate}{Learning Rate}{\eta}{}{} +\newnom{kernel_matrix}{Kernel Matrix}{\bm{K}}{}{} +\newnom{kernel_function}{Kernel Function}{k}{}{} +\newnom{kernel_vector}{Kernel Vector}{\bm{k}}{}{} \shorthandoff{"} \makeglossaries diff --git a/ML_Zusammenfassung.tex b/ML_Zusammenfassung.tex index 7313fe2..0235af4 100644 --- a/ML_Zusammenfassung.tex +++ b/ML_Zusammenfassung.tex @@ -35,6 +35,7 @@ \label{part:Mathematische Grundlagen} \input{chapters/Mathematische_Grundlagen/Lineare_Algebra.tex} \input{chapters/Mathematische_Grundlagen/Probability_Theory.tex} + \input{chapters/Mathematische_Grundlagen/Kernel_Basics.tex} \part{Classical Supervised Learning} \label{part:Classical Supervised Learning} diff --git a/chapters/Kernel_Methods/Kernel-Regression.tex b/chapters/Kernel_Methods/Kernel-Regression.tex index 9719e74..720e875 100644 --- a/chapters/Kernel_Methods/Kernel-Regression.tex +++ b/chapters/Kernel_Methods/Kernel-Regression.tex @@ -1,3 +1,5 @@ \chapter{Kernel-Regression}% \label{cha:Kernel-Regression} +WEITER AUF FOLIE 294 + diff --git a/chapters/Mathematische_Grundlagen/Kernel_Basics.tex b/chapters/Mathematische_Grundlagen/Kernel_Basics.tex new file mode 100644 index 0000000..40dc217 --- /dev/null +++ b/chapters/Mathematische_Grundlagen/Kernel_Basics.tex @@ -0,0 +1,97 @@ +\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. \nameref{cha:Linear Classification} oder \nameref{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}