Năm ngoái tại NIPS 2017 Ali Rahimi và Ben Recht đã giành được giải thưởng về thời gian cho bài báo "Tính năng ngẫu nhiên cho máy hạt nhân quy mô lớn" nơi họ giới thiệu các tính năng ngẫu nhiên, sau đó được mã hóa thành thuật toán bồn rửa nhà bếp ngẫu nhiên. Là một phần của việc công khai bài báo của họ, họ đã cho thấy rằng mô hình của họ có thể được thực hiện trong 5 dòng 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);
Làm thế nào các thuật toán trên học bất cứ điều gì là không rõ ràng với tôi. Làm thế nào để một bồn rửa nhà bếp ngẫu nhiên làm việc? Làm thế nào để nó gần đúng các quá trình Gaussian và máy vectơ hỗ trợ?
Biên tập
Nói lại cuộc nói chuyện của Rahimi, thuật ngữ bồn rửa nhà bếp ngẫu nhiên không được giới thiệu trong bài báo mà họ đã giành giải thưởng mà là ở phần cuối của bộ ba bài báo bắt đầu với "Tính năng ngẫu nhiên cho máy hạt nhân quy mô lớn". Các giấy tờ khác là:
Tôi nghĩ đoạn mã được giới thiệu ở trên là một chuyên ngành của Thuật toán 1 trong bài báo trước.