# Слепой в горах математики: как обучаются современные нейросети

Источник: https://www.youtube.com/watch?v=dyNGd06MWn4
Канал: Stanford Online
Опубликовано: 02.09.2025

---

В Стэнфордском университете в рамках легендарного курса **CS231n (Spring 2025)** прошла лекция, посвященная фундаменту глубокого обучения — регуляризации и оптимизации. Преподаватель подробно разобрал, как заставить нейросеть не просто «зубрить» обучающие данные, а понимать суть изображений, и какие алгоритмы помогают модели находить кратчайший путь к правильным ответам в сложном математическом ландшафте.

## 🧠 Проблема «семантического разрыва» и логика данных
[[JUMP:00:05]]

Лекция началась с рекапа ключевой задачи компьютерного зрения — классификации изображений. Главная трудность здесь заключается в так называемом «семантическом разрыве» (semantic gap): человек видит на картинке кошку, а компьютер — лишь сетку чисел, представляющих интенсивность пикселей [01:13]. 

По мнению лектора, традиционное программирование через правила «если-то» (if-else) бессильно перед лицом реальности, так как объекты постоянно меняются:

*   **Освещение:** интенсивность пикселей зависит от источника света.
*   **Деформация:** кошки могут скручиваться и принимать любые формы [01:52].
*   **Окклюзия (перекрытие):** объект может быть виден лишь частично (например, только хвост из-под дивана) [02:04].
*   **Внутриклассовая вариативность:** представители одной категории (например, разные породы собак) могут выглядеть совершенно по-разному [02:30].

Для решения этих проблем используются подходы, основанные на данных (data-driven), где простейшим примером является метод K-ближайших соседей (KNN) [02:54]. Однако современные системы строятся на линейных классификаторах, которые можно интерпретировать тремя способами: алгебраически (умножение матриц), визуально (как шаблоны классов) и геометрически (как разделяющие поверхности в пространстве признаков) [06:34].

## ⚖️ Регуляризация: почему «хуже» на тренировке означает «лучше» в жизни
[[JUMP:10:30]]

Когда модель обучается, она стремится минимизировать функцию потерь (loss function). Однако лектор подчеркивает: если модель идеально подстраивается под тренировочные данные (оверфиттинг), она, скорее всего, провалится на новых данных [13:48]. Здесь на сцену выходит регуляризация.

Суть регуляризации заключается в добавлении к функции потерь штрафа за слишком «сложные» веса. Формула общей потери теперь состоит из двух частей:

1.  **Data Loss:** насколько предсказания соответствуют обучающей выборке.
2.  **Regularization Loss:** штраф, препятствующий чрезмерному усложнению модели [11:48].

Лектор сравнил этот принцип с «Бритвой Оккама»: если есть два объяснения, лучше выбрать самое простое [14:15]. 

Наиболее популярные методы регуляризации:

*   **L2-регуляризация:** сумма квадратов всех весов. Она предпочитает «распределенные» веса (например, $[0.25, 0.25, 0.25, 0.25]$ вместо $[1.0, 0, 0, 0]$), чтобы модель учитывала все входные признаки понемногу, а не зацикливалась на одном [20:18].
*   **L1-регуляризация:** сумма абсолютных значений весов. Она способствует «разреженности» (sparsity), зануляя менее важные веса, что эффективно упрощает архитектуру модели [16:37].

Сила этого штрафа регулируется гиперпараметром $\lambda$ (лямбда). Если $\lambda=0$ — регуляризации нет; если $\lambda$ стремится к бесконечности — модель станет слишком простой и бесполезной [14:53].

## 🎢 Ландшафт потерь: «вслепую» к вершине знаний
[[JUMP:24:35]]

Поиск идеальных весов модели ($W$) аналогичен путешествию по пересеченной местности, где высота — это значение ошибки (лосс). По словам лектора, правильная аналогия — это человек с повязкой на глазах, который пытается найти самую глубокую впадину, просто прощупывая наклон почвы под ногами [25:29].

Ключевым инструментом здесь является **градиент** — вектор, указывающий направление самого крутого подъема. Чтобы минимизировать ошибку, нужно двигаться в противоположную сторону (антиградиент) [28:33].

Проблема в том, что вычислять точный градиент по всему огромному датасету (например, ImageNet) на каждом шаге слишком долго. Поэтому используется **Stochastic Gradient Descent (SGD)** — метод, при котором для одного шага оптимизации выбирается лишь небольшая случайная группа примеров (мини-батч), обычно от 32 до 256 штук [37:11]. Это вносит «шум», но позволяет учиться гораздо быстрее.

## 🏎️ Продвинутые оптимизаторы: импульс и адаптивность
[[JUMP:43:04]]

Обычный SGD часто застревает в «седловых точках» (saddle points), где градиент равен нулю, но мы еще не в минимуме, или бесконечно колеблется в узких «желобах» функции потерь [40:04]. Чтобы преодолеть это, были разработаны более хитрые алгоритмы:

1.  **Momentum (Импульс):** работает как катящийся с горы шар. Он накапливает «скорость» (предыдущие значения градиентов), что позволяет пролетать небольшие локальные минимумы и быстрее двигаться в стабильных направлениях [43:16].
2.  **RMSProp:** адаптивный метод, который масштабирует шаг для каждого веса отдельно. В крутых направлениях он замедляет движение, а в пологих — ускоряет, что решаёт проблему разбалансированных ландшафтов [51:11].
3.  **Adam (Adaptive Moment Estimation):** текущий «золотой стандарт» индустрии. Он объединяет идеи импульса и RMSProp [53:38]. 

Лектор отметил важный нюанс: при реализации Adam необходима «поправка на смещение» (bias correction) в начале обучения. Без неё первый шаг может оказаться катастрофически огромным, так как алгоритм делит градиент на почти нулевое накопленное значение [56:06].

## 📉 Расписание обучения и масштабирование
[[JUMP:59:21]]

Даже самый лучший оптимизатор требует настройки **Learning Rate** (скорости обучения). Слишком высокая скорость приведет к тому, что модель «вылетит» из долины потерь; слишком низкая — модель будет учиться вечно [59:35].

Современная практика подразумевает изменение скорости обучения прямо в процессе (Learning Rate Decay):

*   **Ступенчатый (Step Decay):** уменьшение скорости в 10 раз каждые $N$ эпох [1:00:27].
*   **Косинусный (Cosine Decay):** плавное снижение скорости до нуля к концу обучения по кривой косинуса. Сейчас это один из самых популярных методов [1:01:06].
*   **Linear Warm-up:** в первые несколько сотен шагов мы не даем модели сразу «бежать», а плавно повышаем скорость обучения до рабочего максимума, чтобы стабилизировать начальные веса [1:02:11].

В заключение лектор упомянул «эмпирическое правило линейного масштабирования»: если вы решили тренировать модель на большем количестве видеокарт и увеличили размер батча в $N$ раз, вам следует увеличить и скорость обучения в $N$ раз, чтобы сохранить динамику оптимизации [1:03:04].