Яким повинен бути розмір партії для стохастичного градієнтного спуску?


49

Відповіді:


72

«Розмір вибірки» ви говорите, називається розміром партії , . Параметр розміру партії - це лише один із гіпер-параметрів, які ви будете налаштовувати, коли ви тренуєте нейронну мережу з міні-пакетним стохастичним градієнтним зниженням (SGD) і залежить від даних. Найбільш основний метод пошуку гіпер-параметрів - це пошук сітки за швидкістю навчання та розміром партії, щоб знайти пару, яка змушує мережу зближуватися.B

Щоб зрозуміти, яким повинен бути розмір партії, важливо побачити залежність між похилом градієнта партії, онлайн-SGD та міні-пакетним SGD. Ось загальна формула для кроку оновлення ваги в міні-пакетному SGD, що є узагальненням усіх трьох типів. [ 2 ]

θt+1θtϵ(t)1Bb=0B1L(θ,mb)θ
  1. Пакетний градієнт спуску,B=|x|
  2. Стохастичний градієнт в Інтернеті:B=1
  3. Міні-серійний стохастичний градієнтний спуск: але.B>1B<|x|

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

SGD перетворюється швидше, ніж звичайний "пакетний" градієнтний спуск, оскільки оновляє ваги після перегляду випадково вибраного підмножини тренувального набору. Нехай - наш навчальний набір, і нехай . Розмір партії - це просто кардинальність :.xmxBmB=|m|

Пакетний градієнт спуску оновлює ваги використовуючи градієнти всього набору даних ; тоді як SGD оновлює ваги, використовуючи середнє значення градієнтів для міні-партії . (Використання середнього на відміну від суми заважає алгоритму робити занадто великі кроки, якщо набір даних дуже великий. Інакше вам потрібно буде скорегувати швидкість навчання, виходячи з розміру набору даних.) Очікуване значення цього стохастичне наближення градієнта, використовуваного в SGD, дорівнює детермінованому градієнту, що використовується при партійному градієнті спуску. .θxmE[LSGD(θ,m)]=L(θ,x)

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

Скажімо, у нас є деякий вектор даних , початковий вектор ваги, який параметризує нашу нейронну мережу, і функція втрати що ми намагаємося мінімізувати . Якщо у нас є приклади тренінгу та розмір партії , то ми можемо розділити ці приклади тренінгу на міні-партії C:x:RDθ0:RSL(θ,x):RSRDRSTB

C=T/B

Для простоти можна припустити, що Т рівномірно ділиться на В. Хоча, коли це не так, як це часто не відбувається, належну вагу слід присвоїти кожній міні-партії як функцію її розміру.

Ітераційний алгоритм для SGD з епохами наведено нижче:M

t0while t<Mθt+1θtϵ(t)1Bb=0B1L(θ,mb)θtt+1

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

Основними параметрами для ванільного (без імпульсу) SGD, описаного вище, є:

  1. Швидкість навчання:ϵ

Мені подобається думати про епсилон як функцію від кількості епох до рівня навчання. Ця функція називається графіком курсу навчання .

ϵ(t):NR

Якщо ви хочете, щоб рівень навчання був фіксований, просто визначте epsilon як постійну функцію.

  1. Розмір партії

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

Посилання та додаткове читання:

  1. Вступ до градієнтного навчання
  2. Практичні рекомендації щодо градієнтної підготовки глибоких архітектур
  3. Ефективне міні-серійне навчання для стохастичної оптимізації

1
For simplicity we can assume that D is evenly divisible by B. Ви не маєте на увазі, що Т повинен бути рівномірно поділений на В?
Антуан

4
і насправді відповісти на питання ОП, ви можете додати B is typically chosen between 1 and a few hundreds, e.g. B = 32 is a good default value, with values above 10 taking advantage of the speed-up of matrix-matrix products over matrix-vector products.(з статті Бенджіо 2012)
Антуан

@sabalaba Приємна відповідь. Але хіба не в тому, що в рівнянні "Ітераційний алгоритм для SGD з M епохами наведено нижче", ми будемо оновлювати вагу після переходу кожної міні-партії. Іншими словами, чи не повинно бути ще однієї петлі (над міні-партіями С) всередині циклу протягом епохи, тобто, поки t <M
Kaushik Acharya

2
У статистиці вибірка складається з декількох спостережень. Отже, розмір вибірки правильно трактується статистиками. У інформатиці (особливо в машинному навчанні) вибірка є одиничним спостереженням, а партія - сукупністю зразків. Це може бути трохи заплутано. Зразок для статистики є періодичним вченим даних;) Джерело: en.wikipedia.org/wiki/Sample_size_determination
Олег Мельников

"Параметр розміру партії - це лише один із гіпер-параметрів, які ви будете налаштовувати." Не вдалося б кілька моделей налаштування перемогти в першу чергу цілі SGD? Я думаю, що ОП запитує правило про розмір вибірки. Якщо ваші дані містять записів і змінних, який підходить розмір вибірки для адекватного обчислення градієнта? nm
RobertF
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.