L'année dernière, au NIPS 2017, Ali Rahimi et Ben Recht ont remporté le prix du test du temps pour leur article "Random Features for Large-Scale Kernel Machines" où ils ont introduit des fonctionnalités aléatoires, codifiées plus tard comme l'algorithme des éviers de cuisine aléatoires. Dans le cadre de la publicité de leur article, ils ont montré que leur modèle pouvait être implémenté en 5 lignes 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);
Comment l'algorithme ci-dessus apprend quelque chose n'est pas clair pour moi. Comment fonctionne un évier de cuisine aléatoire? Comment rapproche-t-il les processus gaussiens et prend-il en charge les machines vectorielles?
Éditer
En revoyant l'exposé de Rahimi, le terme éviers de cuisine aléatoires n'est pas introduit dans l'article pour lequel ils ont remporté le prix, mais plutôt à la fin de la trilogie d'articles commençant par "Fonctions aléatoires pour les machines à noyau à grande échelle". Les autres articles sont:
Je pense que l'extrait de code présenté ci-dessus est une spécialisation de l'algorithme 1 dans le dernier article.
la source
Réponses:
Les éviers de cuisine aléatoires (ou les fonctionnalités de Fourier aléatoires) et d'autres méthodes connexes ne tentent pas d'effectuer l'inférence, mais essaient plutôt de réduire le goulot d'étranglement des méthodes d'inférence basées sur le noyau.
Les méthodes du noyau sont excellentes dans de nombreux contextes, mais elles reposent généralement sur la manipulation de matrices, par exemple la résolution de systèmes d'équations linéaires et la recherche de déterminants matriciels. Si la matrice est alors naïvement ces calculs coûtent généralement ce qui limite les applications qu'ils peuvent être appliquées à des problèmes avec seulement quelques milliers d'observations. Le moyen le plus populaire de contourner ce goulot d'étranglement a tendance à être les méthodes de bas rang (bien qu'il existe d'autres approches telles que les méthodes basées sur Kronecker, les matrices H et les machines des comités bayésiens pour n'en nommer que quelques-unes).n×n O(n3)
Les caractéristiques de Fourier aléatoires (Rehimi & Recht 2007) ont envisagé de créer des approximations de bas rang des noyaux invariants par décalage en n'échantillonnant qu'un sous-ensemble aléatoire des composantes de Fourier des noyaux. Comme l'espace de Fourier est invariant par décalage, cette propriété a été préservée mais maintenant un espace Hilbert de noyau de reproduction de dimension finie explicite a été formé par l'union de ces composants de Fourier. Le RKHS de dimension une fois infinie est approximé par le noyau approximatif dégénéré.
Notes sur l'extrait de code: il y a quelques détails balayés dans les 5 lignes. Le plus important est que la fonction gaussienne est également une fonction gaussienne dans l'espace de Fourier, seule la variance est inversée. C'est pourquoi ils échantillonnent à partir de randn puis multiplient par variance. Ensuite, ils produisent alpha qui n'est qu'une sous-procédure pour trouver ztest. Essentiellement, la prédiction normale du noyau ressemble,
Commentaire secondaire: devriez-vous l'utiliser? La réponse n'est pas un oui clair. Cela dépend complètement de ce que vous modélisez. L'utilisation de l'espace de Fourier n'est pas nécessairement appropriée pour les noyaux invariants non stationnaires non décalés. Les gars n'ont jamais prétendu que cela fonctionnerait dans ce cadre, mais si vous débutez dans ce domaine, parfois les nuances ne sont pas évidentes.
la source