Регуляризация и масштабирование функций в онлайн-обучении?

15

Допустим, у меня есть классификатор логистической регрессии. В обычном пакетном обучении я бы использовал термин регуляризатор, чтобы предотвратить переоснащение и сохранить вес небольшим. Я также нормализую и масштабирую свои функции.

В режиме онлайн обучения я получаю непрерывный поток данных. Я делаю обновление градиентного спуска с каждым примером и затем отбрасываю его. Должен ли я использовать понятие масштабирования и регуляризации в онлайн-обучении? Если да, как я могу это сделать? Например, у меня нет набора обучающих данных для сравнения. У меня также нет проверки для настройки параметра регуляризации. Если нет, то почему нет?

В своем онлайн-обучении я постоянно получаю поток примеров. Для каждого нового примера я делаю прогноз. Затем на следующем шаге времени я получаю фактическую цель и выполняю обновление градиентного спуска.

siamii
источник

Ответы:

9

Проект с открытым исходным кодом vowpal wabbit включает в себя реализацию SGD в режиме онлайн, которая усиливается на лету (онлайн) вычислением 3 дополнительных факторов, влияющих на весовые обновления. Эти факторы могут быть включены / отключены их соответствующими параметрами командной строки (по умолчанию все три включены, --sgdопция отключает их все, т. Е. Откатывается на «классический» SGD).

3 варианта расширения SGD:

  • --normalized Обновления с учетом масштаба каждой функции
  • --adaptive использует адаптивный градиент (AdaGrad) (Duchi, Hazan, Singer)
  • --invariant Важные обновления (Karampatziakis, Langford)

Вместе они гарантируют, что процесс онлайн-обучения выполняет трехстороннюю автоматическую компенсацию / регулировку для:

  • масштабирование для каждой функции (большие или малые значения)
  • затухание скорости обучения для каждой функции в зависимости от важности функции
  • Адаптивная корректировка скорости обучения для функции для распространенности / редкости функции в примерах

В результате нет необходимости предварительно нормализовать или масштабировать различные функции, чтобы сделать ученика менее предвзятым и более эффективным.

Кроме того, vowpal wabbit также реализует онлайн-регуляризацию через усеченный градиентный спуск с опциями регуляризации:

  • --l1 (L1-норма)
  • --l2 (L2-норма)

Мой опыт использования этих улучшений для нескольких наборов данных заключался в том, что они значительно повысили точность модели и более плавную конвергенцию, когда каждый из них был введен в код.

Вот несколько научных статей для более подробной информации, связанной с этими улучшениями:

arielf
источник
Ариэльф - Если вы отключите три усовершенствования (через --sgd), это sgd, который выполняется, показан на слайде 11 github.com/JohnLangford/vowpal_wabbit/wiki/v6.1_tutorial.pdf, чтобы power_t и initial_t стали актуальными ?
B_Miner
1
B_miner: насколько я понимаю --power_tи --initial_tявляются глобальными (не по функциям) независимыми опциями. --sgdвозвращается только к "классическому" SGD. IOW: --sgdтолько отменяет --invariant, --normalizedи --adaptive(что подразумевает отдельную,
индивидуальную
Знаете ли вы, есть ли способ сделать эти обновления в параллельном асинхронном режиме (как это делается в асинхронном SGD)? Кажется, VW с несколькими работниками усредняет модель каждого работника в конце каждого прохода. Любые документы / программные указатели о том, как это сделать?
JC1
2

В этой статье описывается методика онлайн-регуляризации, которую они применяют к различным алгоритмам, включая логистическую регрессию: http://ai.stanford.edu/~chuongdo/papers/proximal.pdf

Дэвид Маркс
источник
1

да, вам, безусловно, нужна регуляризация ... это также помогает градиентному спуску (и инициализирует скорость обучения до 1 / C)

см., например, документ SGD-QN http://leon.bottou.org/papers документы

Вы на самом деле не объяснили, что вы подразумеваете под онлайн-обучением: например, за каждую точку вы получаете целевое значение? Я не знаю, как бы вы включили ... поиск C ... Я думаю, у вас было бы несколько классификаторов с различными терминами регуляризации и отслеживания ошибки прогнозирования (до обновления весов)

seanv507
источник
Благодаря онлайн-обучению я получаю один пример и делаю прогноз. На следующем шаге времени я получаю фактическую цель для моего примера и делаю обновление градиентного спуска.
Сиамии
ну, тогда все должно быть так, как я предложил - вы запускаете кучу классификаторов с разными параметрами регуляризации и отслеживаете ошибки предсказания каждого классификатора.
seanv507
Я не уверен, что вы подразумеваете под инициализацией скорости обучения 1 / C. Что такое С? Вы говорите о опорных векторных машинах? Я говорю о логистической регрессии, где регуляризатор имеет коэффициент лямбда. Я не знаю, что это имеет отношение к скорости обучения.
Сиамии
да, параметр регуляризации l2, C, лямбда или что-то еще. это то, что упомянуто в статье sgdqn Бутту, и я полагаю, что объяснил лучше где-то еще. в основном ваша скорость обучения должна быть 1 / кривизна (обратная Гессиана) вашей поверхности ошибки .. теперь, если ваша поверхность ошибки
seanv507
1
Мне также нужно сделать масштабирование функций? Как это сделать в режиме онлайн?
Сиамии