Як свідчить інша відповідь, головна причина використання SGD полягає в зниженні витрат на обчислення градієнта, при цьому все ще значною мірою зберігаючи градієнтний напрямок, якщо усереднюватись за багатьма міні-партіями або зразками - це, безумовно, допомагає привести вас до місцевих мінімумів.
- Чому minibatch працює .
Математика, що стоїть за цим, полягає в тому, що "справжній" градієнт функції витрат (градієнт для помилки узагальнення або для безлічі великого набору вибірок) - це очікування градієнта над справжніми даними, що генерують розподіл ; фактичний градієнт, обчислений на партії вибірок, завжди є наближенням до справжнього градієнта з емпіричним розподілом даних .
pdatap^data
g=Epdata(∂J(θ)∂θ)
Пакетний градієнт спуск може принести вам можливий "оптимальний" градієнт, враховуючи всі ваші вибірки даних, однак це не "справжній" градієнт. Менша партія (minibatch), ймовірно, не настільки оптимальна, як повна партія, але вони є обома наближеннями - так само і з одним зразком міні-партії (SGD). Різниця між стандартними помилками їх обернено пропорційна розмірам міні-партії. Тобто
SE(g^(n))SE(g^(m))=mn−−−√
Тобто, зменшення стандартної помилки є квадратним коренем збільшення розміру вибірки. Наведене рівняння стосується градієнтів, обчислених за один крок мініатюрного градієнта спуску. Коли ви повторюєте етапи оновлення градієнта міні-партії та використовуєте нарешті всі навчальні зразки в одну епоху, ви практично обчислюєте середнє значення градієнтів на основі всіх заданих зразків. Тобто, для міні-партії розміром ,
З рівнянь вище можна зробити висновок, що за одну епоху ваші усереднені градієнти з різними розмірами міні-партії
mEp^data(g^(m))=Ep^data(∂J(θ)∂θ)
m (від однієї до повної партії) мають однакову стандартну помилку, і що ще важливіше, всі вони є лояльними наближеннями до "справжнього" градієнта, тобто рухаються в потрібному напрямку "справжнього" градієнта.
- Чому міні-партія може працювати краще .
По-перше, minibatch створює деякі проблеми навчання з технічно неспроможних до вирішення проблем через зменшення попиту на обчислення з меншим розміром партії.
По-друге, зменшений розмір партії не обов'язково означає зменшення точності градієнта. Навчальних зразків багато мають багато шумів або відхилень або упереджень. Міні-серія з випадковою вибіркою може відображати справжні дані, що генерують розподіл, краще (або не гірше), ніж оригінальна повна партія. Якщо деякі ітерації оновлень градієнта міні-партії дають вам кращу оцінку, в цілому усереднений результат однієї епохи може бути кращим, ніж градієнт, обчислений з повної партії.
По-третє, міні-партія не тільки допомагає боротися з неприємними зразками даних, але також допомагає боротися з неприємною функцією витрат, яка має багато місцевих мінімумів. Як зазначає Jason_L_Bens, іноді у колекторах помилок може бути простіше вловлювати звичайний градієнт у локальні мінімуми, тоді як складніше відловлювати тимчасовий випадковий градієнт, обчислений міні-партією.
Нарешті, при градієнтному спуску ви не досягаєте глобальних мінімумів за один крок, а повторюєте на колекторі помилок. Градієнт багато в чому дає вам лише напрямок до ітерації. За допомогою minibatch ви можете ітератувати набагато швидше. У багатьох випадках, чим більше ітерацій, тим кращого ви можете досягти. Вас не цікавить будь-яка погода, точка оптимальна в усьому світі чи навіть локально. Ви просто хочете отримати розумну модель, яка приносить вам прийнятну помилку узагальнення. Minibatch робить це простіше.
Ви можете знайти книгу "Глибоке навчання" Іана Гудфеллоу та ін., Яка має досить хороші дискусії на цю тему, якщо ви її уважно прочитаєте.