去年在 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 的演讲,随机厨房水槽一词并没有在他们获奖的论文中介绍,而是在以“大型内核机器的随机特征”开头的论文三部曲的结尾处介绍。其他论文是:
拉希米、阿里和本杰明·雷赫特。“具有随机基数的函数的统一逼近。” 通信、控制和计算,2008 年第 46 届阿勒顿年度会议。IEEE,2008 年。
拉希米、阿里和本杰明·雷赫特。“随机厨房水槽的加权总和:用学习中的随机化代替最小化。” 神经信息处理系统的进展。2009 年。
我认为上面介绍的代码片段是上一篇论文中算法 1 的特化。