Чому дослідники нейронної мережі піклуються про епохи?


69

Епоха стохастичного градієнтного спуску визначається як один прохід через дані. Для кожної міні-партії SGD малюється зразків, обчислюється градієнт і параметри оновлюються. У налаштуваннях епохи проби беруть без заміни.k

Але це здається непотрібним. Чому б не намалювати кожну міні-партію SGD так, як випадково витягується з усього набору даних при кожній ітерації? Протягом великої кількості епох, малі відхилення зразків бачимось більш-менш часто, здаються б маловажливими.k


1
+1 для запитання, що цікаво, у мене було майже те саме запитання, яке я збираюся задати!
Хайтао Ду

Очевидні докази, але я нещодавно встановив одношарову нейронну мережу за допомогою SGD за даними MNIST, які мають 50000 у навчальному розмірі. Після одного випадкового пробігу класифікаційна точність була не набагато вище 30-40%, і ймовірність журналу явно не збігалася. Тому я повторив процедуру ще 30 епох, що призводить до більш ніж 90% точності. Принаймні, по контрприкладу це показало мені, що вони можуть бути необхідними.
tomka

6
@tomka Це, мабуть, свідчить про необхідність декількох передач даних, що відповідає методу, запропонованому тут: продовжуйте малювати зразки на кожну ітерацію тренувань та нудоти. k
Sycorax

1
Ще одне цікаве питання буде: чи замовлення міні-партії також вплине на надмірне обладнання?
Х40тиК

3
@ Pinocchio Стандартна практика SGD - це відбір проб без заміни (поки пул зразків не вичерпається, і в цей момент знову починається нова епоха з усіма даними). Моє запитання, чому він не використовує вибірку із заміною. Виявляється, одна відповідь полягає в тому, що вибірки без заміни покращують швидкість конвергенції для моделі.
Sycorax

Відповіді:


60

Окрім відповіді Франка про практичність та відповіді Девіда про перегляд невеликих підгруп - обидва це важливі моменти, - насправді є деякі теоретичні причини, щоб віддати перевагу вибірці без заміни. Причина, можливо, пов’язана з точкою Девіда (що по суті є проблемою збирача купонів ).

У 2009 році Леон Ботту порівняв ефективність конвергенції з певною проблемою класифікації тексту ( ).n=781,265

Ботто (2009). Цікаво швидка конвергенція деяких алгоритмів походження стохастичного градієнта . Матеріали симпозіуму з вивчення та науки про дані. ( авторський pdf )

Він підготував векторну машину підтримки через SGD з трьома підходами:

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

, де C - функція витрат, θ t параметри на етапі t оптимізації, і очікування перевищує перемішування призначених партій.E[C(θt)minθC(θ)]Cθtt

  • Для випадкових випадків конвергенція була приблизно в порядку (як очікувалося існуючою теорією на той момент).t1
  • tαα>1α1.8
  • t2

Це його малюнок 1, який ілюструє, що: ілюстрація конвергенції за заданими темпами

Це згодом теоретично підтверджено в роботі:

Gürbüzbalaban, Ozdaglar та Parrilo (2015). Чому випадкові перестановки б'ють стохастичний градієнт . arXiv: 1510.08560 . ( відео запрошених бесід на NIPS 2015 )

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


3
Це дуже прониклива відповідь. Дуже дякую за ваш внесок.
Sycorax

1
Вибачте за незнання, але чи не проти пояснити трохи більше, в чому різниця між трьома? Зокрема, я плутаюсь щодо Random, коли ви говорите "зразок", що ви маєте на увазі? Я знаю, що це не те, на що ви посилаєтесь, але стандартний міні-пакетний пакет нейронних мереж SGD зазвичай відбирає партії без заміни на кожній ітерації. Це те, що робить Random? Якщо це так, чим він відрізняється від Shuffle?
Піноккіо

1
Тепер, коли я перечитав це все три, здається, один і той же алгоритм, яка різниця, якщо набір даних перетасовується чи ні, і як часто, якщо партії для SGD завжди все-таки випадкові?
Піноккіо

3
@Pinocchio Уявіть собі набір даних із чотирьох плачів. Випадково може перейти ACADBBCA; кожен запис є абсолютно випадковим. Цикл може йти BDAC BDAC BDAC; він вибирає одне замовлення для кожної епохи і потім повторюється. Перемішання може бути BDAC ADCB CBAD; це йде в епохи, але кожна з них випадкова. Цей аналіз не використовує мініатюри, а лише один елемент одночасно SGD.
Дугал

Це чудова відповідь. Thnx ви!
DankMasterDan

24

Це дійсно зовсім непотрібно з точки зору виступу з великим навчальним набором, але використання епох може бути зручним, наприклад:

  • це дає досить хороший показник: "нейронна мережа була навчена протягом 10 епох" є більш чітким твердженням, ніж "нейронна мережа була навчена 18942 ітераціям" або "нейронна мережа була навчена понад 303072 проби".
  • під час тренувального етапу відбувається достатньо випадкових речей: ініціалізація випадкової ваги, переміщення міні-партії, випадання тощо.
  • це легко здійснити
  • це дозволяє уникнути питання, чи достатньо великий навчальний набір, щоб не було епох

[1] наводить ще одну причину, яка не так актуальна, враховуючи сучасну конфігурацію комп'ютера:

Що стосується будь-якого стохастичного градієнтного способу спуску (включаючи міні-пакетний корпус), для ефективності обчислювача важливо, щоб кожен приклад або міні-партія відбирали вибірку приблизно незалежно. Оскільки випадковий доступ до пам'яті (або ще гірше, до диска) є дорогим, хорошим наближенням, який називається поступовий градієнт (Bertsekas, 2010), є відвідування прикладів (або міні-пакетів) у фіксованому порядку, що відповідає їх порядку в пам'яті або диск (повторення прикладів у тому ж порядку в другу епоху, якщо ми не в чистому випадку в Інтернеті, коли кожен приклад відвідується лише один раз).У цьому контексті безпечніше, якщо приклади або міні-партії спочатку розміщуються у випадковому порядку (щоб переконатися, що це так, спочатку можна було б перетасувати приклади). Швидше конвергенція спостерігається, якщо змінюється порядок відвідування міні-партій для кожної епохи, що може бути досить ефективно, якщо навчальний набір зберігається в пам'яті комп'ютера.


[1] Бенджо, Йошуа. " Практичні рекомендації щодо градієнтної підготовки глибоких архітектур ". Нейронні мережі: трюки торгівлі. Спрингер Берлін Гейдельберг, 2012. 437-478.


1
k

1
@Sycorax Відбір проб без заміни, незважаючи на те, що, звичайно, не є незалежним, є "приблизно незалежним" в тому сенсі, що він може бути обмінним . З точки зору підготовки класифікатора, який не надто піклується ні про одну точку даних, ця обмінність, безумовно, досить близька до "приблизно незалежної".
Дугал

18

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

У R ми можемо швидко побачити, як виглядає розподіл

plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")

біноміальна ПМФ

Деякі приклади будуть відвідуватися 20+ разів, тоді як 1% з них будуть відвідуватися 3 або менше разів. Якщо навчальний набір був обраний ретельно, щоб представити очікуваний розподіл прикладів у реальних даних, це може мати реальний вплив на деякі області набору даних, особливо, коли ви починаєте розбивати дані на менші групи.

Розглянемо останній випадок, коли один виборець штату Іллінойс фактично отримав вибірку в 30 разів і різко змістив оцінки моделі для своєї демографічної групи (і меншою мірою для всього населення США). Якщо ми випадково перестанемо зразки зображень "Ruffed Grouse", зроблених на зеленому тлі в похмурі дні з вузькою глибиною різкості та підкреслити інші види рябних зображень, модель може асоціювати ці невідповідні риси з етикеткою категорії. Чим більше способів скинути дані, тим більше цих підгруп буде, і більше можливостей для подібного роду помилок буде.


1
Я не думаю, що це призведе до великої різниці на практиці для великого навчального набору, але, безумовно, я сподіваюся, що це буде з меншим навчальним набором.
Френк Дернонкур

5
@FranckDernoncourt добре, вся справа в тому, що це може мати значення для великих наборів даних, якщо ви почнете дивитися на невеликі підгрупи. Що не є рідкісною процедурою у великих наборах даних,
dimpol

майже впевнений, що ви повинні були використовувати рівномірний розподіл, а не двочлен
lahwran

2
107106samples = sample(1:1E6, size = 1E7, replace = TRUE)plot(table(table(samples)) / 1E7)

2
ага! Я тоді помилявся.
lahwran
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.