Что такое регуляризация 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 и вы не знаете, как математически убедить кого-то.