¿Cómo funciona un fregadero de cocina al azar?


18

El año pasado, en NIPS 2017, Ali Rahimi y Ben Recht ganaron el premio de la prueba del tiempo por su trabajo "Características aleatorias para máquinas de grano a gran escala", donde introdujeron características aleatorias, que luego se codificaron como el algoritmo de fregaderos de cocina aleatorios. Como parte de la publicidad de su trabajo, mostraron que su modelo podría implementarse en 5 líneas de 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);

Cómo el algoritmo anterior aprende algo no está claro para mí. ¿Cómo funciona un fregadero de cocina al azar? ¿Cómo aproxima los procesos gaussianos y admite máquinas de vectores?

Editar

Al volver a observar la charla de Rahimi, el término fregaderos de cocina al azar no se introduce en el documento por el que ganaron el premio, sino al final de la trilogía de documentos que comienzan con "Características aleatorias para máquinas de grano a gran escala". Los otros documentos son:

Rahimi, Ali y Benjamin Recht. "Aproximación uniforme de funciones con bases aleatorias". Comunicación, control e informática, 2008 46a Conferencia anual de Allerton sobre. IEEE, 2008.

Rahimi, Ali y Benjamin Recht. "Sumas ponderadas de fregaderos de cocina aleatorios: Reemplazar la minimización por aleatorización en el aprendizaje". Avances en sistemas de procesamiento de información neuronal. 2009

Creo que el fragmento de código presentado anteriormente es una especialización del Algoritmo 1 en el último artículo.


Ni la palabra "hundirse" ni el código que cita aparecen en el documento vinculado. ¿Te falta una referencia?
Kodiólogo

2
Tienes toda la razón, gracias. Sin el contexto de la charla de 2017, ¡la pregunta parece un poco inconexa! La idea se desarrolló en el primer artículo, creo, pero el término fregaderos de cocina al azar solo se introdujo más tarde. El fragmento de código fue distribuido en la sesión de póster de 2007 para el periódico aparentemente. Lo transcribí de la charla de Rahimi en NIPS 2017.
MachineEpsilon

Respuestas:


15

Los sumideros de cocina aleatorios (o características de Fourier aleatorias) y otros métodos relacionados no se esfuerzan por realizar inferencia, sino que intentan reducir el cuello de botella de los métodos de inferencia basados ​​en el núcleo.

Los métodos de kernel son excelentes en muchos entornos, pero generalmente dependen de la manipulación de matrices, por ejemplo, para resolver sistemas lineales de ecuaciones y encontrar determinantes de matrices. Si la matriz es entonces ingenuamente estos cálculos generalmente cuestan que limita las aplicaciones que pueden aplicarse a problemas con solo unos pocos miles de observaciones. La forma más popular de evitar este cuello de botella tiende a ser los métodos de bajo rango (aunque existen otros enfoques, como los métodos basados ​​en Kronecker, las matrices H y las máquinas de comités bayesianos, por nombrar solo algunos).norte×norteO(norte3)

Las características aleatorias de Fourier (Rehimi y Recht 2007) consideraron la creación de aproximaciones de bajo rango de núcleos invariantes de cambio al muestrear solo un subconjunto aleatorio de los componentes de Fourier de los núcleos. Como el espacio de Fourier es invariante al cambio, esta propiedad se conservó pero ahora se formó un núcleo de reproducción de dimensiones finitas explícito del espacio de Hilbert por la unión de estos componentes de Fourier. El RKHS dimensional una vez infinito es aproximado por el núcleo aproximado degenerado.

Notas sobre el fragmento de código: hay algunos detalles cepillados en las 5 líneas. Lo más importante es que la función gaussiana también es una función gaussiana en el espacio de Fourier, solo la varianza se invierte. Es por eso que están tomando muestras de randn y luego multiplicando por varianza. Luego producen alfa, que es solo un subprocedimiento para encontrar ztest. Esencialmente, la predicción normal del núcleo se ve así,

ztmist=K(Xtmist,X)(K(X,X)+λyo)-1y.

ztmist=Φ(Xtmist)TΦ(X)(Φ(X)TΦ(X)+λyo)-1y.

Φ()

Comentario lateral: ¿Deberías usarlo? La respuesta no es un sí claro. Depende completamente de lo que estés modelando. El uso del espacio de Fourier no es necesariamente apropiado para los núcleos invariantes no estacionarios y sin desplazamiento. Los chicos nunca afirmaron que funcionaría en este entorno, pero si recién estás comenzando en esa área, a veces los matices no son obvios.


55
Me tomó un segundo darme cuenta de que calcular alfa aquí es resolver el problema de regresión de crestas en X e Y con el regularizador lambda. Si vienes de médicos generales, entonces mirar tus fórmulas es algo obvio, ya que desde un ángulo SVM es un poco confuso. Su "predicción de kernel normal" es un GP con ruido agregado, también conocido como regresión de cresta de kernel.
Andreas Mueller

1
@AndreasMueller sí, lo siento, es correcto! Originalmente soy de la comunidad de médicos de cabecera, ¡así que a veces paso por alto eso! Me alegro de que hayas entendido lo que quise decir :)
j__

1
@j__, si tiene tiempo, tengo una pregunta sobre RFF aquí: stats.stackexchange.com/questions/440633 . Parece que la respuesta a mi pregunta es comprender mejor RKHS y el teorema del representador.
gwg
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.