Art of DS

Вигляд

Палітра
Тема
Доступ $20 одноразово
Увійти або створити акаунт

Вхід до Art of DSСтворіть акаунт Art of DS

Ми надішлемо на пошту посилання й шестизначний код. Увійти можна будь-яким із них; пароля немає.Введіть свою пошту. Ми надішлемо посилання й шестизначний код, щоб її підтвердити, — пароль не потрібен. Акаунт безкоштовний.

  • Ви повернетеся на цю сторінку, туди, де зупинилися.
  • Уже маєте акаунт? З тією самою адресою ви просто ввійдете.

Продовжуючи, ви приймаєте Умови та Політику конфіденційності.

Ваш акаунт

Безкоштовний акаунтДоступ назавжди

складність 2/5 Безкоштовно

Gradient descent

Визначення

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

Спершу прочитайте Gradient Увесь шлях — на мапі
Формула
θt+1=θt−η ∇L(θt)\theta_{t+1} = \theta_t - \eta \, \nabla L(\theta_t)

Інтуїція

Ви десь на поверхні втрат і хочете дістатися дна. Ви його не бачите. Обчислити ви можете нахил там, де стоїте.

Отже: подивіться на нахил, зробіть крок униз, подивіться знову. Повторюйте. Це весь алгоритм, і саме він навчає майже кожну модель, яку ви зустрінете. Його сила в тому, що йому не потрібен загальний огляд — лише локальний нахил, знову й знову.

Формальне визначення

Кожна ітерація віднімає від поточних параметрів градієнт, помножений на темп навчання η. Мінус стоїть тому, що градієнт указує вгору; η вирішує, наскільки йому довіряти.

Звичайний градієнтний спуск обчислює градієнт по всьому навчальному набору перед кожним оновленням — середнє градієнтів усіх прикладів, ціною, що зростає лінійно з кількістю прикладів [1, §12.4.1]. Тому його ще називають batch gradient descent [1, §12.5].

Як це працює

мінімумпараметр →втрати
Градієнтний спуск, крок за кроком. Кожен крок рухається проти нахилу, а його довжина пропорційна крутизні — тож кроки довгі там, де крива крута, і стискаються майже до нуля біля дна. Ніщо не повідомляє алгоритму, що він прибув; він просто перестає рухатися, бо градієнт став пласким.

Уся складність — у темпі навчання. Замалий — і поступ льодовиковий: кожен крок безпечний, але їх потрібні тисячі. Завеликий — і крок перестрибує мінімум, приземляється вище на протилежному схилі й може розбігтися [1, §12.3.1.1]. Коли навчання розбігається, темп навчання — перше, що варто перевірити.

Гарантії збіжності існують, але стосуються опуклих функцій, де будь-який локальний мінімум є глобальним [1, §12.2.2.1]. Втрати нейронних мереж не опуклі, тож на практиці градієнтний спуск знаходить якийсь добрий мінімум, а не той самий. І цього виявляється досить частіше, ніж обіцяє теорія: «експерти нині підозрюють, що для досить великих нейронних мереж більшість локальних мінімумів мають низьке значення функції вартості» [2, §8.2.2].

Де застосовується

  • Як базовий алгоритм. SGD, мінібатчевий SGD, momentum і Adam — усе це модифікації цього правила оновлення.
  • Опуклі задачі. Логістична регресія та лінійні SVM, де гарантії справді діють.
  • Малі набори даних. Коли весь набір уміщається в пам’ять, а градієнти дешеві, повний градієнт — найменш зашумлений доступний напрямок.
  • Навчання людей. Це найкоротший шлях до розуміння того, чому темп навчання й ландшафт втрат мають значення.

Чому і коли

Обирайте full-batch gradient descent, коли набір даних малий, ціль опукла, а вам потрібен якомога стабільніший спуск. Кожен крок використовує всю інформацію, тож шлях гладкий і відтворюваний.

Беріть щось інше на будь-якому реалістичному наборі даних. Кожне оновлення коштує проходу по всіх прикладах, тож ціна кроку зростає разом із набором даних; стохастичний градієнтний спуск зводить її до одного прикладу на крок [1, §12.4.1], а на практиці моделі навчає мінібатчевий компроміс між ними [1, §12.5].

Практичний приклад

Python 10 рядків Показати код Сховати код
import numpy as np

def loss(w):      return (w - 3.0) ** 2
def grad(w):      return 2 * (w - 3.0)

for eta in (0.1, 0.5, 0.9, 1.05):
    w = 0.0
    for _ in range(12):
        w -= eta * grad(w)
    print(f"eta={eta:<5} w={w:10.4f}  loss={loss(w):.4g}")

Вивід

eta=0.1   w=    2.7938  loss=0.0425
eta=0.5   w=    3.0000  loss=0
eta=0.9   w=    2.7938  loss=0.0425
eta=1.05  w=   -6.4153  loss=88.65

Мінімум лежить у 3.0, і кожен крок множить відстань до нього на 1 − 2η. За η = 0.1 цей множник 0.8: шлях повзе до 3 з одного боку. За η = 0.5 він 0, і перший же крок потрапляє точно в мінімум. За η = 0.9 він −0.8: кожен крок перестрибує на інший бік (5.4, 1.08, 4.54, …), але відстань зменшується так само швидко, як за 0.1, тож обидва запуски закінчуються в тому самому місці. Понад η = 1 модуль множника перевищує 1, і за 1.05 кожен перестрибок більший за попередній: після 12 кроків запуск розбігся до −6.4.

Типові помилки

Темп навчання — перше, що варто перевірити, коли навчання зривається. Втрати, що йдуть у NaN, зазвичай означають завелике η: за надто великого кроку «ми не можемо гарантувати, що ітерація ... зможе зменшити значення» функції [1, §12.3.1.1].

Немасштабовані ознаки перетворюють поверхню на ущелину. Якщо одна ознака охоплює тисячі, а інша — частки, поверхня втрат стає довгою вузькою долиною. Тоді крок мусить бути досить малим, щоб не перестрибувати вздовж крутого напрямку, а це «зазвичай означає, що крок замалий для помітного поступу в інших напрямках» [2, §4.3.1]. Масштабування тут не косметика: воно може змінити кількість ітерацій на порядки.

Сталий темп навчання — компроміс. Достатньо великий, щоб рухатися на початку, зазвичай завеликий, щоб осісти в кінці. Саме для цього існують розклади темпу навчання [1, §12.11].

Збіжність — до локального мінімуму. На неопуклих задачах те, звідки ви почали, впливає на те, де опинитеся.

Ще не прочитаноДочитайте сторінку до кінця — і вона вважатиметься прочитаною.

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

Відкрити доступ

Перевірте себе

3 запитання

Кожну відповідь пояснено: який розділ вона перевіряє і з якого джерела.

Джерела

  1. Zhang, Lipton, Li, Smola. Dive into Deep Learningbook · звірено 2026-08-31https://d2l.ai/
  2. Goodfellow, Bengio, Courville. Deep Learning (2016)book · звірено 2026-10-06https://www.deeplearningbook.org/

Маєте промокод?

Код зі знижкою 100% одразу відкриває все. Менша знижка віднімається від ціни у вікні оплати: введіть там той самий код.

Написати в підтримку

Питання, проблема з доступом, повернення коштів? Напишіть нам, і ми відповімо листом.

Про що це?

Адресу використаємо лише для відповіді вам.

Повідомлення надіслано

Дякуємо. Відповімо листом на адресу, яку ви вказали.

Або напишіть нам напряму

support@artofds.com

Повідомлення надіслано Дякуємо. Відповімо листом на адресу, яку ви вказали.

Перевірте адресу пошти: вона потрібна, щоб відповісти.

Це наша адреса. Вкажіть свою, щоб відповідь дійшла до вас.

На цю адресу не можна надіслати лист. Перевірте, чи немає помилки.

Напишіть трохи більше: щонайменше 10 символів.

Забагато повідомлень за короткий час. Спробуйте за кілька хвилин.

Не вдалося надіслати повідомлення. Напишіть нам напряму: support@artofds.com