Регуляризация в глубоком обучении
Регуляризация в 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, остальные разбираются в тренажёре.
- Что такое data augmentation и почему это одна из самых дешёвых регуляризаций в CV?A)Генерация синтетических меток для неразмеченных данных полуобучениемB)Простое увеличение размера батча вдвое на каждом шаге обученияC)Дублирование примеров редких классов без каких-либо измененийD)Метка-сохраняющие преобразования входа учат инвариантностям
показать ответ и разбор
+D)Метка-сохраняющие преобразования входа учат инвариантностям// разбор: Аугментации кодируют доменные знания об инвариантностях задачи и эффективно умножают датасет бесплатно. Важно, чтобы преобразование не ломало метку (отражение цифры «6» — уже «9»-подобное). Продвинутый уровень: mixup/CutMix сглаживают границы решений, RandAugment подбирает политику автоматически.
- Что такое label smoothing и какой эффект он даёт?A)Случайная перестановка меток внутри батча как дешёвый способ аугментации данныхB)Мягкий таргет 1−ε вместо one-hot; логиты не растут в бесконечностьC)Сглаживание временного ряда меток скользящим средним по времениD)Удаление шумных, предположительно ошибочных меток из датасета
показать ответ и разбор
+B)Мягкий таргет 1−ε вместо one-hot; логиты не растут в бесконечность// разбор: One-hot с кросс-энтропией требует бесконечной уверенности — модель раздувает логиты и становится overconfident. Мягкий таргет ограничивает разрыв между top-1 и остальными, действуя как регуляризатор. Побочный эффект: смягчённые вероятности; а при дистилляции знаний label smoothing учителя может ухудшить передачу «тёмных знаний» — хороший поворот для сеньорского обсуждения.
- По каким кривым обучения видно переобучение сети?A)Train-лосс падает, а val-лосс с какого-то момента начинает растиB)Одновременно и обучающий, и валидационный лосс дружно растут вместе на протяжении всего обученияC)Train-лосс стоит на месте, а val-лосс монотонно и стабильно падаетD)Обе кривые совпадают точь-в-точь на всех эпохах обучения без расхождений
показать ответ и разбор
+A)Train-лосс падает, а val-лосс с какого-то момента начинает расти// разбор: Переобучение — это когда модель начинает запоминать обучающую выборку в ущерб обобщению: train-лосс продолжает падать, а валидационный после некоторой точки разворачивается и растёт. Расходящийся разрыв между кривыми — сигнал остановиться (early stopping) или усилить регуляризацию.
- Почему в Adam «L2-регуляризация» и weight decay — не одно и то же, и зачем придумали AdamW?A)Это одно и то же во всех оптимизаторах, а AdamW — просто новое маркетинговое название того же AdamB)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 эквивалентны.
- Что делает weight decay (штраф на величину весов) при обучении сети?A)Обнуляет градиенты у самых больших по модулю весов, замораживая именно эти веса до конца обучения сетиB)Увеличивает веса пропорционально их текущей величине, чтобы сеть быстрее и увереннее подгонялась под обучающие данныеC)Случайно удаляет часть нейронов на каждом шаге обучения ради усреднения предсказаний множества разных подсетей потомD)Тянет веса к нулю, штрафуя за большую величину — простые (гладкие) решения предпочтительнее, меньше переобучение
показать ответ и разбор
+D)Тянет веса к нулю, штрафуя за большую величину — простые (гладкие) решения предпочтительнее, меньше переобучение// разбор: Weight decay добавляет к лоссу штраф за большую норму весов (по сути L2), поэтому оптимизатор помимо снижения ошибки удерживает веса небольшими — сеть предпочитает более простые, гладкие функции, которые хуже заучивают шум и лучше обобщают. Это классическая регуляризация. Не путать с dropout (случайное отключение нейронов) и заморозкой; веса он тянет к нулю, а не раздувает.
дальше
Теорию прочитали. Навык ставится повторением
В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.