Deep learning
April 3

Вопросы с собесов. Регуляризация в DL

Рассмотрим какие методы регуляризации есть в DL: от изменений лосс функций и до вмешательства в архитектуру модели.

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

Dropout

Во время обучения:

С заранее заданной вероятностью обнуляем случайные признаки перед слоем. То есть накладываем маску из единиц и нулей на слой. Можем обнулять как входные признаки, так и внутренние представления.

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

Применение dropout

Во время инференса:

Конечно, мы не хотим делать жизнь модели тяжелее во время ее применения, поэтому обнулять активации нейронов не надо.

Но необходимо умножить все выходы нейронов на (1 - p), где p - это вероятность обнуления, чтобы распределение на инференсе совпадало с распределением на трейне.

Также есть обратный дропаут (аналогичный способ использовать дропаут), когда мы во время трейна умножаем на 1/(1-p), а на инференсе ничего не меняем.

Batch Norm

Мотивация батч нормализации в том, чтобы контролировать распределения активаций нейронов после слоя.

Это достигается за счет того, что мы на трейне:

  • сначала считаем матожидание и дисперсию по батчу
  • нормируем представление по формуле
нормировка
  • а потом делаем масштабирование с помощью умножение на scale (бета) и прибавление shift (гамма), эти параметры обучаются
масштабирование

На инференсе у нас, конечно, нет подсчета статистик по батчу, хотя бы потому что батч может быть из одного элемента. Поэтому во время обучения мы также накапливаем скользящее среднее матожидания и дисперсии, чтобы потом их использовать на инференсе.

скользящее среднее

Обучаемые параметры бета и гамма также остаются и мы выученные значения используем по той же схеме во время инференса.

Плюсы:

  • ускоряет и улучшает сходимость, можно использовать более высокие learning rate-ы
  • уменьшает зависимость нейронной сети от начальной инициализации
  • в какой-то степени помогает бороться с переобучением, поэтому его и называют методом регуляризации

Существуют и другие способы нормировать промежуточные представления: instance normalization, layer normalization (используется в трансформерах) и по другим возможным размерностям.

Weight decay

По сути это L2 регуляризация, встроенная в оптимизатор AdamW, рассмотренный здесь.

регуляризация

То есть мы накладываем штраф за слишком большие по норме веса.

Label smoothing

Техника регуляризации, которая добавляет шум в целевым меткам, предполагая, что разметка может сама по себе где-то неправильной.

Принцип работы довольно прост:

  • Выбираем небольшую константу e (эпсилон)
  • Заменяем жесткие таргет лейблы 0 и 1 на e/k и 1 - e(k-1)/k

k - кол-во классов

Было
Стало

Пример результата работы label smoothing из статьи:

эффект от label smoothing

Аугментация

Аугментация данных или создание новых семплов на основе уже имеющихся тоже является методом регуляризации, так как мы в этом случае боремся с переобучением модели и делаем ее устойчивой к более разнообразным данным.

Например, в компьютерном зрении аугментацией может служить: поворот, разворот, переворот, добавление шума и тд. Объект на картинке не изменит свою метку класса после таких преобразований.

Ранняя остановка

Давайте вдумаемся, что такое регуляризация - это когда мы вмешиваемся в обучение модели и накладываем какие-то ограничения на разные аспекты ее обучения: в лосс функцию, в архитектуру, в данные.

Early stopping тоже регуляризация, потому что мы не даем модели достаточно времени на запоминание и прерываем оптимизацию раньше времени.

Обычно если модель склонна к переобучению, то это можно будет отследить на лоссе на валидации - он начнет расти, при падающем лоссе на трейне.

Заключение

Не переобучайтесь - обобщайтесь