Перейти к основному содержимому

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

Идея

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

Чаще всего используется L2L_2-регуляризация (называемая weight decay):

L(X,Y)L(X,Y)+λw22=L(X,Y)+λi=1Iwi2(1)L(X,Y) \to L(X,Y)+\textcolor{red}{\lambda||w||^2_2} = L(X,Y)+\textcolor{red}{\lambda \sum_{i=1}^I w_i^2}\tag{1}

либо L1L_1-регуляризация:

L(X,Y)L(X,Y)+λw1=L(X,Y)+λi=1Iwi(2)L(X,Y) \to L(X,Y)+\textcolor{red}{\lambda||w||_1} = L(X,Y)+\textcolor{red}{\lambda \sum_{i=1}^I |w_i|}\tag{2}

Добавление регуляризующих слагаемых делает оптимальные веса более малыми по абсолютной величине, вследствие чего итоговая зависимость fw(x)f_w(x) меняется более плавно.

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

Сила регуляризации

Сила регуляризации контролируется гиперпараметром λ>0\lambda>0: чем он выше, тем сильнее оптимальные веса будут прижаты к нулю и тем более плавную прогнозную функцию мы получим. Важно не переборщить с регуляризацией, иначе модель выродится в константу, в то время как реальная зависимость будет подвержена изменению. Обычно λ\lambda подбирают по качеству модели на отдельной валидационной выборке, перебирая логарифическую сетку значений, например, 106,105,...105,10610^{-6},10^{-5},...10^5,10^6.

Посчитав производную по весу для регуляризаторов в (1) и (2) можно увидеть, что L2L_2 сильнее прижимает к нулю большие веса, но слабее - малые. Если сила прижатия весов к нулю (производная регуляризатора по весу) для L1L_1- константа, то для L2L_2 - она пропорциональна величине веса. Вследствие этого при достаточно большом λ\lambda L1L_1-регуляризация в точности занулит часть весов (что эквивалентно удалению соответствующей связи в сети), в то время как для L2L_2 все веса будут в общем случае ненулевые даже при сильной степени регуляризации.

Другим обоснованием, почему L2L_2 регуляризация не зануляет веса, а L1L_1 является эквивалентность следующих задач оптимизации для некоторого порога γ=γ(λ)\gamma=\gamma(\lambda):

L(w)+λR(w)minw    {L(w)minwR(w)γL(w)+\lambda R(w)\to\min_w \iff \begin{cases} L(w)\to\min_w \\ R(w)\le\gamma \end{cases}

Если визуализировать линии уровня функции потерь и область, задаваемую ограничением второй задачи оптимизации, то видно, что для L2L_2 регуляризации оптимальное значение весов (жёлтый кружок) будет иметь ненулевые веса, а для L1L_1 регуляризации часть оптимальных весов может в точности стать равной нулю:

Особый учёт смещений

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

Обобщение

Вместо того, чтобы подвергать регуляризации все веса сети с одинаковой силой λ\lambda можно регуляризовать веса, отвечающие разным слоям сети с разной силой. Если слои сети состоят из примерно одинакового числа нейронов, то рекомендуется слабее регуляризовать начальные слои, а сильнее - более поздние.

Это объясняется тем, что первые слои сильно связаны со входами xx, информацию о которых нежелательно потерять из-за чрезмерной регуляризации. В последних же слоях генерируются всевозможные сложные признаки, не все из которых в конечном счёте окажутся полезными.