Почти любая модель обучается каким-то вариантом градиентного спуска. На собесе проверяют, понимаете ли вы, как он работает, почему ломается и чем выпуклые задачи отличаются от нейросетей.
Шаг градиентного спуска
w ← w - η · ∇L(w)
η (learning rate) задаёт размер шага. Пример: f(w) = (w - 3)², старт w = 0, η = 0.1.
f'(0) = -6 w₁ = 0 + 0.6 = 0.6
f'(0.6) = -4.8 w₂ = 0.6 + 0.48 = 1.08
Каждый шаг сокращает расстояние до минимума в 1 - 2η = 0.8 раза.
Learning rate
- Слишком большой: шаги перелетают минимум, loss скачет, растёт, появляется NaN.
- Слишком маленький: loss падает медленно и почти линейно.
Для параболы f = (L/2)·w² шаг сходится при η < 2/L, безопасный выбор η = 1/L. Общая интуиция: чем больше кривизна, тем меньше допустимый шаг.
Обусловленность и масштаб признаков
Если один признак от 0 до 1, а другой до 100 000, линии уровня функции потерь сильно вытянуты. Шаг, безопасный для крутого направления, крошечный для пологого, и спуск идёт зигзагом. Решения: стандартизация признаков, адаптивные оптимизаторы (Adam), нормализация в нейросетях.
Выпуклость
Функция выпукла, если её график не выше любой хорды:
f(λa + (1-λ)b) ≤ λf(a) + (1-λ)f(b)
Главное свойство: любой локальный минимум глобален. Выпуклы MSE линейной регрессии, log loss логистической регрессии, hinge loss линейного SVM. Примеры функций одной переменной: x², |x|, eˣ выпуклы, x³ нет.
Сумма выпуклых выпукла, поэтому добавление L1 или L2 к выпуклому loss выпуклость сохраняет.
Нейросети невыпуклы
Loss нейросети невыпукл, гарантий глобального минимума нет. Но на практике это не катастрофа:
- в пространстве миллионов параметров плохие локальные минимумы редки, основная проблема это седловые точки и плато;
- шум мини-батчей и momentum помогают из них выходить;
- у перепараметризованных сетей много хороших решений;
- инициализация, нормализация и residual делают ландшафт глаже.
Седловая точка: градиент нулевой, но по одним направлениям функция растёт, по другим убывает. Отличают её по гессиану (собственные значения разных знаков).
Методы второго порядка
Метод Ньютона делает шаг w ← w - H⁻¹∇L и около минимума сходится очень быстро. Но для модели со 100 млн параметров гессиан содержит 10¹⁶ чисел, а его обращение стоит O(n³). Поэтому в глубоком обучении используют приближения: L-BFGS для небольших задач и диагональные масштабирования вроде Adam.
Критерии остановки
- достигнуто число эпох;
- loss на валидации перестал улучшаться (early stopping);
- норма градиента стала меньше порога.
Частые ошибки
- Путать знак: плюс градиент это подъём.
- При ручной реализации обновлять w, а потом считать градиент b уже по новому w.
- Забывать про масштаб признаков.
- Говорить, что нулевой градиент означает минимум.
Что спросят на собесе
- Формула шага, что делает learning rate, как понять по графику, что он плохой.
- Что такое выпуклость и почему она важна.
- Почему нейросети всё равно обучаются, хотя loss невыпукл.
- Зачем масштабировать признаки перед градиентным спуском.
- Почему метод Ньютона не используют для больших моделей.