In der dualen Form (siehe 7.2) kommen Trainings- und Testdatenpunkte nur in Form von Skalarprodukten vor:
⟨xi⋅x⟩bzw.⟨Φ(xi)⋅Φ(x)⟩.
Man kann beweisen, dass das nicht nur für Kleinste-Quadrate-Regression und Perzeptron gilt, sondern für eine große Klasse von Optimierungsproblemen (Repräsentertheorem, siehe Schölkopf & Smola, 2002).
In all diesen Problemen kann man das Skalarprodukt ⟨Φ(x)⋅Φ(z)⟩ durch eine Kernfunktion (kernel function, kurz Kern) ersetzen:
k:Rd×Rd→RmitkΦ(x,y)=⟨Φ(x)⋅Φ(y)⟩.
Das heißt: Merkmalsbildung und Skalarprodukt werden durch eine einzige Funktionsberechnung ersetzt. Man berechnet Φ nie explizit, sondern nur k. Das ist der Kernel-Trick (kernel trick).
Die duale Entscheidungsfunktion lautet damit
f(x)=i=1∑ℓαiyik(xi,x)+b.
Der Kernel-Trick in drei Schritten
Schreibe den Algorithmus so um, dass die Daten nur in Skalarprodukten vorkommen (duale Form).
Ersetze jedes Skalarprodukt ⟨xi⋅xj⟩ durch k(xi,xj).
Fertig: Der Algorithmus arbeitet jetzt implizit linear im Merkmalsraum von k, also nichtlinear im Eingaberaum, ohne dass Φ je ausgerechnet wird.
Konstruktion einer Kernfunktion aus der Einbettung
Das Skalarprodukt im 3-dimensionalen Merkmalsraum ist also einfach das Quadrat des Skalarprodukts im Eingaberaum. Man muss Φ gar nicht ausrechnen.
Zahlenbeispiel:x=(1,2)⊤, z=(3,1)⊤.
Über den Merkmalsraum:Φ(x)=(1,22,4), Φ(z)=(9,32,1), also
⟨Φ(x)⋅Φ(z)⟩=1⋅9+22⋅32+4⋅1=9+12+4=25.
Über den Kern:⟨x⋅z⟩=1⋅3+2⋅1=5, also k(x,z)=52=25. ✔
Gleiches Ergebnis, aber der zweite Weg braucht 2 Multiplikationen, 1 Addition und 1 Quadrierung, statt erst zweimal 3 Merkmale zu berechnen und dann deren Skalarprodukt.
Der vorletzte Schritt ist einfach das Ausmultiplizieren rückwärts: (a1+⋯+ad)p ausmultipliziert ergibt genau die Summe über alle Produkte aj1⋯ajp mit aj=xjzj.
Ergänzung zum Zusammenhang mit dem 2D-Beispiel: Die Folie spricht von „allen Permutationen“, gemeint sind alle geordneten Index-Tupel (j1,…,jp) (mit Wiederholung). Für d=p=2 sind das die vier Merkmale x1x1,x1x2,x2x1,x2x2. Die beiden mittleren sind gleich. Fasst man sie zu einem Merkmal zusammen, muss es mit 2 gewichtet werden, damit das Skalarprodukt gleich bleibt: x1x2z1z2+x2x1z2z1=(2x1x2)(2z1z2). Genau daher kommt der Faktor 2 in 7.1.
Merke
Ein und derselbe Kern kann zu verschiedenen Einbettungen gehören (R4 mit vier geordneten Produkten oder R3 mit 2-Gewichtung). Der Kern legt die Geometrie (Skalarprodukte, Abstände, Winkel) fest, nicht die konkrete Darstellung von Φ.
Ergänzung, nicht auf den Folien. Die Anzahl der verschiedenen Monome vom Grad genau p in d Variablen ist
(pd+p−1).
Beispiel: Bilder mit 16×16=256 Pixeln, Monome vom Grad p=5 (Produkte von je 5 Pixeln):
(5260)=120260⋅259⋅258⋅257⋅256≈9,5⋅109
Merkmale. Ein einziger Merkmalsvektor wären rund 76 GB (als double). Der Kern ⟨x⋅z⟩5 kostet dagegen nur ein Skalarprodukt mit 256 Multiplikationen und eine Potenz.
explizit über Φ
Kernel-Trick
Aufwand pro Skalarprodukt
O((pd+p−1)), praktisch O(dp)
O(d)
Speicher pro Punkt
(pd+p−1) Zahlen
d Zahlen
unendlich viele Merkmale
unmöglich
möglich (z. B. Gaußkern)
Der Preis: Man braucht alle paarweisen Kernwerte k(xi,xj) der Trainingsdaten, die Gram-Matrix mit ℓ2 Einträgen (siehe 7.5). Bei sehr vielen Trainingspunkten wird das teuer. Außerdem muss man zur Vorhersage k(xi,x) für alle Trainingspunkte mit αi=0 auswerten, bei der SVM also für alle Stützvektoren.
Der Merkmalsraum enthält jetzt alle Monome bis Grad 2 (inklusive linearer Terme und Konstante). Damit lassen sich auch verschobene Ellipsen, Parabeln und Hyperbeln trennen. c steuert, wie stark die niedrigen Grade gegenüber den hohen gewichtet werden.
Fallstrick
Der homogene Kern ⟨x⋅z⟩2 kennt nur Monome vom Grad genau 2. Eine Ellipse, die nicht um den Ursprung zentriert ist, braucht aber auch lineare Terme x1,x2. Dafür nimmt man den inhomogenen Kern mit c>0.