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

Source: Artificial Intelligence on Medium

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

Дисклеймер: я не претендую на академичность или точные определения в своем посте. Все что тут написано лично мой опыт который (так же как и все остальное в интернете) не надо брать за истину. Nullius in verba.

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

“Коротко об основных остановках на дороге машинного обучения.”

Один из самых закрытых вопросов касается регуляризации. Все основные формулы, не похожи друг на друга и поэтому можно узнать как устроен тот или иной этап (от входного нейрона до обратного распространения ошибки), просто посмотрев различные источники которые объяснят на примерах или под другим углом. Но вот регуляризация остается всегда регуляризацией, почувствовать ее для меня было очень трудно. То есть я понимал что для некоторых задач она значима, но не мог представить как она работает.

Сперва нужно определить, что перееобучение — это когда какие то веса (w) имеют слишком большой показатель (нейроны с большими весами “стягивают” на себя все признаки, сужая “просвет”, что не позволяет сети работать в полевых условиях).

Слева- недообученная, по середине- обученная, слева -переобученная. Andrew Ng

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

Получается чем более линейная функция, тем более она недообучена. И чтобы сделать функцию “более линейной” прибавляются суммы весов к ошибке.

На примере Tanh активации, можно понять, что средняя часть, которая все более сокращается с увеличением лямбды (и уменьшением вклада отдельных весов) становится более линейной Andrew Ng
А это более нелинейное построение переобученной сети Andrew Ng

Чтобы понять регуляризацию, начал с того, что часик побаловался в песочнице tensorflow. Стало понятно что L1 регуляризация стабильно выключает ненужные нейроны зануляя весы. Получается тренировка максимально быстро и точно.

В итоге, регуляризация:

  1. Экономит ресурсы — зануляя ненужные весы, тем самым отключая нейроны. (Это только про L1-регуляризацию, дальше объясню)
  2. “Выпрямляет” функцию активации, приближая ее к линейной, тем самым избегает переобучения. На самом деле не выпрямляет, а сокращает ее до наиболее линейного отрезка функции активации.
  3. В любом случае, добавляет суммы весов, чтобы нивелировать пики. На самом деле функция не штрафует, а сглаживает пики, потому что прибавляет всю сумму весов к результату. И получается так, что большие веса уже не выглядят такими большими.

Короче, это про упрощение и сглаживание.

В ML есть два основных вида регуляризации. Википедия их описывает так:

L1-регуляризация (англ. lasso regression), или регуляризация через манхэттенское расстояние:

Лосс-функция с L1 регуляризацией (желтая рамка).

Если короче, то прибавление к лосс-функции суммы весов в модуле. Она добавляет «критическую величину» коэффициента, как дополнение к функции потерь. То есть, если весы на расстоянии лямбда ближе к нулю, то они становятся равными нулю и уходят в игнор, тем самым отбирая только важные признаки и в следствии уменьшая саму сеть, что экономит ресурсы.

В графике расстояние лямбда прижимается к нулю. Это расстояние и выключает низкие веса.

https://www.coursera.org/lecture/supervised-learning/rieghuliarizatsiia-sR94Q

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

L2- регуляризация, или регуляризация Тихонова (в англоязычной литературе — ridge regression или Tikhonov regularization), для интегральных уравнений позволяет балансировать между соответствием данным и маленькой нормой решения:

Лосс-функция с L2 регуляризацией (желтая рамка).

Тут получается что функция занижает пики прибавляя сумму весов в квадрате с множителем лямбда.

В графике происходит легкое смещение (не дисперсия) добавляя статистическую ошибку, которая не влияет на точность, но позволяет не переобучиться. Соответственно если вы поставите большую коэффициент (лямбда) L2, то система никогда не обучится, просто из-за того что сильно сместиться. Но если лямбда будет маленькой то и смещение будет маленьким, и весь смысл регуляризации так же будет минимальным.

https://www.coursera.org/lecture/supervised-learning/rieghuliarizatsiia-sR94Q

Член λ называется параметром сглаживания. Он балансирует кросс-энтропийную функцию ошибок и регуляризационный штраф. Если значение λ велико, весовые коэффициенты будут стремиться к нулю, если же значение λ мало или равно нулю, то весовые коэффициенты будут просто стремиться к минимизации кросс-энтропийной функции ошибок. Как правило, значение параметра λ устанавливают 0,1 или 1, или в районе между этими значениями, но в основном его значение зависит от конкретных данных. Вам нужно попробовать разcraftappmobile.com)

В сумме можно посмотреть на этот рисунок

Слева L1, справа L2

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

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

Спасибо за внимание! Если интересно, то буду писать дальше…