Sobes.tech
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.