Минулого року на NIPS 2017 Алі Рахімі та Бен Рехт виграли нагороду за тест часу за свою статтю "Випадкові функції для крупномасштабних машин ядра", де вони ввели випадкові функції, пізніше кодифіковані як алгоритм випадкових мийок на кухні. У рамках оприлюднення своїх робіт вони показали, що їх модель може бути реалізована в 5 рядках матлаба.
% 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 в останній статті.