В Стэнфордском университете в рамках легендарного курса CS231n (Spring 2025) прошла лекция, посвященная фундаменту глубокого обучения — регуляризации и оптимизации. Преподаватель подробно разобрал, как заставить нейросеть не просто «зубрить» обучающие данные, а понимать суть изображений, и какие алгоритмы помогают модели находить кратчайший путь к правильным ответам в сложном математическом ландшафте.
🧠 Проблема «семантического разрыва» и логика данных 0:05
Лекция началась с рекапа ключевой задачи компьютерного зрения — классификации изображений. Главная трудность здесь заключается в так называемом «семантическом разрыве» (semantic gap): человек видит на картинке кошку, а компьютер — лишь сетку чисел, представляющих интенсивность пикселей .
По мнению лектора, традиционное программирование через правила «если-то» (if-else) бессильно перед лицом реальности, так как объекты постоянно меняются:
- Освещение: интенсивность пикселей зависит от источника света.
- Деформация: кошки могут скручиваться и принимать любые формы .
- Окклюзия (перекрытие): объект может быть виден лишь частично (например, только хвост из-под дивана) .
- Внутриклассовая вариативность: представители одной категории (например, разные породы собак) могут выглядеть совершенно по-разному .
Для решения этих проблем используются подходы, основанные на данных (data-driven), где простейшим примером является метод K-ближайших соседей (KNN) . Однако современные системы строятся на линейных классификаторах, которые можно интерпретировать тремя способами: алгебраически (умножение матриц), визуально (как шаблоны классов) и геометрически (как разделяющие поверхности в пространстве признаков) .
⚖️ Регуляризация: почему «хуже» на тренировке означает «лучше» в жизни 10:30
Когда модель обучается, она стремится минимизировать функцию потерь (loss function). Однако лектор подчеркивает: если модель идеально подстраивается под тренировочные данные (оверфиттинг), она, скорее всего, провалится на новых данных . Здесь на сцену выходит регуляризация.
Суть регуляризации заключается в добавлении к функции потерь штрафа за слишком «сложные» веса. Формула общей потери теперь состоит из двух частей:
- Data Loss: насколько предсказания соответствуют обучающей выборке.
- Regularization Loss: штраф, препятствующий чрезмерному усложнению модели .
Лектор сравнил этот принцип с «Бритвой Оккама»: если есть два объяснения, лучше выбрать самое простое .
Наиболее популярные методы регуляризации:
- L2-регуляризация: сумма квадратов всех весов. Она предпочитает «распределенные» веса (например, $[0.25, 0.25, 0.25, 0.25]$ вместо $[1.0, 0, 0, 0]$), чтобы модель учитывала все входные признаки понемногу, а не зацикливалась на одном .
- L1-регуляризация: сумма абсолютных значений весов. Она способствует «разреженности» (sparsity), зануляя менее важные веса, что эффективно упрощает архитектуру модели .
Сила этого штрафа регулируется гиперпараметром $\lambda$ (лямбда). Если $\lambda=0$ — регуляризации нет; если $\lambda$ стремится к бесконечности — модель станет слишком простой и бесполезной .
🎢 Ландшафт потерь: «вслепую» к вершине знаний 24:35
Поиск идеальных весов модели ($W$) аналогичен путешествию по пересеченной местности, где высота — это значение ошибки (лосс). По словам лектора, правильная аналогия — это человек с повязкой на глазах, который пытается найти самую глубокую впадину, просто прощупывая наклон почвы под ногами .
Ключевым инструментом здесь является градиент — вектор, указывающий направление самого крутого подъема. Чтобы минимизировать ошибку, нужно двигаться в противоположную сторону (антиградиент) .
Проблема в том, что вычислять точный градиент по всему огромному датасету (например, ImageNet) на каждом шаге слишком долго. Поэтому используется Stochastic Gradient Descent (SGD) — метод, при котором для одного шага оптимизации выбирается лишь небольшая случайная группа примеров (мини-батч), обычно от 32 до 256 штук . Это вносит «шум», но позволяет учиться гораздо быстрее.
🏎️ Продвинутые оптимизаторы: импульс и адаптивность 43:04
Обычный SGD часто застревает в «седловых точках» (saddle points), где градиент равен нулю, но мы еще не в минимуме, или бесконечно колеблется в узких «желобах» функции потерь . Чтобы преодолеть это, были разработаны более хитрые алгоритмы:
- Momentum (Импульс): работает как катящийся с горы шар. Он накапливает «скорость» (предыдущие значения градиентов), что позволяет пролетать небольшие локальные минимумы и быстрее двигаться в стабильных направлениях .
- RMSProp: адаптивный метод, который масштабирует шаг для каждого веса отдельно. В крутых направлениях он замедляет движение, а в пологих — ускоряет, что решаёт проблему разбалансированных ландшафтов .
- Adam (Adaptive Moment Estimation): текущий «золотой стандарт» индустрии. Он объединяет идеи импульса и RMSProp .
Лектор отметил важный нюанс: при реализации Adam необходима «поправка на смещение» (bias correction) в начале обучения. Без неё первый шаг может оказаться катастрофически огромным, так как алгоритм делит градиент на почти нулевое накопленное значение .
📉 Расписание обучения и масштабирование 59:21
Даже самый лучший оптимизатор требует настройки Learning Rate (скорости обучения). Слишком высокая скорость приведет к тому, что модель «вылетит» из долины потерь; слишком низкая — модель будет учиться вечно .
Современная практика подразумевает изменение скорости обучения прямо в процессе (Learning Rate Decay):
- Ступенчатый (Step Decay): уменьшение скорости в 10 раз каждые $N$ эпох .
- Косинусный (Cosine Decay): плавное снижение скорости до нуля к концу обучения по кривой косинуса. Сейчас это один из самых популярных методов .
- Linear Warm-up: в первые несколько сотен шагов мы не даем модели сразу «бежать», а плавно повышаем скорость обучения до рабочего максимума, чтобы стабилизировать начальные веса .
В заключение лектор упомянул «эмпирическое правило линейного масштабирования»: если вы решили тренировать модель на большем количестве видеокарт и увеличили размер батча в $N$ раз, вам следует увеличить и скорость обучения в $N$ раз, чтобы сохранить динамику оптимизации .