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.)
Antworten:
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.
quelle
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,…,xn∈Rd xi xi xi⋅xj
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 berechnenK K(xi,xj) ϕ:Rd→Rm m>d K(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 ixi⋅xj K(xi,xj) xi
quelle
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.
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.
quelle