сеньорчикОткрыть в Telegram
← вся теориятеория к собесу · Нейросети

Регуляризация в глубоком обучении

Зачем это спрашивают

Регуляризация в DL (deep learning) - вопросы с двойным дном: «чем BatchNorm отличается от LayerNorm» проверяет не определения, а понимание, почему train и eval ведут себя по-разному и почему трансформеры выбрали LayerNorm.

// model.eval() на инференсе - двухстрочная деталь, из-за которой горели прод-метрики у половины индустрии.

Dropout: учись без костылей

Dropout на трейне зануляет случайные активации: сеть не может полагаться на отдельные нейроны и учит избыточные представления это ансамбль подсетей в одной модели.

На инференсе dropout выключен, масштаб активаций компенсирован ещё при обучении. Поэтому режимы train/eval - не формальность: забытый eval() оставляет случайность включённой, и предсказания прыгают от вызова к вызову.

// Сила эффекта - dropout rate: 0.1–0.3 типичны; 0.5 из старых статей для современных архитектур обычно перебор.

dropout rate
доля занулённых активаций на трейне

BatchNorm против LayerNorm

BatchNorm нормализует активации по батчу: стабилизирует обучение, позволяет больший lr. Но у него два лица: на трейне - статистики текущего батча, на инференсе - накопленные running-статистики. И он разваливается на мелких батчах: статистики по 2–4 объектам - шум.

LayerNorm нормализует по признакам одного объекта: от батча не зависит вовсе, работает при batch_size=1 - стандарт трансформеров и рекуррентных сетей.

// Правило выбора: свёрточные сети с крупным батчом - BatchNorm; трансформеры, RNN (recurrent neural network), мелкие батчи - LayerNorm (или GroupNorm для свёрток).

running statistics
накопленные среднее/дисперсия BN (batch normalization) для инференса

Регуляризация данными и конструкцией

Аугментации - регуляризация данными: повороты, кропы и шум для картинок, замены и пертурбации для текста расширяют распределение без новой разметки. На валидации и тесте аугментаций нет, иначе метрика перестаёт быть честной (осознанный TTA - отдельная история).

Ранняя остановка по валидации - простейшая и надёжная: стоп, когда val-лосс пошёл вверх. Label smoothing размазывает единицу таргета (0.9/0.1) - модель менее переуверена, калибровка лучше.

// Skip-связи (ResNet) - глубже, чем регуляризация: identity-путь даёт градиенту течь напрямую, и глубокие сети вообще становятся обучаемыми.

label smoothing
мягкий таргет вместо единицы - против переуверенности
residual connection
identity-путь мимо блока; градиент течёт напрямую
TTA
test-time augmentation

Как отвечать: «Чем BatchNorm отличается от LayerNorm и когда какой брать?»

BatchNorm нормализует по измерению батча: ему нужны приличные батчи, и он живёт двойной жизнью - статистики батча на трейне, накопленные running-статистики на инференсе, отсюда обязательный model.eval(). LayerNorm нормализует по признакам каждого объекта отдельно: от батча не зависит, работает хоть при batch_size=1, поэтому он стандарт трансформеров, где длины и батчи пляшут. Правило: свёртки с большим батчом - BN, трансформеры и мелкие батчи - LN или GroupNorm.

Различие через ось нормализации, следствия для train/eval и правило выбора - все три слоя, которые проверяет вопрос.

На чём валят

  • Забыть model.eval() на инференсе - dropout и BN работают по-трейновому, метрики прыгают.
  • BatchNorm при батче 2–4 - шумные статистики; мелкие батчи → GroupNorm/LayerNorm.
  • Аугментации на валидации/тесте (кроме осознанного TTA) - нечестная метрика.
  • Dropout и BN подряд без проверки - конфликт статистик; порядок проверяют, а не копируют.

Проверьте себя

Пять вопросов из банка по этой подтеме. Всего их 12, остальные разбираются в тренажёре.

  1. #regularization_dl1 / 5
    Что такое data augmentation и почему это одна из самых дешёвых регуляризаций в CV?
    A)Генерация синтетических меток для неразмеченных данных полуобучением
    B)Простое увеличение размера батча вдвое на каждом шаге обучения
    C)Дублирование примеров редких классов без каких-либо изменений
    D)Метка-сохраняющие преобразования входа учат инвариантностям
    показать ответ и разбор
    +D)Метка-сохраняющие преобразования входа учат инвариантностям

    // разбор: Аугментации кодируют доменные знания об инвариантностях задачи и эффективно умножают датасет бесплатно. Важно, чтобы преобразование не ломало метку (отражение цифры «6» — уже «9»-подобное). Продвинутый уровень: mixup/CutMix сглаживают границы решений, RandAugment подбирает политику автоматически.

  2. #regularization_dl2 / 5
    Что такое label smoothing и какой эффект он даёт?
    A)Случайная перестановка меток внутри батча как дешёвый способ аугментации данных
    B)Мягкий таргет 1−ε вместо one-hot; логиты не растут в бесконечность
    C)Сглаживание временного ряда меток скользящим средним по времени
    D)Удаление шумных, предположительно ошибочных меток из датасета
    показать ответ и разбор
    +B)Мягкий таргет 1−ε вместо one-hot; логиты не растут в бесконечность

    // разбор: One-hot с кросс-энтропией требует бесконечной уверенности — модель раздувает логиты и становится overconfident. Мягкий таргет ограничивает разрыв между top-1 и остальными, действуя как регуляризатор. Побочный эффект: смягчённые вероятности; а при дистилляции знаний label smoothing учителя может ухудшить передачу «тёмных знаний» — хороший поворот для сеньорского обсуждения.

  3. #regularization_dl3 / 5
    По каким кривым обучения видно переобучение сети?
    A)Train-лосс падает, а val-лосс с какого-то момента начинает расти
    B)Одновременно и обучающий, и валидационный лосс дружно растут вместе на протяжении всего обучения
    C)Train-лосс стоит на месте, а val-лосс монотонно и стабильно падает
    D)Обе кривые совпадают точь-в-точь на всех эпохах обучения без расхождений
    показать ответ и разбор
    +A)Train-лосс падает, а val-лосс с какого-то момента начинает расти

    // разбор: Переобучение — это когда модель начинает запоминать обучающую выборку в ущерб обобщению: train-лосс продолжает падать, а валидационный после некоторой точки разворачивается и растёт. Расходящийся разрыв между кривыми — сигнал остановиться (early stopping) или усилить регуляризацию.

  4. #regularization_dl4 / 5
    Почему в Adam «L2-регуляризация» и weight decay — не одно и то же, и зачем придумали AdamW?
    A)Это одно и то же во всех оптимизаторах, а AdamW — просто новое маркетинговое название того же Adam
    B)L2 и weight decay различаются в SGD, а в Adam они, наоборот, совпадают по итоговому эффекту на веса
    C)В Adam L2 попадает под адаптивное масштабирование шага и слабеет неравномерно; AdamW развязывает weight decay, применяя его к весам напрямую
    D)AdamW отличается от Adam тем, что использует больший размер батча на каждом шаге обучения модели сети
    показать ответ и разбор
    +C)В Adam L2 попадает под адаптивное масштабирование шага и слабеет неравномерно; AdamW развязывает weight decay, применяя его к весам напрямую

    // разбор: Добавление L2-штрафа в лосс попадает в градиент, а Adam делит шаг на корень из накопленного второго момента — поэтому эффективный decay у параметров с большими градиентами ослабляется и становится неравномерным, не как честный weight decay. AdamW выносит weight decay из градиента и применяет его прямо к весам после адаптивного шага, восстанавливая корректную регуляризацию. В SGD же L2 и weight decay эквивалентны.

  5. #regularization_dl5 / 5
    Что делает weight decay (штраф на величину весов) при обучении сети?
    A)Обнуляет градиенты у самых больших по модулю весов, замораживая именно эти веса до конца обучения сети
    B)Увеличивает веса пропорционально их текущей величине, чтобы сеть быстрее и увереннее подгонялась под обучающие данные
    C)Случайно удаляет часть нейронов на каждом шаге обучения ради усреднения предсказаний множества разных подсетей потом
    D)Тянет веса к нулю, штрафуя за большую величину — простые (гладкие) решения предпочтительнее, меньше переобучение
    показать ответ и разбор
    +D)Тянет веса к нулю, штрафуя за большую величину — простые (гладкие) решения предпочтительнее, меньше переобучение

    // разбор: Weight decay добавляет к лоссу штраф за большую норму весов (по сути L2), поэтому оптимизатор помимо снижения ошибки удерживает веса небольшими — сеть предпочитает более простые, гладкие функции, которые хуже заучивают шум и лучше обобщают. Это классическая регуляризация. Не путать с dropout (случайное отключение нейронов) и заморозкой; веса он тянет к нулю, а не раздувает.

дальше

Теорию прочитали. Навык ставится повторением

В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.