Letztes Jahr auf der NIPS 2017 gewannen Ali Rahimi und Ben Recht den Test of Time Award für ihre Arbeit "Random Features for Large-Scale Kernel Machines", in der sie Random Features einführten, die später als Random-Kitchen-Sink-Algorithmus kodifiziert wurden. Im Rahmen der Veröffentlichung ihrer Arbeit zeigten sie, dass ihr Modell in 5 Zeilen Matlab implementiert werden kann.
% Approximates Gaussian Process regression
% with Gaussian kernel of variance gamma^2
% lambda: regularization parameter
% dataset: X is dxN, y is 1xN
% test: xtest is dx1
% D: dimensionality of random feature
% training
w = randn(D,d);
b = 2 * pi * rand(D, 1);
Z = cos(gamma * w * X + b * ones(1,N));
alpha = (lambda * eye(D) +Z * Z') \ (Z * y);
% testing
ztest = alpha' * cos(gamma * w * xtest + b);
Wie der obige Algorithmus irgendetwas lernt, ist mir unklar. Wie funktioniert eine zufällige Küchenspüle? Wie werden Gaußsche Prozesse angenähert und Vektormaschinen unterstützt?
Bearbeiten
In Rahimis Vortrag wird der Begriff "Random Features for Large-Scale Kernel Machines" nicht in der Zeitung erwähnt, für die sie den Preis gewonnen haben, sondern am Ende der Trilogie der Arbeiten, die mit "Random Features for Large-Scale Kernel Machines" beginnt. Die anderen Papiere sind:
Ich denke, das oben eingeführte Code-Snippet ist eine Spezialisierung von Algorithmus 1 in der letzten Veröffentlichung.
quelle
Antworten:
Zufällige Küchenspülen (oder zufällige Fourier-Merkmale) und andere verwandte Methoden bemühen sich nicht um Inferenz, sondern versuchen, den Engpass kernbasierter Inferenzmethoden zu verringern.
Zufällige Fourier-Merkmale (Rehimi & Recht 2007) haben erwogen, Annäherungen mit niedrigem Rang für verschiebungsinvariante Kernel zu erstellen, indem nur eine zufällige Teilmenge der Fourier-Kernelkomponenten abgetastet wurde. Da der Fourier-Raum verschiebungsinvariant ist, wurde diese Eigenschaft beibehalten, aber jetzt wurde durch die Vereinigung dieser Fourier-Komponenten ein expliziter, endlichdimensionaler, reproduzierender Kernel-Hilbert-Raum gebildet. Das einst unendlich dimensionale RKHS wird durch den entarteten Näherungskern angenähert.
Hinweise zum Code-Snippet: In den 5 Zeilen sind einige Details überstrichen. Das Wichtigste ist, dass die Gauß-Funktion auch eine Gauß-Funktion im Fourier-Raum ist, nur die Varianz wird invertiert. Deshalb werden sie von randn abgetastet und dann mit der Varianz multipliziert. Dann erzeugen sie Alpha, was nur eine Unterprozedur ist, um ztest zu finden. Im Wesentlichen sieht die normale Kernelvorhersage so aus:
Nebenbemerkung: Solltest du es benutzen? Die Antwort ist kein klares Ja. Es hängt ganz davon ab, was Sie modellieren. Die Verwendung des Fourier-Raums ist nicht unbedingt für nicht stationäre nicht verschiebungsinvariante Kernel geeignet. Die Jungs haben nie behauptet, dass es in dieser Umgebung funktionieren würde, aber wenn man gerade erst in diesem Bereich anfängt, sind die Nuancen manchmal nicht offensichtlich.
quelle