Zum Hauptinhalt springen

7.2 Duale Darstellung

Bevor man den Kernel-Trick anwenden kann, muss die Lernmaschine so umgeschrieben werden, dass die Daten nur noch in Skalarprodukten vorkommen. Das leistet die duale Darstellung (dual representation): Statt den Gewichtsvektor w\mathbf{w} direkt zu lernen, lernt man für jeden Trainingspunkt einen Koeffizienten αi\alpha_i.

Wiederholung: duale Repräsentation beim Perzeptron​

📄 10_kern.pdf, Folie 9

Der Perzeptron-Algorithmus addiert fehlklassifizierte positive Beispiele zum Gewichtsvektor und subtrahiert fehlklassifizierte negative Beispiele. Kompakt: Bei einem Fehler auf (xi,yi)(\mathbf{x}_i, y_i) mit yi∈{−1,+1}y_i\in\lbrace -1, +1\rbrace wird

w←w+yi xi.\mathbf{w} \leftarrow \mathbf{w} + y_i\,\mathbf{x}_i .

Startet man mit w=0\mathbf{w} = 0, so ist der resultierende Gewichtsvektor eine Linearkombination der Trainingsdaten:

w=∑i=1ℓαi yi xi.\mathbf{w} = \sum_{i=1}^{\ell} \alpha_i\, y_i\, \mathbf{x}_i .
  • Die nichtnegativen Koeffizienten αi\alpha_i heißen Einbettungsstärken (embedding strengths). Beim Perzeptron ist αi\alpha_i genau die Anzahl der Fehlklassifikationen, die Beispiel xi\mathbf{x}_i während des Trainings verursacht hat.
  • Damit ist αi\alpha_i eine Art Maß für die Schwierigkeit oder den Informationsgehalt des Datenpunktes: Punkte, die leicht richtig klassifiziert werden, haben αi=0\alpha_i = 0 und tragen nichts zu w\mathbf{w} bei. Punkte nahe der Grenze werden oft „korrigiert“ und bekommen große αi\alpha_i.
  • Für einen festen Datensatz SS kann man den Vektor α=(α1,α2,… )⊤\boldsymbol{\alpha} = (\alpha_1, \alpha_2, \dots)^\top als alternative Repräsentation des Gewichtsvektors ansehen, die duale Repräsentation. Die übliche Darstellung über w\mathbf{w} heißt primal.

Kleines Beispiel (Ergänzung): Drei Trainingspunkte, das Perzeptron hat sich während des Trainings bei x1\mathbf{x}_1 (Klasse +1+1) zweimal und bei x3\mathbf{x}_3 (Klasse −1-1) einmal geirrt, bei x2\mathbf{x}_2 nie. Dann ist α=(2,0,1)⊤\boldsymbol\alpha = (2, 0, 1)^\top und

w=2⋅(+1) x1+0⋅x2+1⋅(−1) x3=2x1−x3.\mathbf{w} = 2\cdot(+1)\,\mathbf{x}_1 + 0\cdot\mathbf{x}_2 + 1\cdot(-1)\,\mathbf{x}_3 = 2\mathbf{x}_1 - \mathbf{x}_3 .

Kombination von Merkmalen und linearen Lernmaschinen​

📄 10_kern.pdf, Folie 10

Nun kombiniert man das mit der Merkmalsbildung aus 7.1. In der primalen Form ersetzt man einfach x\mathbf{x} durch Φ(x)\Phi(\mathbf{x}):

f(x)=⟨w⋅x⟩+b,  x,w∈Rd⟶f(x)=⟨w⋅Φ(x)⟩+b,  x∈Rd, w∈Rm.f(\mathbf{x}) = \langle\mathbf{w}\cdot\mathbf{x}\rangle + b,\ \ \mathbf{x},\mathbf{w}\in\mathbb{R}^d \quad\longrightarrow\quad f(\mathbf{x}) = \langle\mathbf{w}\cdot\Phi(\mathbf{x})\rangle + b,\ \ \mathbf{x}\in\mathbb{R}^d,\ \mathbf{w}\in\mathbb{R}^m .

Problem: w\mathbf{w} lebt jetzt im Merkmalsraum und hat mm Komponenten. Ist mm riesig oder unendlich, kann man w\mathbf{w} nicht mehr speichern.

Das Repräsentertheorem​

Aufgrund des Repräsentertheorems (representer theorem) sind die Gewichtsvektoren für eine große Gruppe von Optimierungsproblemen Linearkombinationen der Trainingsdaten, sofern sie sich als Lösung eines solchen Problems ergeben (z. B. Perzeptron, SVM, regularisierte Kleinste-Quadrate-Regression):

w=∑i=1ℓαiyixibzw.w=X⊤αmitX=(y1x1⊤y2x2⊤⋮), α=(α1α2⋮).\mathbf{w} = \sum_{i=1}^{\ell} \alpha_i y_i \mathbf{x}_i \qquad\text{bzw.}\qquad \mathbf{w} = X^\top\boldsymbol{\alpha} \quad\text{mit}\quad X = \begin{pmatrix} y_1\mathbf{x}_1^\top\\ y_2\mathbf{x}_2^\top\\ \vdots\end{pmatrix},\ \boldsymbol\alpha = \begin{pmatrix}\alpha_1\\ \alpha_2\\ \vdots\end{pmatrix}.

Im Merkmalsraum entsprechend w=∑iαiyiΦ(xi)\mathbf{w} = \sum_i \alpha_i y_i \Phi(\mathbf{x}_i). Die Gewichte αi\alpha_i werden je nach Lernalgorithmus und Aufgabenstellung gewählt (beim Perzeptron Fehlerzähler, bei der SVM Lagrange-Multiplikatoren).

Ergänzung, nicht auf den Folien – Intuition: Ein Anteil von w\mathbf{w}, der senkrecht auf allen Trainingspunkten steht, ändert keine einzige Vorhersage ⟨w⋅xi⟩\langle\mathbf{w}\cdot\mathbf{x}_i\rangle auf den Trainingsdaten, macht aber ∥w∥\lVert\mathbf{w}\rVert größer. Bei einem Verfahren, das ∥w∥\lVert\mathbf{w}\rVert klein halten will (Regularisierung, Margin-Maximierung), lohnt sich so ein Anteil nie. Also liegt das optimale w\mathbf{w} im Aufspann der Trainingspunkte.

Die duale Form​

Setzt man w=∑iαiyixi\mathbf{w} = \sum_i \alpha_i y_i \mathbf{x}_i in ff ein, bekommt man die duale Form (die Anzahl der Gewichte bleibt gleich: ℓ\ell Stück, eines pro Trainingspunkt):

f(x)=∑i=1ℓαiyi⟨xi⋅x⟩+b⟶f(x)=∑i=1ℓαiyi⟨Φ(xi)⋅Φ(x)⟩+b.f(\mathbf{x}) = \sum_{i=1}^{\ell}\alpha_i y_i \langle\mathbf{x}_i\cdot\mathbf{x}\rangle + b \quad\longrightarrow\quad f(\mathbf{x}) = \sum_{i=1}^{\ell}\alpha_i y_i \langle\Phi(\mathbf{x}_i)\cdot\Phi(\mathbf{x})\rangle + b .

Herleitung in einem Schritt, nur mit Bilinearität des Skalarprodukts:

⟨w⋅x⟩=⟨∑iαiyixi⋅x⟩=∑iαiyi⟨xi⋅x⟩.\langle\mathbf{w}\cdot\mathbf{x}\rangle = \Big\langle \sum_i \alpha_i y_i\mathbf{x}_i \cdot \mathbf{x}\Big\rangle = \sum_i \alpha_i y_i \langle\mathbf{x}_i\cdot\mathbf{x}\rangle .
Primal vs. dual
primaldual
Parameterw∈Rm\mathbf{w}\in\mathbb{R}^m (Dimension des Merkmalsraums)α∈Rℓ\boldsymbol\alpha\in\mathbb{R}^\ell (Anzahl Trainingspunkte)
Daten kommen vor alsΦ(x)\Phi(\mathbf{x}) explizitnur in Skalarprodukten ⟨Φ(xi)⋅Φ(x)⟩\langle\Phi(\mathbf{x}_i)\cdot\Phi(\mathbf{x})\rangle
günstig, wennmm klein, ℓ\ell großmm groß oder unendlich, ℓ\ell moderat

Ergänzung: Dieselbe Idee kam schon bei der kernalisierten linearen Regression in Kapitel 4 vor. Auch dort lässt sich die Lösung als w=X⊤α\mathbf{w} = X^\top\boldsymbol\alpha schreiben, und die Vorhersage braucht nur Skalarprodukte zwischen Datenpunkten.

Skalarprodukt als Ähnlichkeitsmaß​

📄 10_kern.pdf, Folie 11

Warum ist das Skalarprodukt eine natürliche Größe? Beispiel Gesichtserkennung: Man sucht ein Gesicht, indem man eine Schablone (template) yiy_i über das Bild schiebt und für jedes Suchfenster mit Pixeln xix_i die Korrelation

∑i=1dyixi\sum_{i=1}^{d} y_i x_i

berechnet. Das kanonische Skalarprodukt zweier Muster ist also ihre Korrelation: Es ist groß, wenn die Muster ähnlich aussehen.

Damit bekommt die duale Form eine anschauliche Interpretation:

f(x)=∑i=1ℓαiyi ⟨Φ(xi)⋅Φ(x)⟩⏟A¨hnlichkeit zu xi+b.f(\mathbf{x}) = \sum_{i=1}^{\ell}\alpha_i y_i\, \underbrace{\langle\Phi(\mathbf{x}_i)\cdot\Phi(\mathbf{x})\rangle}_{\text{Ähnlichkeit zu } \mathbf{x}_i} + b .

Die Maschine vergleicht den Input mit allen Trainingsbeispielen. Jedes Trainingsbeispiel „stimmt ab“ für seine Klasse yiy_i, gewichtet mit seiner Wichtigkeit αi\alpha_i und seiner Ähnlichkeit zum Input. (Ergänzung: Das erinnert an einen gewichteten Nächste-Nachbarn-Klassifikator, nur dass die Gewichte gelernt werden und meist nur wenige αi\alpha_i ungleich null sind.)

Anwendung auf die SVM​

📄 10_kern.pdf, Folie 12

Das Repräsentertheorem gilt auch für die SVM: Der Gewichtsvektor einer trainierten SVM hat die Form w=∑i=1ℓαiyixi\mathbf{w} = \sum_{i=1}^{\ell}\alpha_i y_i\mathbf{x}_i. Setzt man das in die Soft-Margin-Zielfunktion 12⟨w⋅w⟩+C∑iξi\tfrac12\langle\mathbf{w}\cdot\mathbf{w}\rangle + C\sum_i\xi_i ein (siehe Kapitel 6), so wird

⟨w⋅w⟩=⟨∑iαiyixi⋅∑jαjyjxj⟩=∑i,j=1ℓyiyjαiαj⟨xi⋅xj⟩.\langle\mathbf{w}\cdot\mathbf{w}\rangle = \Big\langle \sum_i\alpha_i y_i\mathbf{x}_i \cdot \sum_j \alpha_j y_j \mathbf{x}_j\Big\rangle = \sum_{i,j=1}^{\ell} y_i y_j \alpha_i\alpha_j \langle\mathbf{x}_i\cdot\mathbf{x}_j\rangle .

Zusammen mit der dualen Entscheidungsfunktion f(x)=∑iαiyi⟨xi⋅x⟩+bf(\mathbf{x}) = \sum_i \alpha_i y_i \langle\mathbf{x}_i\cdot\mathbf{x}\rangle + b erhält man ein Problem, das nur von Skalarprodukten abhängt:

SVM-Optimierung in dualen Variablen (Folie 12)

Minimiere

f(α)=12∑i,j=1ℓyiyjαiαj⟨xi⋅xj⟩+C∑i=1ℓξi,α∈Rℓ,f(\boldsymbol\alpha) = \frac12\sum_{i,j=1}^{\ell} y_i y_j\alpha_i\alpha_j\langle\mathbf{x}_i\cdot\mathbf{x}_j\rangle + C\sum_{i=1}^{\ell}\xi_i,\qquad \boldsymbol\alpha\in\mathbb{R}^\ell,

unter den ℓ\ell Nebenbedingungen (i=1,…,ℓi = 1,\dots,\ell)

∑j=1ℓαjyj⟨xj⋅xi⟩+b ≥ 1−ξi.\sum_{j=1}^{\ell}\alpha_j y_j\langle\mathbf{x}_j\cdot\mathbf{x}_i\rangle + b \ \ge\ 1 - \xi_i .

Die Nebenbedingung ist die bekannte Soft-Margin-Bedingung yif(xi)≥1−ξiy_i f(\mathbf{x}_i) \ge 1-\xi_i, nur mit eingesetztem w\mathbf{w}. (Auf der Folie fehlt der Faktor yiy_i vor der linken Seite; gemeint ist yi(∑jαjyj⟨xj⋅xi⟩+b)≥1−ξiy_i\big(\sum_j \alpha_j y_j\langle\mathbf{x}_j\cdot\mathbf{x}_i\rangle + b\big)\ge 1-\xi_i, sowie ξi≥0\xi_i\ge 0.)

Ergänzung, nicht auf den Folien – Bezug zum Lagrange-Dual aus Kapitel 6: Die Folie setzt die Darstellung w=∑αiyixi\mathbf{w}=\sum\alpha_i y_i\mathbf{x}_i direkt ins primale Problem ein. Das in Kapitel 6 hergeleitete Lagrange-duale Problem der Soft-Margin-SVM hat dieselbe entscheidende Eigenschaft und wird in der Praxis (z. B. von libsvm/scikit-learn) gelöst:

max⁡α ∑i=1ℓαi−12∑i,j=1ℓαiαjyiyj⟨xi⋅xj⟩u. d. N.0≤αi≤C,  ∑i=1ℓαiyi=0.\max_{\boldsymbol\alpha}\ \sum_{i=1}^{\ell}\alpha_i - \frac12\sum_{i,j=1}^{\ell}\alpha_i\alpha_j y_i y_j\langle\mathbf{x}_i\cdot\mathbf{x}_j\rangle \quad\text{u. d. N.}\quad 0\le\alpha_i\le C,\ \ \sum_{i=1}^{\ell}\alpha_i y_i = 0 .

Auch hier kommen die Daten nur über Skalarprodukte ⟨xi⋅xj⟩\langle\mathbf{x}_i\cdot\mathbf{x}_j\rangle vor. Nur darauf kommt es für den Kernel-Trick an.

Pegasos für die duale Repräsentation​

📄 10_kern.pdf, Folie 13

Pegasos (der stochastische Subgradienten-Löser für die SVM aus Kapitel 6) lässt sich ebenfalls dual formulieren.

  • Ähnlich wie das Perzeptron ist Pegasos ein Fehlerkorrekturverfahren: Ein Beispiel xi\mathbf{x}_i wird nur dann auf den Gewichtsvektor addiert, wenn es die Fehlerbedingung yif(xi)<1y_i f(\mathbf{x}_i) \lt 1 verletzt, also innerhalb des Margins liegt oder falsch klassifiziert ist. In dualen Variablen: yi Cηt∑jαjyj⟨xj⋅xi⟩<1y_i\, C\eta_t\sum_{j}\alpha_j y_j\langle\mathbf{x}_j\cdot\mathbf{x}_i\rangle \lt 1.
  • Daraus ergibt sich eine einfache Updateregel: Bei jedem Beispiel, das die Bedingung verletzt, wird die duale Variable um 1 hochgezählt. Die Schrumpfung durch die Regularisierung und die Lernrate stecken nicht in den αi\alpha_i, sondern werden am Ende pauschal durch den Faktor C⋅ηtC\cdot\eta_t berücksichtigt.
Pegasos dual (Folie 13)
αi,t+1={αi,t+1falls yif(xi)<1αi,tsonstmitf(xi)=Cηt∑j=1ℓαjyj⟨xj⋅xi⟩.\alpha_{i,t+1} = \begin{cases} \alpha_{i,t} + 1 & \text{falls } y_i f(\mathbf{x}_i) \lt 1\\ \alpha_{i,t} & \text{sonst} \end{cases} \qquad\text{mit}\quad f(\mathbf{x}_i) = C\eta_t\sum_{j=1}^{\ell}\alpha_j y_j\langle\mathbf{x}_j\cdot\mathbf{x}_i\rangle .

Ergänzung – warum genügt ein Zähler? Im primalen Pegasos wird w\mathbf{w} in jedem Schritt mit einem Faktor geschrumpft und bei Verletzung um ein Vielfaches von yixiy_i\mathbf{x}_i erhöht. Bei der Lernrate ηt∝1/t\eta_t \propto 1/t heben sich diese Faktoren so auf, dass jeder Verletzungs-Schritt am Ende gleich stark in wt\mathbf{w}_t eingeht und nur ein gemeinsamer, von tt abhängiger Vorfaktor übrig bleibt. Darum reicht es, pro Beispiel mitzuzählen, wie oft es die Bedingung verletzt hat, genau wie beim Perzeptron. Die genaue Konstante hängt von der Parametrisierung (mit CC oder λ\lambda) aus Kapitel 6 ab.

Kernaussage dieses Abschnitts

Perzeptron, SVM und Pegasos lassen sich alle so umschreiben, dass die Daten ausschließlich in Skalarprodukten auftauchen, beim Training ⟨xi⋅xj⟩\langle\mathbf{x}_i\cdot\mathbf{x}_j\rangle und bei der Vorhersage ⟨xi⋅x⟩\langle\mathbf{x}_i\cdot\mathbf{x}\rangle. Das ist die Eintrittskarte für den Kernel-Trick.