Что такое регуляризация L1?

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

Рассмотрим простой пример линейной регрессии, где x – независимый входной вектор размерности d, а y – соответствующий прогноз. Пусть линейная связь между x и yвыражена как y = w@x, где w – обучаемый параметр измерения d, значение которого может быть оптимизировано за счет минимизации потерь MSE, как показано ниже,

MSE = E[(y-w@x)²], где E — математическое ожидание по всем образцам.

После добавления штрафа за регуляризацию L1 целевая функция станет

Потери = MSE + лямбда*|w|, где |w| — норма L1 вектора w, а лямбда — вес члена регуляризации.

Для математического удобства умножим потери MSE на 0,5, и поэтому окончательная целевая функция станет

Потери = 0,5*E[(y-w@x)²] + лямбда*|w| …(1)

Оптимизация с регуляризацией

Чтобы оптимизировать функцию потерь, как показано в уравнении (1) относительно w, давайте приравняем производную первого порядка к нулю. Взять производную от |w| непросто, поэтому предположим, что w[i]›0, где i — i-е измерение w. Также без потери общности давайте решим это для любой выборки x (вместо того, чтобы брать ожидание) и i-го измерения,

d(убыток)/dw[i] = 0

(y-w[i]*x[i])*(-x[i]) + лямбда = 0

w[i]= (y*x[i]-лямбда) / x[i]*x[i] … (2)

Анализ

В уравнении (2) x[i]*x[i] всегда будет положительным. Таким образом, если (y*x[i]-lambda) положителен, то только w[i] будет принимать положительное значение, в противном случае w[i]=0, потому что мы предполагается, что w[i]›0. Таким образом, при заданном y*x[i] по мере увеличения лямбда больше w[i] станет равным нулю и приведет к разреженности.

То же исследование можно провести и в случае w[i]‹0.

Бонус

Если мы попытаемся оптимизировать потери MSE с помощью регуляризации L2 и установим производную равной нулю, это даст следующее выражение:

Потери = 0,5*E[(y-w@x)²] + 0,5*лямбда*w@w

Для i-го измерения

d(убыток)/dw[i] = 0

(y-w[i]*x[i])*(-x[i]) + лямбда*w[i] = 0

w[i] = y*x[i]/(x[i]*x[i]+лямбда) … (3)

Мы можем ясно видеть в уравнении (3), что лямбда находится в знаменателе, и по мере увеличения значения лямбда значение w[i] будет приближаться к нулю, но не будет точно равно нулю.

Заключение

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

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