Come funziona un lavello da cucina a caso?


18

L'anno scorso al NIPS 2017 Ali Rahimi e Ben Recht hanno vinto il premio test of time per il loro articolo "Funzioni casuali per macchine kernel di grandi dimensioni", dove hanno introdotto funzionalità casuali, successivamente codificate come algoritmo di lavelli da cucina casuali. Durante la pubblicità del loro documento, hanno dimostrato che il loro modello poteva essere implementato in 5 righe di MATLAB.

% 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);

Come l'algoritmo sopra apprende qualcosa non mi è chiaro. Come funziona un lavello da cucina a caso? In che modo approssima i processi gaussiani e supporta le macchine vettoriali?

modificare

Guardando il discorso di Rahimi, il termine lavelli da cucina casuali non è stato introdotto nel documento per il quale hanno vinto il premio, ma piuttosto alla fine della trilogia di articoli che inizia con "Funzioni casuali per macchine kernel su larga scala". Gli altri documenti sono:

Rahimi, Ali e Benjamin Recht. "Approssimazione uniforme di funzioni con basi casuali." Comunicazione, controllo e informatica, 46ª conferenza annuale Allerton del 2008 in data. IEEE, 2008.

Rahimi, Ali e Benjamin Recht. "Somme ponderate di lavelli da cucina casuali: sostituzione della minimizzazione con randomizzazione nell'apprendimento." Progressi nei sistemi di elaborazione delle informazioni neurali. 2009.

Penso che lo snippet di codice introdotto sopra sia una specializzazione di Algorithm 1 nell'ultimo documento.


Né la parola "sink" né il codice citato vengono visualizzati nel documento collegato. Ti manca un riferimento?
Kodiologo il

2
Hai ragione, grazie. Senza il contesto del discorso del 2017, la domanda sembra un po 'sconnessa! L'idea è stata sviluppata nel primo documento, penso, ma il termine lavelli da cucina casuali è stato introdotto solo in seguito. Lo snippet di codice è stato apparentemente distribuito nella sessione del poster del 2007 per l'articolo. L'ho trascritto dal discorso di Rahimi al NIPS 2017.
MachineEpsilon,

Risposte:


15

I lavelli da cucina casuali (o le funzionalità di Fourier casuali) e altri metodi correlati non si sforzano di eseguire l'inferenza ma piuttosto cercano di ridurre il collo di bottiglia dei metodi di inferenza basati sul kernel.

n×nO(n3) che limita le applicazioni che possono essere applicati a problemi con solo poche migliaia di osservazioni. Il modo più popolare per aggirare questo collo di bottiglia tende ad essere metodi di basso rango (sebbene esistano altri approcci come metodi basati su Kronecker, matrici H e macchine del comitato bayesiano per citarne solo alcuni).

Funzionalità casuali di Fourier (Rehimi & Recht 2007) hanno considerato la creazione di approssimazioni di basso rango dei kernel invarianti di spostamento campionando solo un sottoinsieme casuale dei componenti di Fourier dei kernel. Poiché lo spazio di Fourier è invariante ai turni, questa proprietà è stata preservata, ma ora un unione esplicita di questi componenti di Fourier ha formato un esplicito spazio di kernel riproducibile a dimensioni finite. L'RKHS una volta infinito dimensionale è approssimato dal kernel approssimativo degenerato.

Note sullo snippet di codice: ci sono alcuni dettagli spazzolati nelle 5 righe. Il più importante è che la funzione gaussiana è anche una funzione gaussiana nello spazio di Fourier, solo la varianza è invertita. Ecco perché stanno campionando da Rand e quindi moltiplicando per varianza. Quindi producono alfa che è solo una procedura secondaria per trovare ztest. Essenzialmente la normale previsione del kernel sembra,

zteSt=K(XteSt,X)(K(X,X)+λio)-1y.

zteSt=Φ(XteSt)TΦ(X)(Φ(X)TΦ(X)+λio)-1y.

Φ()

Commento laterale: dovresti usarlo? La risposta non è un chiaro sì. Dipende completamente da cosa stai modellando. L'uso dello spazio di Fourier non è necessariamente appropriato per i kernel invarianti non stazionari non-shift. I ragazzi non hanno mai affermato che avrebbe funzionato in questa impostazione, ma se stai appena iniziando in quella zona a volte le sfumature non sono ovvie.


5
Mi ci è voluto un secondo per capire che il calcolo alfa qui sta risolvendo il problema di regressione della cresta in X e y con il regolarizzatore lambda. Se vieni dai medici di base, allora osservando le tue formule questo è in qualche modo ovvio, provenire da un angolo SVM è leggermente confuso. La tua "previsione del kernel normale" è un GP con rumore aggiunto, noto anche come regressione della cresta del kernel.
Andreas Mueller,

1
@AndreasMueller sì, scusa, è corretto! Sono originario della comunità dei GP, quindi a volte lo trascuro! Sono contento che tu abbia ottenuto quello che volevo dire :)
j__

1
@j__, se hai tempo, ho una domanda sugli RFF qui: stats.stackexchange.com/questions/440633 . Sembra che la risposta alla mia domanda sia capire meglio RKHS e il teorema del rappresentante.
Gwg
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.