- BrainTools - https://www.braintools.ru -

Пошаговый разбор с метафорами, формулами и лайфхаками, которые спасут ваш fit()
Привет, хабровчане! В мире ML градиентный спуск это двигатель внутреннего сгорания: он везде, он работает, но мало кто заглядывает под капот, а ведь именно он превращает случайные веса в модель, которая угадывает котиков, переводит тексты и генерирует картинки.
Вы запускаете model.fit [1]() – и через 100 эпох у вас есть результат, но как именно нейросеть «находит выход» из хаоса параметров? Почему иногда она перепрыгивает минимум, а иногда зависает в тупике? И как настроить learning_rate, чтобы не ждать до пенсии?
Полный разбор с нуля, с формулами и примерами. Давайте разберём по полочкам, чтобы было понятно даже новичку.
Представьте, что вы слепой в огромном лабиринте.
Стены — это функция потерь L(θ)L(θ)
Высота стен — это ошибка [2] модели
Ваша цель — найти самый низкий проход (глобальный минимум)
Но вы ничего не видите. Что делать?
Интуиция [3]:
Провести рукой по стене
Найти самый низкий участок
Сделать маленький шаг туда
Повторить
Поздравляю! Вы только что изобрели градиентный спуск!
В ML мы делаем то же самое:
Позиция — это параметры модели θθ
Низкий участок стены — это антиградиент −∇L−∇L
Шаг — это learning rate αα
Если ∇L>0∇L>0 → стена высокая → идём вниз
Если <0<0 → идём в ту же сторону
→ Двигаемся к самому низкому проходу!
θt+1=θt−α⋅∇L(θt)θt+1=θt−α⋅∇L(θt)
θtθt — текущее положение в лабиринте
αα — длина шага (learning rate)
Каждый шаг — это движение к выходу
Это принцип поиска.
|
αα |
Что будет |
|---|---|
|
0.000001 |
Ползёшь как черепаха |
|
1.0 |
Бежишь → врезаешься в стену |
|
0.001 |
Золотая середина (обычно) |
Лайфхак:
Начни с 0.001
Если ошибка скачет — уменьшай в 3–10 раз
Если застрял — используй адаптивные методы
|
Проблема |
Что это |
Как бороться |
|---|---|---|
|
Локальный тупик |
Застреваем в «нише» |
Добавить инерцию (momentum) |
|
Ложный проход |
Градиент ≈ 0, но не выход |
Добавить шум или использовать Adam |
|
Обвал стены |
Ошибка → бесконечность |
Обрезать градиенты |
|
Длинный коридор |
Ошибка не падает |
Понижать lr со временем |
|
Оптимизатор |
Когда юзать |
|---|---|
|
SGD + Momentum |
Классика, стабильность |
|
Adam |
По умолчанию в 95% случаев |
|
AdamW |
Для трансформеров |
|
Lion |
Новинка, экономит память [4] |
Совет: начни с Adam → если модель большаяб переходи на AdamW
Начинаем с случайной траектории
Ощупываем стены (считаем MSE)
Ищем самый низкий проход
Двигаемся вниз по стене
Повторяем [5] → находим выход (оптимальные параметры)
Именно так работает обучение [6] любой нейросети – от линейной регрессии до Stable Diffusion.
Применения: от sklearn до Llama 3 — везде градиентный спуск
Будущее: новые оптимизаторы (Lion, Sophia), LoRA + градиент, квантование + спуск
Для разработчиков: понимание градиента = контроль над обучением. Без него – шаманство с lr
Градиентный спуск э то шаг к демократизации ML: учим модели на слабых GPU, без облачных монстров. Если вы в ML – must-read.
Автор: Nikta3
Источник [7]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/21215
URLs in this post:
[1] model.fit: http://model.fit
[2] ошибка: http://www.braintools.ru/article/4192
[3] Интуиция: http://www.braintools.ru/article/6929
[4] память: http://www.braintools.ru/article/4140
[5] Повторяем: http://www.braintools.ru/article/4012
[6] обучение: http://www.braintools.ru/article/5125
[7] Источник: https://habr.com/ru/articles/960970/?utm_source=habrahabr&utm_medium=rss&utm_campaign=960970
Нажмите здесь для печати.