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

Зачем упорядочивать?

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

Вы заметили, что ваша модель очень хорошо распознает кошек с частотой ошибок 8 %, но плохо распознает собак с частотой ошибок 50 %, и что произойдет, если вы сделаете ее мультиклассовой моделью для распознавания лошадей, а теперь получается, что частота ошибок при распознавании лошадей превышает 60%, это не означает, что ваша модель хорошо распознает кошек, в целом это означает, что в вашей обучающей модели присутствует высокий уклон в сторону кошек.

Звучит не очень хорошо, поэтому, возвращаясь к исходной модели, вы потратили значительное количество времени на обучение своей модели, обновили свои веса и, наконец, ваша модель способна распознавать каждое изображение с частотой ошибок, близкой к 0%. . Звучит здорово, на самом деле звучит слишком хорошо, чтобы быть правдой. Уверены ли мы, что модель, которую вы только что обучили, будет успешно работать с новым набором данных? или он просто стал хорошо распознавать изображения тренировочного набора. Итак, вы продолжаете и строите свою функцию, ожидая какой-то линейный тренд, но вместо этого вы получаете какую-то странную линию без различимого тренда, вы хотите, чтобы ваша модель могла предсказывать результаты с новыми данными,

и когда вы пытаетесь наполнить свою модель новым набором данных, вы видите, что ваша модель не работает хорошо.

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

для реализации регуляризации в основном добавляется член в нашу функцию потерь, который наказывает модель за большие веса (loss + x)

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

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

x = (Σ |w|²) λ/2m

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

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

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

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

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

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

Выбывать

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

( A x D ) / k

Увеличение данных

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

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

Зачем нам останавливать нашу модель раньше? Мы могли бы обучать нашу модель снова и снова, и мы заметим, что в какой-то момент мы переобучили нашу модель, ранняя остановка останавливает процесс обучения до того, как наша модель начнет переоснащаться, мы могли бы определить количество эпох (или проходов обучающих данных) а это решает проблему обучения на неопределенное время,

for epoch in range(5000):
    train(X)

но мы не можем убедиться, что наша модель достигла локального минимума функции стоимости. Альтернативой является остановка, когда обновления стоимости становятся слишком маленькими.

X[i+1] - X[i]0,00001?стоп :продолжить

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

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

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