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 მხოლოდ ამცირებს მათ.