昨年の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);
上記のアルゴリズムがどのように何かを学習するかは私には不明です。ランダムキッチンシンクはどのように機能しますか?どのようにガウスプロセスに近似し、ベクターマシンをサポートしますか?
編集
Rahimiの講演を再確認すると、ランダムキッチンシンクという用語は、受賞した論文ではなく、「大規模カーネルマシンのランダム機能」で始まる論文の3部作の終わりに導入されています。他の論文は次のとおりです。
ラヒミ、アリ、ベンジャミンレヒト。「ランダムベースを持つ関数の均一近似。」コミュニケーション、制御、コンピューティング、2008年第46回アラートン会議。IEEE、2008。
ラヒミ、アリ、ベンジャミンレヒト。「ランダムキッチンシンクの加重合計:学習における最小化をランダム化に置き換えます。」神経情報処理システムの進歩。2009。
上で紹介したコードスニペットは、前回の論文のアルゴリズム1の特殊化だと思います。