Розмір партії визначає кількість зразків, які будуть розповсюджені по мережі.
Наприклад, скажімо, що у вас є 1050 зразків тренувань, і ви хочете встановити batch_size
рівне 100. Алгоритм бере перші 100 зразків (від 1-го до 100-го) з навчального набору даних та тренує мережу. Далі він бере другі 100 зразків (від 101-го до 200-го) і знову тренує мережу. Ми можемо продовжувати виконувати цю процедуру, поки не розповсюдимо всі зразки через мережу. Проблема може статися з останнім набором зразків. У нашому прикладі ми використали 1050, яке не ділиться на 100 без залишку. Найпростіше рішення - просто отримати останні 50 зразків і провести навчання мережі.
Переваги використання розміру партії <кількість всіх зразків:
Для цього потрібно менше пам’яті. Оскільки ви тренуєте мережу, використовуючи меншу кількість зразків, загальна процедура навчання вимагає менше пам’яті. Це особливо важливо, якщо ви не в змозі вмістити цілий набір даних у пам'ять машини.
Зазвичай мережі тренуються швидше за допомогою міні-пакетів. Це тому, що ми оновлюємо ваги після кожного поширення. У нашому прикладі ми розповсюдили 11 партій (10 з них мали 100 зразків, а 1 - 50 проб), і після кожної з них ми оновили параметри нашої мережі. Якщо ми використовували всі зразки під час поширення, ми зробили б лише 1 оновлення для параметра мережі.
Недоліки використання розміру партії <кількість всіх зразків:
- Чим менша партія, тим менш точною буде оцінка градієнта. На малюнку нижче видно, що напрямок міні-пакетного градієнта (зеленого кольору) коливається набагато більше порівняно з напрямком повного градієнта партії (синій колір).
Стохастик - це лише міні-партія, що batch_size
дорівнює 1. У цьому випадку градієнт змінює свій напрямок навіть частіше, ніж міні-пакетний градієнт.