D· AI-utvecklareLaboration· ca 50 min· wasm
Labb: gradient descent från grunden
Implementera gradient descent för en enkel loss och för linjär regression, och se effekten av inlärningstakten.
Lär ut: gradient-descent · Kräver: derivata-och-optimeringenkel-prediktiv-modell
Teori
w ← w − η·L'(w). För L(w) = (w−3)² är L'(w) = 2(w−3). För linjär regression med MSE är gradienten m.a.p. k: (2/n)Σ(kxᵢ+m−yᵢ)xᵢ och m.a.p. m: (2/n)Σ(kxᵢ+m−yᵢ).
Deluppgifter
- steg — `gd_1d(w0, eta, steg)` returnerar w efter `steg` uppdateringar på L(w) = (w−3)².
- gradient för linjen — `grad_linje(k, m, xs, ys)` returnerar (dL/dk, dL/dm) för MSE.
- träna linjen — `trana_linje(xs, ys, eta, steg)` returnerar (k, m) efter gradient descent från (0, 0).
Evals: glass-mse (mse <= 1)
Logga in för att köra laborationen.
Förväntade resultat
gd_1d(0, 0.25, 3) ≈ 2.625; gd_1d(0, 0.5, 1) = 3.0; tränad linje på glassdatan ger MSE < 1 (facit k=3, m=−25 ger 0).
Vanliga fel
- Tecknet: w − η·grad, inte plus.
- Glömmer faktorn 2/n i MSE-gradienten (fungerar ändå med annan η, men testet kräver exakt gradient).
- För stor η på glassdatan (x ≈ 20) exploderar — normalisera eller använd liten η (≈0,002).