Middle — Senior
Miért nullázza az L1 regularizáció néhány súlyt, míg az L2 nem?
sobes.tech MI
Válasz az MI-től
Az L1 regularizáció (Lasso) hozzáadja a veszteségfüggvényhez a súlyok abszolút értékeinek összegét (||w||₁), ami sarkokat eredményez az optimalizációs felületen. Ez elősegíti, hogy az optimális megoldás néhány súly esetében pontosan null értékű legyen, azaz nullázza őket, ezáltal a modell sparsityját biztosítva.
Az L2 regularizáció (Ridge) hozzáadja a súlyok négyzetösszegét (||w||₂²), ami sima parabolikus felületet hoz létre, szög nélküli alakban. Ennek eredményeként a súlyok csökkennek, de ritkán válnak pontosan nullává, mivel az optimalizáció kis, de nem nulla értékek felé törekszik.
Példa:
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 súlyok:', lasso.coef_)
ridge = Ridge(alpha=0.1)
ridge.fit(X, y)
print('L2 súlyok:', ridge.coef_)
Itt az L1 néhány súlyt nullára állíthat, míg az L2 csak csökkenti azokat.