Art of DS

Вигляд

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

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

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

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

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

Ваш акаунт

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

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

Gradient

Визначення

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

Формула
∇f(x)=[∂f∂x1,…,∂f∂xn] ⁣⊤\nabla f(x) = \left[\frac{\partial f}{\partial x_1}, \dots, \frac{\partial f}{\partial x_n}\right]^{\!\top}

Інтуїція

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

Це і є градієнт: напрямок і величина. Напрямок — той, у який функція зростає найшвидше з місця, де ви стоїте; величина — наскільки швидко. Уся градієнтна оптимізація випливає з того, що ця інформація доступна локально, без жодного погляду на весь ландшафт.

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

Для функції кількох змінних градієнт — це вектор, елементи якого — часткові похідні за кожною змінною; кожна вимірює, як змінюється вихід, коли зрушити лише цей вхід, тримаючи решту незмінними [2, §4.3].

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

Як це працює

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

Усю роботу виконують дві властивості:

Він указує вгору. Градієнт дає напрямок найшвидшого зростання, тож мінімізація означає рух у напрямку -∇f. Звідси й мінус, що з’являється в кожному правилі оновлення в цьому розділі [2, §4.3].

Його довжина вимірює крутизну. На крутому схилі градієнт довгий; на плато він близький до нуля. Саме тому градієнтний спуск зі сталим темпом навчання робить довгі кроки на крутому схилі й короткі біля мінімуму: кожен крок — це темп навчання, помножений на градієнт, тож цього ніхто не планує, це робить геометрія [2, §4.3].

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

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

  • Навчання кожної нейронної мережі. Зворотне поширення — ефективний спосіб обчислити саме цей вектор [1, §5.3.3].
  • Підгонка багатьох інших моделей. Логістичну регресію і градієнтний бустинг теж підганяють за допомогою градієнтів.
  • Аналіз чутливості. Часткова похідна за одним входом каже, наскільки вихід на нього реагує.
  • Змагальні приклади. Візьміть градієнт втрати за входом, а не за параметрами, — і крихітний крок у напрямку його знака може змінити прогноз [2, §7.13].

Чому і коли

Градієнти — причина того, що масштабне машинне навчання працює. Вони дають напрямок пошуку за ціною, порівнянною з одним обчисленням функції, хоч скільки параметрів, — і саме це робить оптимізацію мільйонів із них здійсненною [2, §6.5.3].

Вони доступні не завжди. Градієнт потребує диференційовності функції. Дискретні вибори, жорсткі пороги й недиференційовні втрати не мають градієнта саме в тій точці, де він потрібен, — тому дерева рішень будують пошуком, а не спуском [3, §1.10.7], і тому мережа, яку навчають градієнтами, бере сигмоїду там, де жорсткий поріг залишив би їй нульовий градієнт [2, §6.2.2.2].

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

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

def f(x):
    # проста чаша, крутіша вздовж другої осі
    return x[0]**2 + 5 * x[1]**2

def grad(x):
    return np.array([2 * x[0], 10 * x[1]])

point = np.array([3.0, 1.0])
g = grad(point)

print(g)                     # [ 6. 10.] — напрямок найшвидшого зростання
print(np.linalg.norm(g))     # 11.66  — наскільки тут круто
print(-g / np.linalg.norm(g))  # одиничний вектор, що вказує вниз схилом

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

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

Градієнт локальний, і лише локальний. Він описує поверхню в одній точці. Він нічого не каже про те, чи лежить мінімум попереду і як далеко.

Нульовий градієнт не означає мінімуму. Сідлові точки теж мають нульовий градієнт, і у високих вимірностях вони ймовірніші за мінімуми [1, §12.1.2.2].

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

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

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

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

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

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

3 запитання

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

Джерела

  1. Zhang, Lipton, Li, Smola. Dive into Deep Learningbook · звірено 2026-08-31https://d2l.ai/
  2. Goodfellow, Bengio, Courville. Deep Learning (2016)bookhttps://www.deeplearningbook.org/
  3. scikit-learn User Guide — Decision Treesdocs · звірено 2026-10-04https://scikit-learn.org/stable/modules/tree.html

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

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

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

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

Про що це?

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

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

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

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

support@artofds.com

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

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

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

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

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

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

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