Чому розмір міні-партії краще, ніж одна «партія» з усіма навчальними даними?


40

Я часто читаю, що для моделей Deep Learning звичайною практикою є застосування міні-партій (як правило, невеликих, 32/64) протягом кількох навчальних епох. Я не можу зрозуміти причину цього.

Якщо я не помиляюся, розмір партії - це кількість екземплярів тренувань, які модель бачила під час ітерації тренувань; і епоха - це повна черга, коли кожен з навчальних екземплярів бачив модель. Якщо так, я не бачу переваги ітерації над майже незначним набором навчальних екземплярів кілька разів на відміну від застосування "максимум партії", виставляючи всі доступні екземпляри тренувань у кожному кроці до моделі (якщо, звичайно, вистачити пам'ять). У чому перевага такого підходу?


1
Оформити цю відповідь.
Icyblade



Відповіді:


46

Ключова перевага використання minibatch на відміну від повного набору даних сягає основної ідеї стохастичного градієнтного спуску 1 .

Під час спуску градієнта партії ви обчислюєте градієнт по всьому набору даних, усереднюючи потенційно величезну кількість інформації. Для цього потрібно багато пам'яті. Але справжній гандикап - це траєкторія партійного градієнта, яка приземлює вас у поганому місці (точка сідла).

У чистому SGD, з іншого боку, ви оновлюєте свої параметри, додаючи (знак мінус) градієнт, обчислений на одному екземплярі набору даних. Оскільки він заснований на одній випадковій точці даних, це дуже шумно і може зайти в напрямку, далекому від градієнта партії. Однак шум - це саме те, що ви хочете в невипуклій оптимізації, оскільки це допомагає вам уникнути місця сідла або локальних мінімумів (теорема 6 в [2]). Недоліком є ​​те, що він надзвичайно неефективний, і вам потрібно багато разів перебирати весь набір даних, щоб знайти гарне рішення.

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

1 Bottou, L. (2010). Масштабне машинне навчання зі стохастичним градієнтом. У матеріалах COMPSTAT'2010 (с. 177-186). Physica-Verlag HD.

[2] Ge, R., Huang, F., Jin, C., & Yuan, Y. (2015, червень). Врятуючись від східних точок - онлайн-стохастичний градієнт для тензорного розкладання. В COLT (с. 797-842).

Редагувати:

Я щойно побачив цей коментар у фейсбуці Yann LeCun, який дає нову точку зору на це питання (вибачте, не знаю, як зв’язатись із fb.)

Тренування з великими міні-бомбами шкодить вашому здоров’ю. Що ще важливіше, це погано для вашої тестової помилки. Друзі не дозволяють друзям використовувати міні-партії, що перевищують 32. Поміркуймо: лише люди перейшли на розміри міні-партії, більші за один, починаючи з 2012 року, це тому, що графічні процесори неефективні для розмірів партії менше 32. Це жахлива причина. Це просто означає, що наше обладнання відстійне.

Він цитував цей документ, який нещодавно був опублікований в arXiv кілька днів тому (квітень 2018), який варто прочитати,

Домінік Майстер, Карло Луші, переглянувши невелику серійну підготовку для глибоких нейронних мереж , arXiv: 1804.07612v1

З реферату,

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

Найкращі показники отримані за розмірами міні-партії між m = 2 та m = 32, що суперечить останнім роботам, що виступають за використання мініатюрних розмірів у тисячах.


2
Чому міні-партійний градієнтний спуск має більше шансів уникати поганих локальних мінімумів, ніж пакетний градієнт спуску? Чи є у вас щось, що підтверджує цю претензію?
Мартін Тома

@MartinThoma Дивіться теорему 6 у [2], нещодавній статтю про JMLR.
horaceT

2
Цей документ також є на arXiv . Також я не бачу, як це підтримує вашу претензію. Вони навіть не згадували міні-партійний градієнтний спуск. Я не розумію цієї теореми (наприклад, що таке "g (X)"? Де вони ввели це позначення? У класах статистики g (X) = E (X) ... але це не має особливого сенсу) . Що таке ? - Твердження цієї теореми, здається, говорить про відсутність поганих локальних мінімумів. Але це буде справедливо для спуску градієнта SGD та пакетного градієнта, а також для мініатюрного градієнта спуску, правда? ϕ(w,X)
Мартін Тома

2
@MartinThoma З огляду на те, що для даного набору даних є один глобальний мінімум, точний шлях до цих глобальних мінімумів залежить від різних речей для кожного методу GD. Для партії єдиним стохастичним аспектом є ваги при ініціалізації. Шлях градієнта буде однаковим, якщо ви знову тренуєте NN з тими ж початковими вагами та набором даних. Для міні-партії та SGD шлях буде мати деякі стохастичні аспекти між ними на кожному кроці від стохастичного відбору проб точок даних для навчання на кожному кроці. Це дозволяє міні-партії та SGD уникати місцевих оптимів, якщо вони в дорозі.
Веслі

8

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

Причини того, що SGD використовується так широко, є:

1) Ефективність. Зазвичай, особливо на початку навчання, градієнти параметрів для різних підмножин даних мають тенденцію вказувати в одному напрямку. Таким чином, градієнти, оцінені на 1/100-й даних, будуть вказувати приблизно в тому ж загальному напрямку, що і для повного набору даних, але вимагають лише 1/100 обчислення. Оскільки конвергенція у високонелінійній глибокій мережі зазвичай вимагає тисяч або мільйонів ітерацій, незалежно від того, наскільки хороші ваші градієнти, має сенс робити багато оновлень на основі дешевих оцінок градієнта, а не декількох оновлень на основі хороших.

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

3) Узагальнення. Здається (див. Чжан та ін: Теорія глибокого навчання III: Узагальнюючі властивості SGD ), що SGD насправді допомагає узагальненню, знаходячи «плоскі» мінімуми на навчальному наборі, які, швидше за все, також будуть мінімумами на тестовому наборі. Інтуїтивно, ми можемо розглядати SGD як своєрідний Baging - обчислюючи наші параметри на основі багатьох мініатюр даних, ми зміцнюємо правила, що узагальнюють між мініатюрами, і скасовують правила, які не роблять, тим самим роблячи нас менш схильними до надмірного пристосування навчальний набір.


3

Якщо я не помиляюся, розмір партії - це кількість навчальних екземплярів, які модель бачила під час ітерації тренувань

Правильно (хоча я б назвав це "кроком оновлення ваги")

і епоха - це повна черга, коли кожен з навчальних екземплярів бачив модель

Правильно

Якщо так, я не бачу переваги ітерації над майже незначним набором навчальних екземплярів кілька разів на відміну від застосування "максимум партії", виставляючи всі доступні екземпляри тренувань у кожному кроці до моделі (якщо, звичайно, вистачити пам'ять). У чому перевага такого підходу?

Ну, дуже. Зазвичай у вас недостатньо пам'яті. Скажімо, ми говоримо про класифікацію зображень. ImageNet - дуже популярний набір даних. Довгий час VGG-16D був однією з найпопулярніших моделей. Для одного зображення розміром 224x224 потрібно обчислити 15 245 800 поплавків (у картках зображень). Це означає приблизно 61 Мб на зображення. Це лише приблизна нижня межа того, скільки пам’яті потрібно під час тренувань для кожного зображення. ImageNet містить кілька тисяч (я думаю, про 1,2 мільйона?) Зображень. Хоча у вас може бути стільки основної пам’яті, ви, звичайно, не маєте стільки пам’яті GPU. Я бачив, як GPU прискорює роботу приблизно до 21 разів. Тож ви обов'язково хочете використовувати GPU.

Також: Час однієї міні-партії значно нижчий. Отже, питання: чи не хочете ви робити n кроків оновлення з міні-пакетною годиною на GPU або m кроків оновлення з пакетною без GPU, де n >> m.


Це дійсно не питання обмеженої пам’яті. Завжди можна обчислити градієнт над вашим набором даних у кількох партіях із фіксованими параметрами моделі (функціонально еквівалентним обчисленню градієнта в одній гігантській партії). Практично мова йде більше про властивості узагальнення, спричинені стохастичністю / галасливістю SGD / MBGD, і тим, що для досягнення конвергенції потрібно менше епох у вашому наборі даних. Оновлення параметри моделі в межах однієї епохи призводить до кращих проміжних парам, що робить подальші градієнтні обчислення в епоху більш інформативними.
Медісон

1

Окрім інших відповідей, я думаю, що варто зазначити, що є дві величини, які відрізняються, але часто поєднуються:

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

Як зазначали інші, градієнт відносно міні-партії є наближенням справжнього градієнта. Чим більша міні-партія, тим краще наближення.

  1. Кількість входів, зібраних у масив та обчислених "одночасно"

Тут торгівля стосується виключно продуктивності (пам'ять / цикли).

Ці кількості, як правило, однакові, тобто розмір міні-партії, але в принципі їх можна роз'єднати.

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