Мы работаем над проектом машинного обучения, в котором мы хотели бы увидеть влияние определенных онлайн-методов встраивания образцов на SVM.
В процессе мы пытались взаимодействовать с Pegasos а также dlib а также проектирование (и попытка написать) нашей собственной реализации SVM.
dlib выглядит многообещающе, поскольку позволяет взаимодействовать с написанными пользователем ядрами.
Тем не менее, ядра не дают нам желаемого поведения «онлайн» (если это предположение неверно).
Поэтому, если вы знаете о библиотеке SVM, которая поддерживает онлайн-встраивание и пользовательские встроенные кодировщики, это было бы очень полезно.
Просто чтобы прояснить про «онлайн».
Крайне важно, чтобы процесс встраивания происходил в сети, чтобы избежать интенсивного использования памяти.
Мы в основном хотим сделать следующее в Stochastic subGradient Decent (в очень общем псевдокоде):
w = 0 vector
for t=1:T
i = random integer from [1,n]
embed(sample_xi)
// sample_xi is sent to sub gradient loss i as a parameter
w = w - (alpha/t)*(sub_gradient(loss_i))
end
Я думаю, что в вашем случае вы могли бы рассмотреть бюджетный стохастический градиентный спуск для крупномасштабного обучения SVM (BSGD) [1] от Ван, Краммер, Вучетич
Это связано с тем, что, как указано в статье о «Проклятии кернелизации», вы можете использовать эту опцию вместо того, что вы указали в псевдокоде в своем вопросе.
Библиотека машинного обучения акул реализует BSGD. Проверьте быстрый учебник Вот
Может быть, вы хотите использовать что-то вроде Dlib’s эмпирическая карта ядра. Вы можете прочитать его документацию и, в частности, пример программы, чтобы узнать подробности того, что она делает, но в основном она позволяет вам проецировать образец в диапазон некоторого базиса в пространстве функций ядра. В dlib есть даже алгоритмы, которые итеративно строить базовый набор, Возможно, это то, о чем вы спрашиваете.