Оптимізація · 6 у порівнянні
Optimizers
Кожен оптимізатор тут спускається градієнтом — вони різняться тим, скільки даних бачить один крок і скільки пам’ятається між кроками. Ці дві осі пояснюють усю родину.
Порівняння
| Назва Що додає | Даних на крок | Що зберігає | Терпить зашумлені градієнти |
|---|---|---|---|
| Gradient descent Базове правило. Крок проти градієнта всієї навчальної вибірки, помноженого на сталий темп навчання. Повна сторінка → | увесь набір | нічого | н/д — точний |
| SGD Оцінює градієнт за одним прикладом. Значно гірше на крок, значно більше кроків, а шум допомагає вибиратися з поганих мінімумів. Повна сторінка → | 1 приклад | нічого | Так — за задумом |
| Mini-batch Усереднює по невеликому батчу. Зменшує шум і відповідає тому, як насправді працює паралельне залізо. Повна сторінка → | 32–512 | нічого | Так |
| Adam Тримає ковзні середні градієнта та його квадрата, даючи кожному параметру власний ефективний розмір кроку. Повна сторінка → | мінібатч | 2 значення / параметр | Так — створений для цього |
| Conjugate gradient Обирає кожен напрямок так, щоб не скасовувати попередній поступ. Прибирає зигзаг майже без пам’яті. Повна сторінка → | увесь набір | 1 напрямок | Погано; є мінібатчеві варіанти |
| BFGS / L-BFGS Виводить кривину з того, як змінювався градієнт між кроками, і націлює кожен крок за нею. Повна сторінка → | увесь набір | n×n, або ~10 пар | Ні |
Дві осі, а не рейтинг
Таблиця не впорядкована ні за швидкістю, ні за якістю, бо жодна з них не впорядковує цю родину. Ці методи розділяють два незалежні вибори.
Скільки даних бачить один крок? Усі дані дають точний градієнт за величезну ціну на крок. Один приклад дає дешевий і зашумлений. Мінібатч лежить між ними, і саме там живе майже все глибоке навчання [2, §12.5].
Скільки пам’ятається між кроками? Звичайний спуск не пам’ятає нічого. Adam тримає два числа на параметр. Метод спряжених градієнтів тримає один напрямок. BFGS тримає цілу матрицю кривини — і L-BFGS існує тому, що ця матриця перестає вміщатися в пам’ять задовго до того, як сучасні моделі перестають рости.
Поділ, що справді має значення
Прочитайте останній стовпець — і родина чітко ділиться навпіл.
Методи, що терплять шум — SGD, мінібатч, Adam, — це те, чим навчають нейронні мережі. Вони припускають, що кожен градієнт є оцінкою, і збудовані так, щоб просуватися попри це.
Методи, що не терплять — спряжені градієнти, BFGS, — швидші й краще націлені, коли градієнти точні, і ненадійні, коли ні. Обидва виводять щось про ландшафт зі співвідношення між послідовними градієнтами, а шум мінібатчів псує це виведення: оновлення другого порядку «зазвичай потребують значно більших розмірів батча, як-от 10,000» [1, §8.1.3].
Саме тому методи, стандартні в наукових обчисленнях, рідкісні в глибокому навчанні, попри збіжність за значно меншу кількість ітерацій. Рідкісні, але не відсутні: практики повідомляють про прийнятні результати нелінійних спряжених градієнтів, а мінібатчеві версії застосовували успішно [1, §8.6.2].
Як обирати
- Навчання нейронної мережі → Adam, або AdamW, якщо потрібне зменшення ваги. Налаштовуйте SGD з momentum лише тоді, коли це виправдано числом у бенчмарку.
- Підгонка гладкої моделі з точними градієнтами → L-BFGS. Він і так є типовим розв’язувачем для логістичної регресії в більшості бібліотек.
- Дуже велика розріджена детермінована задача → спряжені градієнти, де витрати пам’яті на оцінку кривини неприйнятні.
- Розуміння того, що будь-який із них робить → звичайний градієнтний спуск. Усе інше в таблиці є модифікацією того самого правила оновлення.
Чого не виправляє жоден із них
Оптимізатор шукає в тому ландшафті, який йому дали. Якщо поверхня втрат є ущелиною через те, що ознаки мають дико різні масштаби, страждатиме кожен метод тут — Adam найменше, але жоден не втече. Масштабування входів змінює сам ландшафт і зазвичай допомагає більше, ніж зміна оптимізатора.
Джерела
- Deep Learning (2016)bookhttps://www.deeplearningbook.org/
- Dive into Deep Learningbook · звірено 2026-08-31https://d2l.ai/