В прошлом году на 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);
Как вышеприведенный алгоритм чему-то учит, мне неясно. Как работает случайная кухонная раковина? Как это приближает гауссовские процессы и опорные векторные машины?
редактировать
Повторяя выступление Рахими, термин «случайные кухонные мойки» введен не в статье, за которую они выиграли награду, а в конце трилогии статей, начинающихся с «Случайных функций для крупномасштабных машин с ядром». Другие документы:
Я думаю, что фрагмент кода, представленный выше, является специализацией Алгоритма 1 в последней статье.
источник
Ответы:
Случайные кухонные раковины (или случайные функции Фурье) и другие связанные методы не стремятся выполнить логический вывод, а скорее пытаются уменьшить узкое место в методах логического вывода на основе ядра.
Ядерные методы хороши во многих ситуациях, но они обычно полагаются на манипуляции с матрицами, например, на решение линейных систем уравнений и нахождение матричных определителей. Если матрица равна то наивные вычисления обычно стоят что ограничивает возможности их применения к задачам с несколькими тысячами наблюдений. Наиболее популярным способом обхода этого узкого места, как правило, являются методы низкого ранга (хотя существуют и другие подходы, такие как методы на основе Кронекера, H-матрицы и машины байесовских комитетов и многие другие).n × n О ( n3)
Случайные особенности Фурье (Rehimi & Recht 2007) рассматривали возможность создания аппроксимаций ядра ранга для инвариантных к сдвигу ядер путем выборки только случайного подмножества компонентов Фурье ядер. Поскольку пространство Фурье инвариантно относительно сдвига, это свойство было сохранено, но теперь явное конечномерное воспроизводящее гильбертово пространство ядра было образовано объединением этих компонентов Фурье. Некогда бесконечномерный RKHS аппроксимируется вырожденным приближенным ядром.
Примечания к фрагменту кода: в 5 строках есть несколько деталей. Наиболее важным является то, что функция Гаусса также является функцией Гаусса в пространстве Фурье, просто дисперсия инвертируется. Вот почему они выбирают из рандн, а затем умножают на дисперсию. Затем они производят альфу, которая является лишь подпроцедурой для поиска ztest. По сути, нормальное предсказание ядра выглядит так:
Где - оцененный вектор случайных признаков Фурье.Φ ( ⋅ )
Дополнительный комментарий: Вы должны использовать это? Ответ не ясен да. Это полностью зависит от того, что вы моделируете. Использование пространства Фурье не обязательно подходит для нестационарных неизменных инвариантных ядер. Ребята никогда не утверждали, что это сработает в этой обстановке, но если вы только начинаете в этой области, иногда нюансы не очевидны.
источник