Вопросы с собесов. Регуляризация в DL
Рассмотрим какие методы регуляризации есть в DL: от изменений лосс функций и до вмешательства в архитектуру модели.
Подобные вопросы не редкость на собеседованиях по глубокому обучению. Более того, неправильный ответ на них выдаёт вас за новичка, поскольку они уже стали базой собесов!
Dropout
С заранее заданной вероятностью обнуляем случайные признаки перед слоем. То есть накладываем маску из единиц и нулей на слой. Можем обнулять как входные признаки, так и внутренние представления.
Сделано это для того, чтобы модель училась использовать как можно больше своих нейронов, не подстраиваясь под возможный шум в данных. Таким образом избегаем переобучения сети.
Конечно, мы не хотим делать жизнь модели тяжелее во время ее применения, поэтому обнулять активации нейронов не надо.
Но необходимо умножить все выходы нейронов на (1 - p), где p - это вероятность обнуления, чтобы распределение на инференсе совпадало с распределением на трейне.
Также есть обратный дропаут (аналогичный способ использовать дропаут), когда мы во время трейна умножаем на 1/(1-p), а на инференсе ничего не меняем.
Batch Norm
Мотивация батч нормализации в том, чтобы контролировать распределения активаций нейронов после слоя.
Это достигается за счет того, что мы на трейне:
- а потом делаем масштабирование с помощью умножение на scale (бета) и прибавление shift (гамма), эти параметры обучаются
На инференсе у нас, конечно, нет подсчета статистик по батчу, хотя бы потому что батч может быть из одного элемента. Поэтому во время обучения мы также накапливаем скользящее среднее матожидания и дисперсии, чтобы потом их использовать на инференсе.
Обучаемые параметры бета и гамма также остаются и мы выученные значения используем по той же схеме во время инференса.
- ускоряет и улучшает сходимость, можно использовать более высокие learning rate-ы
- уменьшает зависимость нейронной сети от начальной инициализации
- в какой-то степени помогает бороться с переобучением, поэтому его и называют методом регуляризации
Существуют и другие способы нормировать промежуточные представления: instance normalization, layer normalization (используется в трансформерах) и по другим возможным размерностям.
Weight decay
По сути это L2 регуляризация, встроенная в оптимизатор AdamW, рассмотренный здесь.
То есть мы накладываем штраф за слишком большие по норме веса.
Label smoothing
Техника регуляризации, которая добавляет шум в целевым меткам, предполагая, что разметка может сама по себе где-то неправильной.
Принцип работы довольно прост:
Пример результата работы label smoothing из статьи:
Аугментация
Аугментация данных или создание новых семплов на основе уже имеющихся тоже является методом регуляризации, так как мы в этом случае боремся с переобучением модели и делаем ее устойчивой к более разнообразным данным.
Например, в компьютерном зрении аугментацией может служить: поворот, разворот, переворот, добавление шума и тд. Объект на картинке не изменит свою метку класса после таких преобразований.
Ранняя остановка
Давайте вдумаемся, что такое регуляризация - это когда мы вмешиваемся в обучение модели и накладываем какие-то ограничения на разные аспекты ее обучения: в лосс функцию, в архитектуру, в данные.
Early stopping тоже регуляризация, потому что мы не даем модели достаточно времени на запоминание и прерываем оптимизацию раньше времени.
Обычно если модель склонна к переобучению, то это можно будет отследить на лоссе на валидации - он начнет расти, при падающем лоссе на трейне.