Sobes.tech
Middle — Senior

Защо L1 регуляризацията нулира някои тежести, а L2 не?

sobes.tech AI

Отговор от AI

Регуляризация L1 (Lasso) добавя към функцията за загуба сумата от абсолютните стойности на теглата (||w||₁), което води до появата на ъглови точки върху оптимизационната повърхност. Това насърчава някои тегла да имат точно нулева стойност, т.е. да ги нулира, осигурявайки разреждане на модела.

Регуляризацията L2 (Ridge) добавя сумата от квадратите на теглата (||w||₂²), създавайки гладка параболична повърхност без ъгли. В резултат теглата намаляват, но рядко стават точно нулеви, тъй като оптимизацията се стреми към малки, но ненулеви стойности.

Пример:

import numpy as np
from sklearn.linear_model import Lasso, Ridge

X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([1, 2, 3])

lasso = Lasso(alpha=0.1)
lasso.fit(X, y)
print('L1 тегла:', lasso.coef_)

ridge = Ridge(alpha=0.1)
ridge.fit(X, y)
print('L2 тегла:', ridge.coef_)

Тук L1 може да нулира някои тегла, а L2 — само да ги намали.