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


15

Скажімо, у мене є класифікатор логістичної регресії. У звичайному серійному навчанні я мав би термін регуляризатора, щоб запобігти надягання і зберегти ваги невеликими. Я б також нормалізував і масштабував свої функції.

У режимі онлайн-навчання я отримую безперервний потік даних. Я оновлюю градієнтне зменшення з кожним прикладом, а потім відкидаю його. Чи потрібно використовувати термін масштабування функцій та регуляризацію в онлайн-навчанні? Якщо так, то як я можу це зробити? Наприклад, у мене немає набору навчальних даних, з якими можна було б оцінювати. У мене також не встановлено перевірку, щоб настроїти параметр регуляризації. Якщо ні, то чому б ні?

Під час навчання в Інтернеті я постійно отримую потік прикладів. Для кожного нового прикладу я роблю передбачення. Потім на наступному кроці часу я отримую фактичну ціль і оновлюю спуск градієнта.

Відповіді:


9

Вабіт vowpal проекту з відкритим кодом включає в себе реалізацію онлайн-SGD, що підсилюється за допомогою "льоту" (онлайн) обчислення 3 додаткових факторів, що впливають на оновлення ваги. Ці фактори можуть бути включені / відключені відповідними параметрами командного рядка (за замовчуванням усі три включені, --sgdопція вимикає їх усіх, тобто: відкидання на "класичний" SGD).

3 варіанти посилення SGD:

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

Разом вони гарантують, що онлайн-процес навчання здійснює 3-х кратну автоматичну компенсацію / коригування для:

  • масштабування за особливістю (великі проти малих значень)
  • занепад швидкості навчання на особливості залежно від важливості функції
  • за функцією адаптивного регулювання швидкості навчання для поширеності ознак / рідкість у прикладах

Підсумок полягає в тому, що немає необхідності попередньо нормалізувати або масштабувати різні функції, щоб зробити школяра менш упередженим та більш ефективним.

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

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

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

Ось декілька наукових праць для більш детальної інформації про ці удосконалення:


Arielf - Якщо вимкніть три удосконалення (через --sgd), це sgd, який робиться, показаний на слайді 11 сайту github.com/JohnLangford/vowpal_wabbit/wiki/v6.1_tutorial.pdf, щоб потім power_t та початковий_t стали актуальними ?
B_Miner

1
B_miner: наскільки я розумію --power_tі --initial_tє глобальними (не за ознакою) незалежними варіантами. --sgdлише повертається до "класичного" SGD. IOW: --sgdлише скасовує --invariant, --normalizedі --adaptive(що означає окремі ставки навчання за особливістю)
аріельф

Чи знаєте ви, чи є спосіб зробити ці оновлення паралельно асинхронним (як це робиться в асинхронному SGD)? Здається, VW з кількома працівниками в середньому розраховує модель кожного працівника в кінці кожного проходу. Будь-які покажчики документів / програмного забезпечення про те, як це зробити?
JC1


1

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

див., наприклад, папір SGD-QN http://leon.bottou.org/ paper paperou

ви насправді не пояснили, що ви маєте на увазі під навчанням в Інтернеті: наприклад, для кожного пункту ви отримуєте цільове значення? Я не знаю, як би ви включили ... пошук C ... Я думаю, у вас було б кілька класифікаторів з різними термінами регуляризації та відстежувати помилку прогнозування (перш ніж оновлювати ваги)


Навчаючись в Інтернеті, я отримую один приклад і роблю передбачення. На наступному етапі часу я отримую фактичну ціль для свого прикладу та оновлюю градієнтне пониження.
siamii

добре, це має бути, як я запропонував - ви запускаєте купу класифікаторів з різними параметрами регуляризації та стежите за помилками прогнозування кожного класифікатора.
seanv507

Я не впевнений, що ви маєте на увазі, ініціалізуючи рівень навчання до 1 / C. Що таке С? Ви говорите про підтримуючі векторні машини? Я говорю про логістичну регресію, де регуляризатор має коефіцієнт лямбда. Я не знаю, що це стосується рівня навчання.
siamii

так, параметр регуляризації l2, C, лямбда або ін. це щось, що згадується в стороні в sgdqn папері Bououu, і я вважаю, що пояснено краще десь в іншому місці. в основному ваш рівень навчання повинен бути 1 / кривизна (зворотна Гессіану) вашої поверхні помилок. Тепер, якщо ваша поверхня помилок
seanv507

1
Чи потрібно також робити масштабування функції? Як це зробити в Інтернеті?
siamii
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.