diff --git a/Acronyms.tex b/Acronyms.tex index 31711ec..46a62f7 100644 --- a/Acronyms.tex +++ b/Acronyms.tex @@ -5,4 +5,5 @@ \acro{vc-dimension} [VC-Dimension] {Vapnik-Chervonenkis-Dimension} \acro{srm} [SRM] {Structural Risk Minimisation} \acro{svm} [SVM] {Support Vector Machines} + \acro{kkt} [KKT] {Karush-Kuhn-Tucker} \end{acronym} \ No newline at end of file diff --git a/Packages.tex b/Packages.tex index 7d47dc0..7dad8c8 100644 --- a/Packages.tex +++ b/Packages.tex @@ -6,6 +6,7 @@ %images \usepackage{graphicx} \graphicspath{ {./images/} } +\usepackage{wrapfig} %svg images \usepackage{svg} %quotation diff --git a/chapters/Supervised Learning/Linear Machines.tex b/chapters/Supervised Learning/Linear Machines.tex index 0894b65..08914b6 100644 --- a/chapters/Supervised Learning/Linear Machines.tex +++ b/chapters/Supervised Learning/Linear Machines.tex @@ -1,4 +1,4 @@ -\chapter{Linear Machines} +\chapter{Linear Machines}\label{linear machines} Mithilfe von linearen Maschinen lassen sich bestimmte Arten von Problemen klassifizieren.\\ \includegraphics[width=\textwidth]{seperability.png}\\ Hierfür wird auf viele Aspekte der Vektoralgebra zurückgegriffen (siehe \ref{Vektoralgebra}). @@ -46,7 +46,7 @@ Ein technisches Neuron besteht aus den Gewichten für die Eingangswerte und der Aktivierungsfunktion:\\ \includegraphics[width=.8\textwidth]{technisches_neuron.png} - \section{Das Perzeptron} + \section{Das Perzeptron}\label{perceptron} Ein Perzeptron beschreibt eine lineare Maschine, die eine Datenmenge durch eine Hyper-Ebene (die Diskriminante) in zwei Cluster unterteilt. Die Funktion für die Diskriminante ist hierbei $y(\bm{m})=\text{sng}(g(\bm{m})) = \text{sgn}(\bm{w}^T\bm{m}+w_0)$. Da sich $\bm{w}$ durch $\bm{w} = \sum^n_{i=1}\alpha_i\cdot y_i \cdot \bm{m}_i$ (mit $n = $Anzahl der Datenpunkte und $\alpha_i = $ Anzahl, wie oft $\bm{m}_i$ ausgewählt wurde) definiert ist die Dimension von $\bm{m}$ unwichtig. @@ -129,7 +129,7 @@ \hline \end{tabular} - \subsection{Risk Bound} + \subsection{Risk Bound}\label{risk bound} Die Risikoschranke gibt an, wie weit das Empirische Risiko von dem tatsächlichen Risiko abweichen kann. $$R(\bm{w})\le R_{emp}(\bm{w})+\varepsilon(N,\kappa,h)$$ \begin{itemize} diff --git a/chapters/Supervised Learning/SVM.tex b/chapters/Supervised Learning/SVM.tex new file mode 100644 index 0000000..7e90b3b --- /dev/null +++ b/chapters/Supervised Learning/SVM.tex @@ -0,0 +1,75 @@ +\chapter{\acl{svm}}\label{svm} + \acs{svm}s können als lineare (\ref{linear machines}) oder nicht-lineare Maschinen aufgebaut werden.\\ + \begin{tabular}{|p{.475\textwidth}|p{.475\textwidth}|} + \hline + \textbf{Vorteile} & \textbf{Nachteile}\\ + \hline + \begin{itemize} + \item bei linear separierbaren Datensätzen ist das empirische Risiko (\ref{empirical risk}) $R_{emp}(\bm{w})=0$ + \item die Riskoschranke (\ref{risk bound}) ist ungefähr minimal (\say{eingebaute} generalization) + \end{itemize} & + \begin{itemize} + \item funktioniert nur auf kleinen Datensätzen + \item ein Wechsel des Datensatzes erfordert ein Neu-Lernen + \item die nicht-lineare Variante ist kompliziert im Umgang + \end{itemize}\\ + \hline + \end{tabular} + + \section{lineare \acl{svm}} + \begin{wrapfigure}{h}{.6\textwidth} + \vspace{-10mm} + \includegraphics[width=.6\textwidth]{svm_base.png} + \end{wrapfigure} + Für das dargestellte Bild ergibt sich: + \begin{flalign*} + & g(\bm{m}_1)=0,g(\bm{m}_2)=0 &\\ + & \rightarrow \bm{w}^T\bm{m}_1+w_0=\bm{w}^T\bm{m}_2+w_0 &\\ + & \Leftrightarrow \bm{w}^T(\bm{m}_1-\bm{m}_2)=0 &\\ + & \rightarrow \bm{w}\bot g(\bm{m}) + \end{flalign*} + hieraus ergibt sich durch umstellen: + $$r_p=\frac{g(\bm{m}_p)}{|\bm{w}|}\ge 0$$ + und + $$r_0=-\frac{w_0}{|\bm{w}|}$$ + + \subsection{Support Vektoren} + Um die Diskriminante in dem Bereich der möglichen Diskriminaten zu wählen, die am besten generalisiert werden unterstützende Vektoren (support vectors) verwendet. + Diese verlaufen parallel zu der Diskriminante mit einem Abstand $\gamma$. + $\gamma$ wird als \say{Margin} bezeichnet.\\ + \includegraphics[width = .8\textwidth]{support_vectors.png}\\ + Für 2 Cluster werden dann ähnlich wie beim Perzeptron (\ref{perceptron}) die folgenden Gleichungen aufgestellt: + \begin{align*} + \bm{w}^T\bm{m}_i+w_0\ge 1 &\text{ für } g_i = +1 \\ + \bm{w}^T\bm{m}_i+w_0\le 1 &\text{ für } g_i = -1 \\ + \end{align*} + + Nun wird so reskaliert, dass für mindestens ein Objekt gilt: + $$ \forall i:(\bm{w}^T\bm{m}_i + w_0)\cdot g_i = 1 \text{ bzw. }-1 $$ + Für den Margin $\gamma$ ergibt sich also: + $$\gamma = \frac{g(\bm{m}_S)}{|\bm{w}|} = \frac{1}{|\bm{w}|} = \frac{1}{||\bm{w}||}$$ + Der Abstand der zwei Klassen (Two-classes distance) ist dann: + $$2\gamma = \frac{2}{||\bm{w}||}$$ + + \subsubsection{Maximierung des Margin} + Da $\frac{1}{||\bm{w}||} \equiv \frac{1}{2}||\bm{w}||^2$ ist, kann die Maximierung des Margin als ein quadratisches Minimierungsproblem behandelt werden. + Mithilfe des Lagrange-Ansatzes erhält man: + \begin{align*} + L_\alpha(\bm{w},w_0,\alpha_i) &= \frac{1}{2}||\bm{w}||^2 - \sum^N_{i=1}\alpha_i\cdot\left[\left(\bm{w}^T\bm{m}_i+w_0\right)\cdot g_i - 1 \right]\\ + &= \frac{1}{2}||\bm{w}||^2 - \sum^N_{i=1}\alpha_i \cdot \bm{w}^T\bm{m}_i \cdot g_i + \sum^N_{i=1}\alpha_i \cdot w_0 \cdot g_i - \sum^N_{i=1}\alpha_i + \end{align*} + Die Funktion ist beschränkt durch: + \begin{align*} + \frac{\delta L_\alpha}{\delta w_0} &= 0 \Rightarrow \sum^N_{i=1}\alpha_i \cdot g_i = 0\\ + \frac{\delta L_\alpha}{\delta \bm{w}} &= 0 \Rightarrow \bm{w} - \sum^N_{i=1}\alpha_i \cdot \bm{m}_i \cdot g_i = 0 \rightarrow \bm{w} = \sum^N_{i=1}\alpha_i \cdot g_i \cdot \bm{m}_i + \end{align*} + Hieraus ergeben sich die \acl{kkt} Bedingungen + \begin{align*} + (\bm{w}^T\bm{m}_i + w_0)\cdot g_i - 1 &\ge 0 \\ + \alpha_i &\ge 0 \\ + \alpha_i\left[\left(\bm{w}^T\bm{m}_i+w_0\right)\cdot g_i -1\right] &=0 + \end{align*} + Jeder Datenpunkt, für den $\alpha_i>0$ gilt, ist ein \say{support vector}. + + \subsubsection{Sparsity} + \acs{svm}s sind \say{sparse learning machines}, da Sie meist nur von wenigen Support Vektoren abhängen. \ No newline at end of file diff --git a/images/support_vectors.png b/images/support_vectors.png new file mode 100644 index 0000000..df2c8e8 Binary files /dev/null and b/images/support_vectors.png differ diff --git a/images/svm_base.png b/images/svm_base.png new file mode 100644 index 0000000..ebb8030 Binary files /dev/null and b/images/svm_base.png differ diff --git a/parts/Supervised Learning.tex b/parts/Supervised Learning.tex index c288a8d..bc9a70b 100644 --- a/parts/Supervised Learning.tex +++ b/parts/Supervised Learning.tex @@ -1,3 +1,4 @@ \part{Supervised Learning} \input{chapters/Supervised Learning/Occam's Razor.tex} - \input{chapters/Supervised Learning/Linear Machines.tex} \ No newline at end of file + \input{chapters/Supervised Learning/Linear Machines.tex} + \input{chapters/Supervised Learning/SVM.tex} \ No newline at end of file