Kernelisierungstrick für neuronale Netze


9

Ich habe etwas über neuronale Netze und SVMs gelernt. In den Tutorials, die ich gelesen habe, wurde hervorgehoben, wie wichtig die Kernelisierung für SVMs ist. Ohne Kernelfunktion sind SVMs nur ein linearer Klassifikator. Mit der Kernelisierung können SVMs auch nichtlineare Features enthalten, was sie zu einem leistungsstärkeren Klassifikator macht.

Es sieht für mich so aus, als könnte man die Kernelisierung auch auf neuronale Netze anwenden, aber keines der Tutorials zu neuronalen Netzen, die ich gesehen habe, hat dies erwähnt. Verwenden Menschen häufig den Kernel-Trick mit neuronalen Netzen? Ich nehme an, jemand muss damit experimentiert haben, um zu sehen, ob es einen großen Unterschied macht. Hilft die Kernelisierung neuronalen Netzen genauso wie SVMs? Warum oder warum nicht?

(Ich kann mir verschiedene Möglichkeiten vorstellen, den Kernel-Trick in neuronale Netze zu integrieren. Eine Möglichkeit wäre, eine geeignete Kernelfunktion zu verwenden, um die Eingabe, einen Vektor in , in eine höherdimensionale Eingabe, einen Vektor, vorzuverarbeiten in für . Für mehrschichtige neuronale Netze wäre eine andere Alternative, eine Kernelfunktion auf jeder Ebene des neuronalen Netzwerks anzuwenden.)RnRmmn


2
Der Kernel-Trick funktioniert, wenn Ihr Computerzugriff auf Ihre Datenpunkte aus der Berechnung innerer Produkte besteht. Ich bin mir nicht sicher, ob dies bei neuronalen Netzen der Fall ist.
Yuval Filmus

Antworten:


6

Ich denke, Sie könnten die Terminologie auf eine Weise verwirren, die das Problem verwirrend macht. SVMs definieren eine lineare Entscheidungsgrenze, dh eine Hyperebene. Wir können diese Hyperebene als innere Produkte zwischen den Punkten definieren. Wenn wir dieses innere Produkt so definieren, dass es sich in einem hochdimensionalen oder sogar unendlich dimensionalen Raum befindet, ist das, was in diesem neuen Raum wie eine Hyperebene aussieht, im ursprünglichen Merkmalsraum keine notwendige Linearität. Alles ist also immer noch linear. Das einzige, was wir getan haben, ist, die Punkte implizit (über das neue innere Produkt) in einen höherdimensionalen Raum einzubetten. Vielleicht wissen Sie das alles schon.

In Bezug auf neuronale Netze sind zwei Aspekte zu berücksichtigen. Das erste wurde von @Yuval Filmus angesprochen, da neuronale Netze der verborgenen Schicht nicht nur von den inneren Produkten zwischen den Punkten abhängen. Wenn Sie die verborgene Ebene entfernen, haben Sie nur so etwas wie eine logistische Regression, von der es kernelisierte Versionen gibt . Vielleicht gibt es einen Weg, dies zu umgehen, aber ich sehe es nicht.

Zweitens erwähnen Sie die Vorverarbeitung der Eingabe durch Projektion in einen höheren, aber nicht unendlichen dimensionalen Raum. Neuronale Netze definieren eine Entscheidungsfläche, und diese Fläche muss nicht linear sein. Dies bedeutet, dass der Gewinn durch die Projektion der Punkte in einen höherdimensionalen Raum unterschiedlich ist, dh es kann einfacher sein, einen guten Satz von Gewichten zu finden, aber wir haben unser Modell nicht unbedingt leistungsfähiger gemacht. Dies folgt aus dem universellen Approximationssatz , der uns sagt, dass wir bei einer ausreichend großen Anzahl versteckter Einheiten jede Funktion approximieren können (unter bestimmten Einschränkungen). Diese letzte Aussage ist ziemlich leer und ich hasse es, sie zu erwähnen. Wenn Sie nicht wissen, wie Sie die richtigen Gewichte finden, bringt dies aus Anwendungssicht nicht viel auf den Tisch.


Danke. Ja. Ich weiß, wir können uns SVMs so vorstellen, dass sie die ursprünglichen Eingaben einem höheren (oder sogar unendlichen) dimensionalen Raum zuordnen und dann eine lineare Entscheidungsgrenze in diesem höherdimensionalen Raum ausführen. Können wir das also auch mit neuronalen Netzen tun? Können wir die Eingaben einem höherdimensionalen Raum zuordnen und diese dann als tatsächliche Eingabe in ein neuronales Netzwerk behandeln? Ich nehme an, wir können (und ich nehme an, wir könnten dies auch auf jeder Ebene tun, wenn wir wollten). Und wenn wir können, ist meine eigentliche Frage: Bietet dies eine ebenso große Verbesserung für neuronale Netze (in der Praxis) wie für SVMs? Warum oder warum nicht?
DW

Ich kenne den universellen Approximationssatz, aber das beantwortet die Frage nicht wirklich (wie Sie angegeben haben). Was mich interessiert, ist, wie gut neuronale Arbeiten in der Praxis funktionieren. Ich frage mich, ob die Vorverarbeitung der Eingaben über einen Kernelisierungstrick dazu führen könnte, dass neuronale Netze in der Praxis tendenziell besser funktionieren. Natürlich gibt es keine Garantien und es wird immer Situationen geben, in denen alles, was Sie tun, die Situation verschlimmern könnte, aber ich frage mich über das typische Verhalten in der Praxis (in dem Sinne, wie wir sagen, dass die Kernelisierung dazu führt, dass SVMs in erheblichem Maße effektiver werden) trainieren).
DW

2
@DW Der Grund, warum die Kernelisierung SVMs effektiver macht, liegt darin, dass sie nichtlineare Entscheidungsgrenzen definieren können. Neuronale Netze können bereits nichtlineare Entscheidungsgrenzen definieren. Der einzige Vorteil der Projektion Ihrer Daten in einen höherdimensionalen Raum besteht darin, das Optimierungsproblem zu vereinfachen.
Alt

1

Der Kernel-Trick ist für SVMs aufgrund einer besonderen Eigenschaft des Lernprozesses für SVMs möglich. Neuronale Netze scheinen diese Eigenschaft nicht zu haben (soweit ich das beurteilen kann).

Sei die Punkte im Trainingssatz. Normalerweise würde man erwarten, dass ein Algorithmus für maschinelles Lernen die Werte der 's betrachtet. Der SVM-Lernprozess hat jedoch eine bemerkenswerte Eigenschaft. Die Werte der nicht bekannt sein. Es reicht aus, für jedes gewünschte Paar von Eingabepunkten berechnen zu können (dh das Punktprodukt für jedes Paar von Eingabevektoren Ihrer Wahl zu berechnen); Das ist alles, was der SVM-Lernprozess benötigt.x1,,xnRdxixixixj

Diese besondere Eigenschaft des SVM-Lernprozesses ermöglicht es uns, den Kernel-Trick zu verwenden. Wir können eine Kernelfunktion so definieren, dass das Punktprodukt einer nichtlinearen Transformation der Eingaben ist. Wenn wir die Eingabevektoren über eine nichtlineare Transformation (für einige ) transformieren , definieren wir . Die nächste coole Eigenschaft ist, dass Sie für einige nichtlineare Transformationen effizienter berechnen können als explizit zu berechnen und dann ihr Punktprodukt zu berechnen. Sie können berechnenKK(xi,xj)ϕ:RdRmm>dK(xi,xj)=ϕ(xi)ϕ(xj)ϕK(xi,xj)ϕ(xi),ϕ(xj)O ( d ) O ( m )K(xi,xj)in Zeit (sagen wir) statt Zeit.O(d)O(m)

Leider scheinen neuronale Netze keine Möglichkeit zu haben, diesen coolen Trick zu nutzen, da der Lernprozess für neuronale Netze mehr als nur von den Werten (oder ) abzuhängen scheint . es erfordert die vollen Werte aller . Obwohl wir die Eingaben in das nichtlineare Netzwerk tatsächlich über eine nichtlineare Funktion vortransformieren können, wenn wir möchten, scheint es keine Möglichkeit zu geben, den Kernel-Trick zu verwenden, um dies effizienter zu gestalten, wie wir es für SVMs tun können. K ( x i , x j ) x ixixjK(xi,xj)xi


1

Ich möchte einige meiner Beobachtungen mitteilen. Eingabedimension: 144. Ich habe ein neuronales Netzwerk trainiert, und während des Trainings wurde die Ausgabe der verborgenen Schichten als Eingabe für die logistische Regression angegeben, und der Mittelwert der Verlustfunktion nach Anpassung des Modells wurde aufgezeichnet.Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Wir können sehen, dass mit zunehmender Ebenengröße die Merkmale oder die Ausgabe der verborgenen Ebenen linear trennbar werden. Während dies der Zweck des Lernens des kernelisierten Merkmalsvektors ist , scheint das neuronale Netzwerk dies intern zu tun. Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.