Regularisointi: suosi erilaista ratkaisua
Regularisointi (regularization) muuttaa oppimista niin, että liian tarkasti koulutusaineistoon sovittuvia ratkaisuja vältetään. Se voi lisätä rangaistustermin, tuoda kohinaa, rajoittaa mallia tai lopettaa koulutuksen ajoissa.
Suurempi koulutusvirhe voi kannattaa, jos opittu sääntö yleistää paremmin. Regularisointi valitsee siis, millaisia ratkaisuja suositaan, eikä vain pienennä alkuperäistä koulutushäviötä toisella tavalla.
Katso herkän suunnan vaimenevan
NumPy-esimerkki ratkaisee ridge-regression eri rangaistusvoimakkuuksilla. Tavoite on virheiden neliösumma lisättynä termillä alpha * sum(weights**2).
import numpy as np
features = np.array([[1., 1.01], [2., 1.99], [3., 3.01]])
targets = np.array([1., 2.1, 2.9])
solutions = {
alpha: np.linalg.solve(
features.T @ features + alpha * np.eye(2),
features.T @ targets,
)
for alpha in (0., 0.1, 10.)
}
Kaksi piirrettä ovat lähes päällekkäisiä. Ilman rangaistusta malli käyttää suuria vastakkaisia kertoimia selittääkseen pienen eron. Ridge vaimentaa tätä herkkää suuntaa.
Esimerkissä ei ole vakiotermiä; tavallisessa regressiossa sitä käsitellään yleensä erillään painojen rangaistuksesta. Valitse regularisoinnin voimakkuus erillisellä aineistolla. Voimakkaampi kutistus voi poistaa epävakaan yksityiskohdan lisäksi hyödyllistä signaalia.