Zum Hauptinhalt springen

6.6 Hinge-Loss und Pegasos

Die Soft Margin SVM aus 6.5 ist ein quadratisches Programm mit 2ℓ2\ell Nebenbedingungen. Man könnte es mit einem QP-Löser angehen. Die Vorlesung geht einen anderen, sehr modernen Weg: Sie eliminiert die Nebenbedingungen, erhält so eine Zielfunktion „Regularisierer + Verlust“ und minimiert diese mit einem stochastischen Subgradientenabstieg, ganz ähnlich wie beim Perzeptron.

Umwandlung in eine Optimierung ohne Nebenbedingungen​

📄 09_svm_nicht_trennbar.pdf, Folie 12

Ausgangspunkt sind die ℓ\ell Nebenbedingungen

yi(⟨w⋅xi⟩+b)≥1−ξi.y_i(\langle\mathbf w\cdot\mathbf x_i\rangle + b) \ge 1 - \xi_i.

Schritt 1: Mit der Entscheidungsfunktion f(xi)=⟨w⋅xi⟩+bf(\mathbf x_i) = \langle\mathbf w\cdot\mathbf x_i\rangle + b der SVM lautet das

yif(xi)≥1−ξi⟺ξi≥1−yif(xi).y_if(\mathbf x_i) \ge 1 - \xi_i \quad\Longleftrightarrow\quad \xi_i \ge 1 - y_if(\mathbf x_i).

Schritt 2: Zusammen mit ξi≥0\xi_i\ge 0 muss ξi\xi_i größer oder gleich beiden Schranken sein, also

ξi≥max⁡(0, 1−yif(xi)).\xi_i \ge \max\bigl(0,\ 1 - y_if(\mathbf x_i)\bigr).

Schritt 3: Am Minimum muss hier Gleichheit gelten. Denn wäre ξi\xi_i echt größer als nötig, könnte man es verkleinern, ohne eine Nebenbedingung zu verletzen. Wegen C>0C \gt 0 würde die Zielfunktion dabei sinken, man wäre also nicht im Minimum. Also

ξi=max⁡(0, 1−yif(xi)).\xi_i = \max\bigl(0,\ 1 - y_if(\mathbf x_i)\bigr).

Schritt 4: Einsetzen in die Zielfunktion eliminiert die ξi\xi_i und alle Nebenbedingungen:

Soft Margin SVM ohne Nebenbedingungen
f(w)=12⟨w⋅w⟩+C∑i=1ℓmax⁡(0, 1−yif(xi)),w∈Rd.f(\mathbf w) = \tfrac12\langle\mathbf w\cdot\mathbf w\rangle + C\sum_{i=1}^{\ell}\max\bigl(0,\ 1 - y_if(\mathbf x_i)\bigr),\qquad \mathbf w\in\mathbb R^d.

(Optimiert wird natürlich weiterhin auch über bb, das in f(xi)f(\mathbf x_i) steckt. Die Folie schreibt nur w\mathbf w.)

Fallstrick: zweimal ff

Auf der Folie bezeichnet ff sowohl die Zielfunktion f(w)f(\mathbf w) als auch die Entscheidungsfunktion f(xi)f(\mathbf x_i). Gemeint ist im Summanden immer die Entscheidungsfunktion ⟨w⋅xi⟩+b\langle\mathbf w\cdot\mathbf x_i\rangle + b.

Verlustfunktion​

📄 09_svm_nicht_trennbar.pdf, Folie 13

Der zweite Term

L(w)=∑i=1ℓmax⁡(0, 1−yif(xi))\mathcal L(\mathbf w) = \sum_{i=1}^{\ell}\max\bigl(0,\ 1 - y_if(\mathbf x_i)\bigr)

ist eine Verlustfunktion (loss function). Die Größe yif(xi)y_if(\mathbf x_i) ist positiv bei korrekter, negativ bei falscher Klassifikation und umso größer, je weiter der Punkt auf der richtigen Seite liegt. Es gibt drei Fälle:

  1. yif(xi)>1y_if(\mathbf x_i) \gt 1: Punkt liegt außerhalb des Margins und trägt nichts zum Verlust bei.
  2. yif(xi)=1y_if(\mathbf x_i) = 1: Punkt sitzt genau auf dem Margin (Supportvektor) und trägt ebenfalls nichts bei.
  3. yif(xi)<1y_if(\mathbf x_i) \lt 1: Punkt verletzt den Margin (ebenfalls Supportvektor) und trägt zum Verlust bei, und zwar linear mit der Stärke der Verletzung.

Interpretation: Die SVM-Zielfunktion hat jetzt die Form

12∥w∥2⏟Regularisierung (großer Margin)+C⋅L(w)⏟Datenanpassung.\underbrace{\tfrac12\lVert\mathbf w\rVert^2}_{\text{Regularisierung (großer Margin)}} + C\cdot\underbrace{\mathcal L(\mathbf w)}_{\text{Datenanpassung}}.

Ergänzung, nicht auf den Folien: Das ist dasselbe Muster wie bei Ridge-Regression (quadratischer Verlust + ∥w∥2\lVert\mathbf w\rVert^2) oder regularisierter logistischer Regression (logistischer Verlust log⁡(1+e−yf)\log(1 + e^{-yf}) + ∥w∥2\lVert\mathbf w\rVert^2). Die SVM unterscheidet sich „nur“ durch die Wahl des Verlusts.

Hinge-Loss​

📄 09_svm_nicht_trennbar.pdf, Folie 14

Trägt man den Verlust eines einzelnen Punkts über z=yif(xi)z = y_if(\mathbf x_i) auf, erhält man den Hinge-Loss (engl. hinge, „Scharnier“, deutsch auch Scharnierverlust):

ℓhinge(z)=max⁡(0, 1−z).\ell_\text{hinge}(z) = \max(0,\ 1 - z).

Zum Vergleich der 0-1-Verlust (0-1 loss), der einfach Fehler zählt: 1 bei falscher Klassifikation (z<0z \lt 0), sonst 0.

z=yif(xi)z = y_if(\mathbf x_i)−2-2−1-1000,50{,}51122
0-1-Verlust111 bzw. 0*000
Hinge-Loss3210,500

* Bei z=0z = 0 (Punkt auf der Trennebene) ist die Konvention uneinheitlich.

Eigenschaften:

  • Der Hinge-Loss ist eine obere Schranke des 0-1-Verlusts: ℓhinge(z)≥ℓ0-1(z)\ell_\text{hinge}(z) \ge \ell_{0\text{-}1}(z) für alle zz. Minimiert man den Hinge-Loss, drückt man also auch die Anzahl der Fehler nach unten.
  • Er ist konvex (Maximum zweier linearer Funktionen, vgl. die V-Form im Quiz in 6.3). Der 0-1-Verlust ist das nicht und außerdem fast überall flach (Gradient 0), also für Optimierung unbrauchbar.
  • Er bestraft auch korrekt klassifizierte Punkte, die zu nah an der Ebene liegen (0<z<10 \lt z \lt 1). Das erzwingt den Margin.
  • Aber: Bei z=1z = 1 hat er einen Knick, er ist dort nicht differenzierbar. Gradientenabstieg im klassischen Sinn geht also nicht.

Ergänzung: Vergleich mit dem Perzeptron. Dessen Verlust ist max⁡(0,−z)\max(0, -z): Er bestraft nur Fehlklassifikationen, nicht zu kleine Abstände. Der Hinge-Loss ist genau dieser Perzeptron-Verlust, um 1 nach rechts verschoben. Diese kleine Verschiebung und der Regularisierer machen den Unterschied zwischen „irgendeine Trennebene“ und „Trennebene mit maximalem Margin“.

Subgradienten​

📄 09_svm_nicht_trennbar.pdf, Folie 15

Um konvexe, aber nicht überall differenzierbare Funktionen zu minimieren, verallgemeinert man den Gradienten.

Subgradient

Ein Subgradient einer konvexen Funktion ff an der Stelle x\mathbf x ist die Steigung g\mathbf g einer Geraden (oder Ebene), die ff in x\mathbf x berührt und überall unterhalb von ff verläuft:

f(z)≥f(x)+g⊤(z−x)fu¨r alle z.f(\mathbf z) \ge f(\mathbf x) + \mathbf g^\top(\mathbf z - \mathbf x)\quad\text{für alle } \mathbf z.
  • An Stellen, an denen ff differenzierbar ist, ist der Subgradient eindeutig und gleich der Steigung der Tangente (dem Gradienten).
  • An Stellen, an denen ff nicht differenzierbar ist, ist der Subgradient eine Menge: die Steigungen aller Tangentialebenen durch x\mathbf x, die unterhalb von ff verlaufen. Diese Menge heißt Subdifferential ∂f(x)\partial f(\mathbf x).

Anmerkung: Auf der Folie steht „für alle z∈Rz\in\mathbb R“. Im Mehrdimensionalen ist natürlich z∈Rn\mathbf z\in\mathbb R^n gemeint.

Warum funktioniert das nur für konvexe Funktionen? Nur bei konvexen Funktionen gibt es an jeder Stelle eine solche „Stützgerade“ unterhalb des Graphen, denn konvexe Funktionen liegen immer oberhalb ihrer Tangenten.

Beispiele​

📄 09_svm_nicht_trennbar.pdf, Folie 16

Betragsfunktion f(x)=∣x∣f(x) = \lvert x\rvert:

∂f(x)={−1x<0[−1,1]x=0+1x>0\partial f(x) = \begin{cases} -1 & x \lt 0\\ [-1, 1] & x = 0\\ +1 & x \gt 0 \end{cases}

Bei x=0x = 0 passt jede Gerade durch den Ursprung mit Steigung zwischen −1-1 und 11 unter das V. Im Graphen des Subdifferentials sieht man an dieser Stelle einen senkrechten Sprung von −1-1 auf 11.

f(x)=max⁡(0, 12(x2−1))f(x) = \max\bigl(0,\ \tfrac12(x^2 - 1)\bigr): Für ∣x∣>1\lvert x\rvert \gt 1 ist f(x)=12(x2−1)f(x) = \tfrac12(x^2-1) mit Ableitung xx. Für ∣x∣<1\lvert x\rvert\lt 1 ist f=0f = 0 mit Ableitung 00. An den Knickstellen:

∂f(1)=[0,1],∂f(−1)=[−1,0].\partial f(1) = [0, 1],\qquad \partial f(-1) = [-1, 0].

Links und rechts der Knickstelle haben die Ableitungen die Werte 0 und 1 (bzw. −1-1 und 0), das Subdifferential füllt das Intervall dazwischen.

Ergänzung: Ein Punkt x∗\mathbf x^* ist genau dann globales Minimum einer konvexen Funktion, wenn 0∈∂f(x∗)\mathbf 0\in\partial f(\mathbf x^*). Beim Betrag: 0∈[−1,1]0 \in [-1,1] bei x=0x = 0, also ist 0 das Minimum.

Subgradient des Hinge-Loss​

📄 09_svm_nicht_trennbar.pdf, Folie 17

Für einen Summanden max⁡(0,1−yi(⟨w⋅xi⟩+b))\max(0, 1 - y_i(\langle\mathbf w\cdot\mathbf x_i\rangle + b)) gilt nach der Kettenregel (das Innere ist linear in w\mathbf w mit Ableitung −yixi-y_i\mathbf x_i):

∂∂wmax⁡(0,1−yif(xi))={−yixifalls yif(xi)<10falls yif(xi)>1θ⋅(−yixi), θ∈[0,1]falls yif(xi)=1.\frac{\partial}{\partial\mathbf w}\max(0, 1 - y_if(\mathbf x_i)) = \begin{cases} -y_i\mathbf x_i & \text{falls } y_if(\mathbf x_i) \lt 1\\ \mathbf 0 & \text{falls } y_if(\mathbf x_i) \gt 1\\ \theta\cdot(-y_i\mathbf x_i),\ \theta\in[0,1] & \text{falls } y_if(\mathbf x_i) = 1. \end{cases}

Für den gesamten Verlust L(w)\mathcal L(\mathbf w) addiert man die Beiträge. An Knickpunkten nimmt der Subgradient alle Zwischenwerte zwischen 0 und −∑i: yif(xi)<1yixi-\sum_{i:\ y_if(\mathbf x_i)\lt 1} y_i\mathbf x_i an (genauer: die Beiträge der Punkte mit yif(xi)=1y_if(\mathbf x_i) = 1 können jeweils zwischen 0 und −yixi-y_i\mathbf x_i liegen).

Ergänzung: Analog ist die Ableitung nach bb gleich −yi-y_i für Punkte mit yif(xi)<1y_if(\mathbf x_i)\lt 1 und 0 sonst.

Die Subgradientenmethode​

📄 09_svm_nicht_trennbar.pdf, Folie 18

Sei f:Rn→Rf:\mathbb R^n\to\mathbb R konvex. Die Subgradientenmethode (subgradient method) iteriert

x(k+1)=x(k)−η g(k),\mathbf x^{(k+1)} = \mathbf x^{(k)} - \eta\,\mathbf g^{(k)},

wobei g(k)\mathbf g^{(k)} ein beliebiger Subgradient von ff an x(k)\mathbf x^{(k)} ist. Das entspricht dem normalen Gradientenabstieg, nur läuft man in Richtung des negativen Subgradienten.

Unterschied zum Gradientenabstieg: Es ist nicht garantiert, dass die Zielfunktion bei jedem Schritt kleiner wird. Ein negativer Subgradient ist nicht unbedingt eine Abstiegsrichtung (Beispiel: f(x1,x2)=∣x1∣+2∣x2∣f(x_1,x_2) = \lvert x_1\rvert + 2\lvert x_2\rvert an einem Knick). Dennoch kann man beweisen, dass die Methode zum Minimum hin konvergiert, wenn die Schrittweite asymptotisch gegen 0 geht.

Ergänzung: Die genaue Bedingung ist ηk→0\eta_k \to 0 und ∑kηk=∞\sum_k\eta_k = \infty. Die zweite Bedingung sorgt dafür, dass man trotz kleiner werdender Schritte noch beliebig weit kommt. ηk=1/k\eta_k = 1/k erfüllt beides (harmonische Reihe divergiert). Weil die Funktionswerte nicht monoton fallen, merkt man sich in der Praxis oft den bisher besten Punkt.

Subgradientenmethode für die SVM​

📄 09_svm_nicht_trennbar.pdf, Folie 19

Für die SVM-Zielfunktion 12⟨w⋅w⟩+C L(w)\tfrac12\langle\mathbf w\cdot\mathbf w\rangle + C\,\mathcal L(\mathbf w) wählt man an Knickpunkten (yif(xi)=1y_if(\mathbf x_i) = 1) einfach den Subgradienten 0 für diesen Summanden. Der Subgradient des Regularisierers ist w\mathbf w. Damit ergibt sich die Iteration

wt+1=wt−η(wt−C∑i: yif(xi)<1yixi).\mathbf w_{t+1} = \mathbf w_t - \eta\Bigl(\mathbf w_t - C\sum_{i:\ y_if(\mathbf x_i)\lt 1} y_i\mathbf x_i\Bigr).

Das ist ein Batch-Update über den gesamten Datensatz. Statt dessen macht man wie beim Perzeptron eine Einzelbeispielkorrektur, d.h. einen stochastischen (Sub-)Gradientenabstieg (stochastic subgradient descent): In jedem Schritt wird nur ein (zufällig gezogenes) Beispiel (xi,yi)(\mathbf x_i, y_i) betrachtet.

Pegasos: Primal Estimated sub-GrAdient SOlver for SVM
wt+1={wt−ηt(wt−Cyixi)falls yif(xi)<1wt−ηtwtsonst\mathbf w_{t+1} = \begin{cases} \mathbf w_t - \eta_t(\mathbf w_t - Cy_i\mathbf x_i) & \text{falls } y_if(\mathbf x_i) \lt 1\\ \mathbf w_t - \eta_t\mathbf w_t & \text{sonst} \end{cases}

mit der zeitabhängigen Lernrate ηt=1/t\eta_t = 1/t.

Die zwei Fälle verstehen:

  • Sonst-Fall (yif(xi)≥1y_if(\mathbf x_i)\ge 1, Punkt gut klassifiziert): wt+1=(1−ηt)wt\mathbf w_{t+1} = (1 - \eta_t)\mathbf w_t. Der Gewichtsvektor wird nur geschrumpft. Das ist der Effekt des Regularisierers: kleineres ∥w∥\lVert\mathbf w\rVert, also breiterer Margin.
  • Verletzungs-Fall (yif(xi)<1y_if(\mathbf x_i)\lt 1): wt+1=(1−ηt)wt+ηtCyixi\mathbf w_{t+1} = (1-\eta_t)\mathbf w_t + \eta_tCy_i\mathbf x_i. Zusätzlich zum Schrumpfen wird w\mathbf w in Richtung des Beispiels korrigiert, genau wie beim Perzeptron (w←w+yixi\mathbf w \leftarrow \mathbf w + y_i\mathbf x_i), nur dass das Perzeptron bloß bei echter Fehlklassifikation korrigiert, Pegasos schon bei einer Margin-Verletzung.

Vergleich Perzeptron und Pegasos (Ergänzung):

PerzeptronPegasos
Korrektur, wennyif(xi)≤0y_if(\mathbf x_i) \le 0 (falsch)yif(xi)<1y_if(\mathbf x_i) \lt 1 (Margin verletzt)
Schrumpfen von w\mathbf wniein jedem Schritt
Lernratekonstantηt=1/t\eta_t = 1/t
Zielirgendeine TrennebeneMinimum der konvexen SVM-Zielfunktion
Endesobald alles getrennt istKonvergenz gegen das globale Optimum

Zahlenbeispiel: Pegasos von Hand​

Ergänzung, nicht auf den Folien. Zwei Punkte, C=1C = 1, ohne Bias (b=0b = 0), abwechselnd präsentiert: xA=(2,1)\mathbf x_A = (2,1), yA=+1y_A = +1 und xB=(−1,−2)\mathbf x_B = (-1,-2), yB=−1y_B = -1. Start w1=(0,0)\mathbf w_1 = (0,0).

ttηt\eta_tBeispielyif(xi)y_if(\mathbf x_i)Fallwt+1\mathbf w_{t+1}
111A00verletzt(0,0)−1⋅((0,0)−(2,1))=(2, 1)(0,0) - 1\cdot\bigl((0,0) - (2,1)\bigr) = (2,\ 1)
212\tfrac12B44sonst12(2,1)=(1, 0,5)\tfrac12(2,1) = (1,\ 0{,}5)
313\tfrac13A2,52{,}5sonst23(1,0,5)=(0,67, 0,33)\tfrac23(1, 0{,}5) = (0{,}67,\ 0{,}33)
414\tfrac14B1,331{,}33sonst34(0,67,0,33)=(0,5, 0,25)\tfrac34(0{,}67, 0{,}33) = (0{,}5,\ 0{,}25)
515\tfrac15A1,251{,}25sonst45(0,5,0,25)=(0,4, 0,2)\tfrac45(0{,}5, 0{,}25) = (0{,}4,\ 0{,}2)
616\tfrac16B0,80{,}8verletzt(0,4,0,2)−16((0,4,0,2)−(1,2))=(0,5, 0,5)(0{,}4, 0{,}2) - \tfrac16\bigl((0{,}4,0{,}2) - (1,2)\bigr) = (0{,}5,\ 0{,}5)

Man sieht das typische Verhalten: Solange alle Punkte den Margin einhalten, schrumpft w\mathbf w (der Margin wächst). Sobald ein Punkt in den Margin rutscht (t=6t = 6), zieht die Korrektur w\mathbf w wieder in seine Richtung. Mit kleiner werdendem ηt\eta_t pendelt sich das auf das Optimum ein.

Beispiel aus der Vorlesung​

📄 09_svm_nicht_trennbar.pdf, Folie 20

Links: Die „Energie“ (Wert der Zielfunktion) über ca. 300 Iterationen auf logarithmischer Skala. Sie fällt anfangs schnell, ist nicht monoton (Zacken, typisch für stochastische Subgradientenverfahren) und stabilisiert sich dann. Rechts: zwei überlappende Punktwolken mit der gefundenen Trennebene (blau) und den Margin-Rändern (gestrichelt). Einige Punkte liegen im Margin oder auf der falschen Seite, das ist bei nicht trennbaren Daten unvermeidlich.

Anmerkungen zur Pegasos-Folie
  • Die Folie lässt offen, wie bb behandelt wird. Üblich ist, bb analog mit ηtCyi\eta_tCy_i zu aktualisieren (ohne Schrumpfen), oder eine konstante 1 als zusätzliches Merkmal an x\mathbf x anzuhängen.
  • Im Originalpaper (Shalev-Shwartz et al., 2007) steht die Zielfunktion in der Form λ2∥w∥2+1ℓ∑iℓhinge\tfrac\lambda2\lVert\mathbf w\rVert^2 + \tfrac1\ell\sum_i\ell_\text{hinge} mit Lernrate ηt=1/(λt)\eta_t = 1/(\lambda t). Die Folie verwendet die CC-Form. Streng genommen ist ein stochastischer Schritt mit einem einzigen Beispiel eine Schätzung von C∑i(… )C\sum_i(\dots) erst nach Multiplikation mit ℓ\ell. Für das Verständnis ist das unerheblich, es verschiebt nur die Bedeutung von CC um den Faktor ℓ\ell.

Typische Fallstricke​

  • Hinge-Loss ist nicht differenzierbar, aber konvex. Nicht verwechseln: Konvexität garantiert das globale Optimum, Differenzierbarkeit ist nur für klassischen Gradientenabstieg nötig.
  • Subgradientenverfahren sind keine Abstiegsverfahren. Die Zielfunktion darf zwischendurch steigen.
  • Punkte mit 0<yif(xi)<10 \lt y_if(\mathbf x_i) \lt 1 verursachen Verlust, obwohl sie korrekt klassifiziert sind.
  • ηt=1/t\eta_t = 1/t ist wichtig. Bei konstanter Lernrate springt der stochastische Subgradientenabstieg dauerhaft um das Optimum herum.