Який оптимізатор — і який темп навчання?
Шість оптимізаторів пліч-о-пліч, пари, які плутають, і одна задача, запущена двічі, де масштаб ознак важить більше за оптимізатор.
друкується на 2 сторінках A4з 7 сторінок і 1 каталогучитати безкоштовно · PDF — із безкоштовним акаунтомОновлено 24 жовт. 2026 р.
PDF і кнопка «Друкувати» просять увійти; безкоштовного акаунта досить. Читати й перевіряти себе може кожен.
Пліч-о-пліч
Перші стовпці — з каталогу Optimizers; решта — з кожної сторінки.
Формулу наведено, лише коли вона коротша за слова; решту сказано словами, а формула є на кожній сторінці.
Легко сплутати
Питання «чим відрізняється…» — кожне у два рядки.
Gradient descent проти SGD
Градієнтний спуск читає кожен рядок заради одного точного кроку; SGD робить один шумний крок на рядок.
SGD чи його mini-batch форма, коли даних багато; повні градієнти — для малих гладких задач.
SGD зсуває кожен параметр на один темп навчання; Adam масштабує кожен за історією його власних градієнтів.
Adam, щоб швидко рушити за будь-якого масштабу; SGD з інерцією, коли міряють точність на тесті.
Conjugate gradient проти BFGS
Обидва шукають уздовж прямої на повних даних; L-BFGS ще й тримає кілька пар градієнтів, щоб моделювати кривину.
L-BFGS для більшості гладких задач; метод спряжених градієнтів, коли навіть ця пам’ять завелика.
Темп навчання проти Розмір батча
Більший батч усереднює шум градієнта, тож може взяти більший крок; ці двоє налаштовуються разом.
Змінили одне — перегляньте друге.
Один справжній запуск
Одна логістична регресія з кожним оптимізатором, на ознаках із масштабом від 1 до 1000 і стандартизованих.
| Оптимізатор | Епохи, сирі | Темпи, сирі | Епохи, станд. | Темпи, станд. |
|---|---|---|---|---|
| grad-descent | never | 0 | 5 | 3 |
| sgd | never | 0 | 1 | 6 |
| mini-batch | never | 0 | 1 | 6 |
| adam | 5 | 4 | 1 | 5 |
| conj-gradient | 328 | n/a | 7 | n/a |
| l-bfgs | 48 | n/a | 4 | n/a |
«На погано масштабованих ознаках один темп навчання не годиться для всіх напрямків.»
«Стандартизуйте — і прості методи наздоганяють.»
«Лінійному пошуку не потрібен темп навчання — лише повні проходи.»
Запуск і ці рядки — практичний приклад зі сторінки «Adam», як його виведено: logistic regression, 4000 rows, 10 features; passes until within 0.01 of the minimum
Що обрати?
Скільки даних?
- Багато, або стає більше Mini-batch gradient descent · SGD
- Мало, а втрата гладка BFGS
Потрібно, щоб запрацювало швидко?
- Так, з малим налаштуванням Adam
Пам’ять — обмеження?
- Так, навіть для L-BFGS Conjugate gradient
Кожна відповідь — з розділу «Чому і коли» своєї сторінки.
Усі пастки цих сторінок: 29
Кожна — перший рядок однієї з типових помилок; чому — пояснює її сторінка.
Gradient descent
- Темп навчання — перше, що варто перевірити, коли навчання зривається.
- Немасштабовані ознаки перетворюють поверхню на ущелину.
- Сталий темп навчання — компроміс.
- Збіжність — до локального мінімуму.
SGD
- За фіксованого темпу навчання SGD не збігається до точки.
- Крива втрат буде зубчастою.
- Відсортовані дані небезпечні.
- Чистий SGD з одним прикладом марнує залізо.
Mini-batch gradient descent
- Зміна розміру батча непомітно змінює ефективний темп навчання.
- Останній батч менший.
- Розмір батча взаємодіє з нормалізацією.
- Степені двійки — питання швидкості, а не статистики.
Adam
- Adam не завжди кращий за SGD.
- Для зменшення ваги беріть AdamW.
- Поправка на зміщення важлива на початку.
- Epsilon — не лише чисельна гігієна.
Conjugate gradient
- Йому потрібен точний градієнт.
- Періодично перезапускайте його.
- Обумовленість усе одно важить.
- Лінійний пошук коштує обчислень функції.
BFGS
- Понад кілька тисяч параметрів беріть L-BFGS.
- Дайте йому аналітичний градієнт.
- Відсутність темпу навчання — перевага з ціною.
- Гладкість — припущення теорії, а не жорстка вимога.
Learning rate
- Прочитання розбіжності як бага.
- Припущення, що є одне правильне значення.
- Налаштування на лінійній сітці.
- Зміна розміру батча без зміни темпу.
- Очікування, що адаптивний оптимізатор зробить вибір за вас.