Bygg lineære prediksjonsmodeller, mål feil med tapsfunksjoner og tren parameterne trinnvis med gradient descent.
Læringsmål
01Beregne prediksjon og residual for en lineær regresjonsmodell
02Sammenligne MSE, MAE og R-kvadrat og forklare hva de fremhever
03Utlede eller bruke MSE-gradienten i ett gradient descent-steg
04Diagnostisere for liten og for stor læringsrate fra et tapsforløp
05Forklare sammenhengen mellom batchstørrelse, parameteroppdatering og epoke
En linje som gjør prediksjoner
Vi starter med et lite, syntetisk boligeksempel. Input x er areal målt i hundre kvadratmeter, og målet y er månedlig energibruk i en skalert enhet. Punktene ligger omtrent langs en rett linje, men målefeil og ulike beboervaner skaper avvik. Oppgaven er regresjon fordi målet er kontinuerlig.
En lineær modell beregner en vektet sum av input. ƒlineær regresjonsmodell bruker én vekt per feature og et konstantledd. En modellparameter er en verdi treningen tilpasser fra data; vektene og konstantleddet er derfor parametere. biasleddet b lar linjen flyttes opp og ned. Uten bias må den gå gjennom origo, selv når fagkunnskapen ikke tilsier det.
FIGEn lineær modell gjennom syntetiske observasjoner
Med én feature blir modellen y^=wx+b. Vekten er linjens stigning: øker x med én enhet, endres prediksjonen med w. I flere dimensjoner er hver vekt en partiell lineær effekt når de andre featurene holdes faste. Det er en modellantakelse, ikke nødvendigvis en kausal effekt. Korrelasjon mellom features og utelatte variabler kan gjøre en vekt vanskelig å tolke.
Fra feil til ett tall
For observasjon i er residualen yi−y^i. En positiv residual betyr at modellen predikerte for lavt, mens en negativ betyr at den predikerte for høyt. Residualplott kan avsløre struktur modellen ikke fanger, for eksempel en bue eller økende spredning.
En tapsfunksjon samler feilene til et tall treningen kan redusere. ƒmean squared error kvadrerer residualene før gjennomsnittet tas. Store feil får derfor uforholdsmessig stor betydning. MSE er glatt og enkel å derivere, noe som gjør den praktisk for gradientbasert trening.
ƒmean absolute error bruker absoluttverdien i stedet. En feil på 10 teller ti ganger så mye som en feil på 1, mens den teller hundre ganger så mye i MSE. MAE er derfor mer robust mot noen få ekstreme residualer, men har en knekk ved null. Valget handler om hvilke feil som bør dominere, ikke om én metrikk alltid er best.
Snutten skiller mellom prediksjon, residual og aggregert tap. Samme residualer straffes kvadratisk i MSE og lineært i MAE.
Tap og evalueringsmetrikk trenger ikke være identiske. Vi kan trene med MSE fordi det gir stabil optimalisering og rapportere både MAE og MSE fordi de belyser ulike feilmønstre. En metrikk må alltid tolkes i målvariabelens enhet og mot en relevant baseline.
Hva betyr en god score?
ƒforklart varians sammenligner summen av kvadrerte residualer med en baseline som alltid predikerer målverdienes gjennomsnitt. R2=1 betyr perfekte prediksjoner på de evaluerte dataene. R2=0 betyr at modellen er på nivå med gjennomsnittsbaselinen. En negativ verdi er mulig og betyr at modellen er dårligere enn baselinen.
En høy treningsscore beviser ikke at modellen generaliserer. Vi må måle på validerings- eller testdata som ikke ble brukt til å tilpasse parametere. R2 sier heller ikke at antakelsene er riktige eller at modellen er nyttig i beslutningen. Hvis målverdien varierer lite, kan en liten MAE være viktig selv om R2 er moderat.
Kontroller også residualene. Hvis modellen konsekvent undervurderer de største boligene, kan en ikke-lineær sammenheng eller en manglende feature være problemet. Å legge til kapasitet kan hjelpe, men øker også risikoen for å tilpasse støy. Modellvalg må derfor skje på data utenfor selve parametertreningen.
Gradienten oversetter tap til retning
MSE avhenger av vektene gjennom prediksjonene. ƒgradienten til mse samler hvordan tapet endres når hver vekt flyttes litt. Hvis en komponent i gradienten er positiv, vil en liten økning av den vekten øke tapet lokalt. Vi bør da redusere vekten. Er komponenten negativ, bør vekten økes.
gradient descent gjentar denne ideen. ƒgradient descent-oppdatering trekker gradienten multiplisert med steglengden fra parameterne. Vi bruker minus fordi gradienten peker mot størst lokal økning. For lineær regresjon med MSE er tapsfunksjonen konveks, så en passende steglengde kan føre oss til det globale minimumet.
FIGGradienten peker oppover i tap; oppdateringen går motsatt vei
Figuren viser to parametere som et punkt i et kart. Høydekurvene binder sammen punkter med samme tap. Gradientpilen står omtrent vinkelrett på en høydekurve og peker oppover. Oppdateringspilen går motsatt vei mot et område med lavere tap. Etter hvert blir gradienten mindre, og stegene blir kortere selv med konstant læringsrate.
Læringsraten styrer hvor modige stegene er
læringsraten η skalerer hvert gradientsteg. Er den for liten, går treningen stabilt, men sakte. Er den for stor, kan parameterne hoppe fram og tilbake over minimumet eller bevege seg mot stadig høyere tap. Et tapsforløp som oscillerer eller blir nan, er et vanlig tegn på for stor læringsrate.
Skalering av features påvirker også passende læringsrate. Hvis tapslandskapet er smalt i én parameterretning og bredt i en annen, kan samme steg være for stort på tvers og for lite langs dalen. Standardisering gjør ofte geometrien rundere og lettere å navigere.
Startverdiene spiller mindre rolle i konveks lineær regresjon enn i nevrale nettverk, men numerisk stabilitet gjør fortsatt noe. En enkel kontroll er å logge tapet før og etter de første oppdateringene. Går det ikke ned, undersøk fortegn, gjennomsnitt, dataskala og om biasgradienten mangler.
gradient-descent-fra-bunnen
Lineær regresjon trent med gradient descent
python
1importnumpyasnp23rng = np.random.default_rng(4172)4X = rng.uniform(-2, 2, size=80)5y = 1.5 * X - 0.7 + rng.normal(scale=0.25, size=80)67w, b, eta = 0.0, 0.0, 0.088forepokeinrange(120):9y_hat = w * X + b10feil = y_hat - y11dw = 2 * np.mean(feil * X)12db = 2 * np.mean(feil)13w -= eta * dw14b -= eta * db1516print(f"w={w:.3f}, b={b:.3f}")17print("MSE:", np.mean((w * X + b - y) ** 2))
Syntetiske data og støy er seedet. Løkken beregner analytiske gradienter for vekt og bias og flytter begge mot lavere MSE.
Batch, minibatch og epoke
Full batch-gradient bruker alle treningsobservasjoner i hvert steg. Det gir den eksakte gradienten til treningstapet, men blir dyrt på store datasett. En minibatch bruker et mindre delsett. ƒminibatch-gradient er da et estimat på fullgradienten. Estimatet varierer mellom batcher, men hvert steg er billigere.
Én epoke betyr at alle treningsobservasjonene har bidratt omtrent én gang. Har vi 1 000 observasjoner og batchstørrelse 100, gir en epoke omtrent ti parameteroppdateringer. Batchstørrelse 20 gir omtrent femti. Antall epoker alene forteller derfor ikke hvor mange oppdateringer modellen har fått.
Små batcher gir mer støy i gradienten. Støyen kan gjøre tapskurven hakkete, men kan også hjelpe treningen å utforske. Store batcher gir jevnere estimater og utnytter ofte maskinvare godt, men krever mer minne. I lineær regresjon kan begge fungere; vi velger ut fra datastørrelse, maskinvare og ønsket stabilitet.
FIGÉn treningsløkke for gradient descent
Stopp før du lærer støyen
En treningsløkke trenger et stoppkriterium. Vi kan stoppe etter et fast antall epoker, når gradientnormen er liten, eller når valideringstapet ikke forbedres. Siste variant kalles tidlig stopping og skiller mellom optimalisering av treningstap og generalisering til nye data.
Treningstap vil ofte fortsette ned selv etter at valideringstapet begynner å stige. Da lærer modellen detaljer som ikke overføres. For en enkel lineær modell er kapasiteten begrenset, men mange features, polynomledd eller svak datakvalitet kan fortsatt skape overtilpasning.
En god implementasjon lagrer både parametere og preprocessing-statistikk. Prediksjon på nye data må bruke nøyaktig samme feature-rekkefølge, skalering og enheter som under trening. En korrekt optimalisert modell over feil datakontrakt gir fortsatt feil svar.
Det finnes også en direkte algebraisk løsning for vanlig lineær regresjon når matrisene er små og veloppførte. Gradient descent er likevel viktig fordi samme treningsmønster skalerer til store datasett og modeller uten en praktisk lukket løsning. Den lar oss dessuten bruke minibatcher og løpende data. Valget står derfor ikke mellom en «riktig» og en «omtrentlig» metode, men mellom beregningsstrategier med ulike krav til minne, tid og numerisk stabilitet.
Hvis to features nesten beskriver det samme, kan mange vektkombinasjoner gi lignende prediksjoner. Da kan enkeltvektene bli ustabile selv om prediksjonsfeilen er lav. Regularisering kan senere brukes til å foretrekke mindre eller enklere parameterverdier. Før det bør du kontrollere datakvalitet og korrelasjon: optimalisering kan finne et minimum uten å gjøre parameterfortolkningen pålitelig.
Slik regner du på eksamen
Ved en håndberegning bør du holde rekkefølgen fast: beregn prediksjoner, finn residualer, beregn tap, deriver med hensyn på hver parameter, og bruk oppdateringsregelen én gang. Skriv fortegnet eksplisitt. Mange feil oppstår når residualen defineres som y−y^ i én linje og som y^−y i gradienten uten at fortegnet justeres.
Kontroller svaret med retning: hvis modellen predikerer for lavt for positive x-verdier, bør vekten vanligvis øke. Kontroller også dimensjonene: gradienten til w må ha samme form som w, mens gradienten til bias er en skalar. Disse kontrollene fanger feil før du trenger å stole på et desimaltall.
Lineær regresjon viser hele maskinlæringssløyfen i liten skala: en modell gjør prediksjoner, en tapsfunksjon måler avvik, en gradient peker mot endring, og en evaluator tester generalisering. Senere modeller endrer funksjonsformen og tapet, men denne grunnrytmen består.
Mine notater
Skriv egne notater for dette kapittelet. De lagres automatisk og dukker opp i «Mine notater»-oversikten paa fag-siden.