Чому люди використовують методи квадратичного програмування (наприклад, SMO) при роботі з ядрами SVM? Що не так з градієнтним узвозом? Чи неможливо користуватися ядрами або це занадто повільно (і чому?).
Ось трохи більше контексту: намагаючись зрозуміти SVMs трохи краще, я використовував Gradient Descent для підготовки лінійного класифікатора SVM, використовуючи наступну функцію витрат:
Я використовую такі позначення:
- - вагова характеристика моделі, а - її параметр зміщення.
- - вектор функції навчального екземпляра .
- - цільовий клас (-1 або 1) для екземпляра.
- - кількість навчальних екземплярів.
- - гіперпараметр регуляризації.
Я отримав (під) градієнтний вектор (щодо і ) з цього рівняння, і градієнтний спуск спрацював чудово.
Тепер я хотів би вирішити нелінійні проблеми. Чи можу я просто замінити всі крапкові продукти на у функції витрат, де - функція ядра (наприклад, Gaussian RBF, ), то використовуйте обчислення для отримання (під) градієнтного вектора та йти вперед з градієнтним узвозом? K( u , v )KK( u , v )= e - γ ‖ u - v ‖ 2
Якщо це занадто повільно, чому це так? Чи функція витрат не опукла? Або це тому, що градієнт змінюється занадто швидко (це не Ліпшиц безперервно), тому алгоритм продовжує стрибати по долинах під час спуску, тому він сходить дуже повільно? Але навіть тоді, як це може бути гірше, ніж часова складність програмування квадратичного програмування, яка є ? Якщо мова йде про локальні мінімуми, чи не може стохастичний ГД з імітованим відпалом подолати їх?