В прошлом году на NIPS 2017 Али Рахими и Бен Рехт выиграли тест на награду за свою работу «Случайные функции для крупномасштабных машин с ядром», где они представили случайные функции, которые впоследствии были кодифицированы как алгоритм случайных кухонных раковин. В рамках публикации своего документа они показали, что их модель может быть реализована в 5 строках 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);
Как вышеприведенный алгоритм чему-то учит, мне неясно. Как работает случайная кухонная раковина? Как это приближает гауссовские процессы и опорные векторные машины?
редактировать
Повторяя выступление Рахими, термин «случайные кухонные мойки» введен не в статье, за которую они выиграли награду, а в конце трилогии статей, начинающихся с «Случайных функций для крупномасштабных машин с ядром». Другие документы:
Я думаю, что фрагмент кода, представленный выше, является специализацией Алгоритма 1 в последней статье.