去年在NIPS 2017上,阿里·拉希米(Ali Rahimi)和本·雷赫特(Ben Recht)的论文“大型内核机器的随机特征” 获得了时间测试奖,他们引入了随机特征,后来被编纂为随机厨房水槽算法。作为公开发表论文的一部分,他们表明可以在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);
我不清楚上述算法如何学习任何东西。随机厨房水槽如何工作?它如何近似高斯过程和支持向量机?
编辑
重新审视Rahimi的演讲,随机厨房水槽一词并没有在获得该奖项的论文中引入,而是在论文三部曲的结尾处开始,即“大型内核机器的随机功能”。其他论文是:
Rahimi,Ali和Benjamin Recht。“具有随机基的函数的均匀近似。” 通信,控制和计算,2008年第46届Allerton年度会议。IEEE,2008年。
Rahimi,Ali和Benjamin Recht。“随机的厨房水槽的加权总和:用学习中的随机性代替最小化。” 神经信息处理系统的进步。2009年。
我认为上面介绍的代码段是上一篇论文中算法1的特化。