November 14, 2024

Регуляризация в ML

Регуляризация — это набор методов, которые помогают моделям лучше обобщать данные и избегать переобучения. Переобучение происходит, когда модель слишком хорошо подстраивается под обучающую выборку и теряет способность работать с новыми данными, которых ещё не видела.

Рис. 1. Переобучение и недообучение на примере классификации.

Важно, что регуляризация — это именно все методы, которые помогают бороться с переобучением, а не только L1 и L2:) Глобально можно разделить их на те, что применяются для моделей классического ML, и для нейросетей.

Регуляризация в классических моделях

Здесь всё просто: L1, L2 и L1+L2 (ElasticNet). Они помогают снизить переобучение, добавляя штраф к функционалу ошибки за большие веса.

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

L1-регуляризация добавляет к функционалу потерь линейный штраф на абсолютные значения весов.

Рис. 2. Формула L1-регуляризации.

Из минусов — такое выражение сложнее оптимизировать, т.к. функция негладкая (у модуля нет производной в нуле). Из плюсов — этот метод зануляет некоторые веса, поэтому L1-регуляризацию можно считать одним из методов отбора признаков.

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

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

Рис. 3. Формула L2-регуляризации.

Кстати, названия берутся от одноимённых названий соответствующих типов норм векторов.

ElasticNet

Этот метод объединяет L1 и L2-регуляризации, добавляя штраф как на абсолютные значения весов, так и на их квадраты. Это позволяет использовать преимущества обоих способов.

Рис. 4. Формула для ElasticNet.

Регуляризация в нейросетях

В нейросетях всё хитрее, и способов предотвратить переобучение больше. Идеи с L1, L2 и ElasticNet регуляризацией тоже работают, но есть кое-что поинтереснее...

Dropout

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

Рис. 5. Нейросеть до и после применения dropout.

В популярных фреймворках TensorFlow и Pytorch он указывается как отдельный слой, в качестве гиперпараметра передаётся одно число — вероятность, с которой некоторый случайно взятый нейрон будет отключен.

Рис. 6. Пример сети с dropout на Pytorch.
Рис. 7. Пример сети с dropout на TensorFlow.

Важно, что на этапе инференса dropout не применяется, все нейроны участвуют в вычислении предсказаний. Их веса уже были подстроены под "случайное отключение", и теперь это позволяет сети делает более стабильные и уверенные предсказания.

Batch Normalization

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

Рис. 8. Формула батч-нормализации.

В формуле μ и σ — среднее и дисперсия для набора данных (батча), ϵ — небольшая константа для численной стабильности, а γ и β — обучаемые параметры, которые подбираются в ходе обучения.

Идея батч-нормализации берёт начало из классического ML. Как известно, для обычных ML-моделей нормализация данных положительно влияет на сходимость алгоритмов, особенно линейных. Нейросети же тоже состоят из нескольких слоёв, в основе которых — линейное преобразование. Поэтому нормализация после каждого слоя аналогично положительно сказывается на работе алгоритмов.

Рис. 9. Сходимость градиентного спуска с нормализацией и без.

Early Stopping

Или ранняя остановка. Суть метода проста: при обучении нейронной сети отслеживается ошибка на валидационной выборке, и если она перестаёт уменьшаться, обучение останавливается. Это помогает вовремя обнаружить признаки переобучения и остановить процесс, получив на выходе "на грани" обученную модель.

Рис. 10. Пример кода на TensorFlow с ранней остановкой.

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

Data Augmentation

Этот приём больше применим к задачам компьютерного зрения. Заключается в генерации новых данных путём небольших изменений исходных. Например, можно отразить, повернуть, обрезать картинки, пошатать цветовые каналы... Для модели технически это будут новые изображения. Главное — сильно не переусердствовать с изменениями, чтобы всё ещё можно было определить, что находится на картинках.

Рис. 11. Хорошие аугментации.
Рис. 12. А так лучше не делать:)

Вместо заключения

Методы регуляризации — важные инструменты, которые позволяют улучшить обобщающую способность моделей и избежать переобучения. Но стоит применять их только при необходимости: если модель, наоборот, недообучается или и бех того нормально сходится, то регуляризация может оказаться излишней.