Ebben az alfejezetben két, gyakran összemosott mennyiséget választunk szét: azt a hibát, amelyet a modell a véges tanítómintán mutat, és azt, amelyet a teljes adateloszláson várunk. Az olvasó az 5.2. Várható érték, variancia és likelihood alfejezetből ismeri a várható értéket, az 5.4. Függő képek, seedek és resampling alfejezetből a független és azonos eloszlású mintavételt, a 7.1. Entrópia, cross-entropy és KL alfejezetből pedig a loss fogalmát; a 4.1. Függvény, határérték és derivált alfejezetben bevezetett függvénynyelvet most a modell mint hypothesis leírására használjuk. A 6.4. Momentum és adaptív optimizálók alfejezetben tárgyalt gradienslépés egy konkrét empirikus kockázat csökkentésére szolgál, ezért annak pontos definíciója előfeltétel.
Induló kérdés: egy osztályozó 0 hibát ér el a 240 képből álló tanítóhalmazon. Mennyit mondhatunk ebből arról a hibáról, amelyet a következő, még nem látott képen várunk? A rövid válasz: önmagában nagyon keveset; ezt formalizáljuk.
Legyen az inputtér és a célhalmaz . Képosztályozásban , a GlyphLab három orientációjára. Egy hypothesis (hipotézis) egy
függvény, a modell előrejelzési szabálya. A hipotézis lehet közvetlen osztálydöntés, de neurális háló esetén a háló először logitot számol, és a döntés
Itt a paraméterek összessége. A tanuló algoritmus egy hypothesis space-ból (hipotézisosztályból) választ; például egy rögzített architektúra összes lehetséges paraméterezése egy paraméterezett halmazt ad.
A megfigyelési pár oszlopvektor-jellegű absztrakt objektum; batchelt feldolgozásban , a JELOLESEK-ben rögzített NCHW, illetve int64 konvenció szerint.
Tegyük fel, hogy a megfigyelési párok egy valódi, ismeretlen együttes eloszlásból származnak. Legyen
egy korlátos loss, azaz a által adott előrejelzés hibája, ha a valódi cél . A population risk (populációs kockázat, általánosítási hiba) a modell várható hibája a teljes eloszláson:
A alsó index azt jelenti, hogy a várható értéket a együttes eloszlás szerint vesszük. A 0-1 loss esetén éppen a félreosztályozás valószínűsége, ezért . A korlát minden későbbi koncentrációs állításban explicit feltétel; a stabilan számított cross-entropy loss gyakorlatban véges, de elméletileg nem korlátos, ezért a tanuláselméleti állításokban általában a 0-1 loss-t használjuk célmetrikaként, míg a gradienses tanítás a surrogate, például cross-entropy célt minimalizálja.
A populációs kockázat nem ismert, mert -t nem ismerjük. Ennek ellenére ez az a mennyiség, amelyet a modell használatakor szeretnénk kicsinek; a tanítás során csak egy véges mintát látunk.
Legyen
egy elemű tanítóminta. Az empirical risk (empirikus kockázat, tanítóhiba) a mintaátlag:
Ez a populációs kockázat mintából számított becslője; a 7.4. Numerikus stabilitás és jelentésmegőrző
implementáció alfejezetben tárgyalt stabil loss-implementáció ezt az
átlagot számolja. A PyTorch CrossEntropyLoss
alapértelmezett reduction='mean' módja a batchre éppen a
fenti átlagot adja; a reduction='sum' a
tagot.
Ha elemei függetlenek és azonos eloszlásúak, akkor az empirikus kockázat torzítatlan becslője a populációs kockázatnak. Valóban, a várható érték linearitása és az azonos eloszlás miatt
A torzítatlanság azonban nem jelenti azt, hogy egy konkrét mintán a kettő közel van egymáshoz; ehhez koncentrációs állítás kell.
Azt mondjuk, hogy az minta iid (independent and identically distributed), ha az párok függetlenek, és mindegyikük eloszlása . A GlyphLab szerződésben a független mintavételi egység a scene_id: ha egy jelenet két nézete is bekerül a mintába, a képek nem függetlenek, ezért a jelenetek számát kell a minta effektív méretének tekinteni. A jeleneten belüli korreláció és a jelenetalapú bootstrap elemzése az 5.4. Függő képek, seedek és resampling alfejezetben szerepel.
A felhasznált koncentrációs állítás a Hoeffding-korlát. Kimondjuk az általános alakot, amely független, de nem feltétlenül azonos eloszlású változókra is érvényes.
Tétel (Hoeffding, [P27] alapján). Legyenek független valószínűségi változók, ahol majdnem biztosan minden -re, és legyen . Ekkor minden esetén
és ugyanez az ellenkező irányú eltérésre is teljesül. A két irányt uniókorláttal összevonva
Bizonyítási háttér. A koncentrációs egyenlőtlenség átvett tétel [P27], amelynek teljes bizonyítását itt nem vezetjük le. A 8.2. Véges hipotézisosztály egyenletes korlátja alfejezet a tételt felhasználva, önálló uniókorlátos levezetéssel építi fel a véges hipotézisosztály egyenletes korlátját.
A kockázatbecslésre alkalmazva legyen egy rögzített esetén. Ekkor és . Ha a loss a intervallumba esik, például 0-1 loss esetén, akkor minden -re, tehát
Ez a következmény csak egyetlen, a mintavétel előtt rögzített -ra érvényes. Ha a -t ugyanabból a mintából választjuk, mint amelyen a hibát mérjük, az változók már nem függetlenek a választástól, és a fenti korlát nem alkalmazható. Ez a megkülönböztetés motiválja a 8.2. Véges hipotézisosztály egyenletes korlátja uniókorlátját.
A baseline olyan egyszerű referenciahipotézis, amelyhez a modell teljesítményét hasonlítjuk, és amely nem használ bonyolult tanulást. Gyakori változatok:
A baseline populációs kockázatánál a modellnek jobbnak kell lennie ahhoz, hogy azt állíthassuk, a modell megtanult valamit az adatról. A GlyphLab három kiegyensúlyozott osztályán a tanító gyakorisági baseline empirikus hibája körülbelül , ezért egy 0.5 hibájú modell sem feltétlenül jó. A baseline és a modell összehasonlításának statisztikai korrektségéhez ugyanazt a splitet és ugyanazt a megfigyelési egységet kell használni.
Azt mondjuk, hogy distribution shift áll fenn, ha a tanító- és a felhasználási eloszlás különbözik: . A populációs kockázat mindig az adott használati eloszlásra vonatkozik; a tanító eloszláson kicsi nem garantál kicsi kockázatot a shiftelt eloszláson. Három gyakori eset:
A GlyphLab corrupted_test.npy tesztje a rögzített tiszta
tesztképekhez képest hozzáadott zajt és fényességgradienst tartalmaz; ez
egy ellenőrzött, címkézett covariate-shift-szerű próba. A két teszt
ugyanazon scene/view párokat használja, ezért összevetésük páros. A
shiftelt tesztet kizárólag a végleges modell kiválasztása után
értékeljük, és abból nem választunk hiperparamétert.
Legyen , , a valódi együttes eloszlás pedig az alábbi táblázat szerinti.
| 0.2 | |
| 0.1 | |
| 0.3 | |
| 0.2 | |
| 0.1 | |
| 0.1 |
Az eloszlás összege . Tekintsük a
hipotézist és a 0-1 losst. A populációs kockázat a hibás cellák valószínűségeinek összege:
Legyen most egy elemű iid minta
A lossértékek rendre , tehát
A megfigyelt eltérés . A Hoeffding-következmény szerint mellett a felső korlát
amely triviális, hiszen valószínűség nem lehet 1-nél nagyobb. Az választással
Tehát 0.5-nél nagyobb eltérés valószínűsége legfeljebb 0.164; a megfigyelt 0.1 eltérés konzisztens ezzel. A példa azt is mutatja, hogy kis -nél a korlát nagyon gyenge, és csak nagy mintán válik informatívvá.
A labor egy kontrollált szintetikus feladaton rajzolja meg a tanító- és teszthibát több tanítóminta-méretre. A feladat egydimenziós: és
A Bayes-osztályozó , és a Bayes-kockázat . A modell egy küszöbösztályozó , ahol -t a tanítóminta 0-1 hibájának minimalizálásával választjuk. Ez egy tanuló algoritmus: az empirikus kockázat minimalizálása a küszöbök véges jelölthalmazán. A populációs kockázatot egy nagy, független elemű mintán közelítjük.
Munkakönyvtár: lab/. Futtatási parancs:
python n029_simulation.py. A kód CPU-n fut, NumPy float64
alapértelmezéssel; GPU nem szükséges.
# lab/n029_simulation.py
import numpy as np
rng = np.random.default_rng(20261020)
def p_y1(x: np.ndarray) -> np.ndarray:
return 1.0 / (1.0 + np.exp(-2.0 * x))
def sample(n: int, rng: np.random.Generator):
x = rng.uniform(-2.0, 2.0, size=n)
y = (rng.random(size=n) < p_y1(x)).astype(np.int64)
return x, y
def loss01(yhat: np.ndarray, y: np.ndarray) -> float:
return float(np.mean(yhat != y))
def best_threshold(x: np.ndarray, y: np.ndarray):
order = np.argsort(x)
xs, ys = x[order], y[order]
best_t = -np.inf
best_loss = float(np.mean(ys == 0)) # mindent 1-nek mondunk
loss_all0 = float(np.mean(ys == 1)) # mindent 0-nak mondunk
if loss_all0 < best_loss:
best_loss = loss_all0
best_t = np.inf
for i in range(len(xs) - 1):
t = 0.5 * (xs[i] + xs[i + 1])
yhat = (xs > t).astype(np.int64)
l = float(np.mean(yhat != ys))
if l < best_loss:
best_loss = l
best_t = t
return best_t, best_loss
sizes = [10, 20, 50, 100, 200, 500]
reps = 200
Xtest, ytest = sample(20_000, rng)
bayes_risk_est = float(np.mean(np.minimum(p_y1(Xtest), 1.0 - p_y1(Xtest))))
print(f"bayes_risk_est = {bayes_risk_est:.4f}")
for n in sizes:
train_errs = []
test_errs = []
for _ in range(reps):
Xtr, ytr = sample(n, rng)
t, _ = best_threshold(Xtr, ytr)
yhat_tr = (Xtr > t).astype(np.int64)
yhat_te = (Xtest > t).astype(np.int64)
train_errs.append(loss01(yhat_tr, ytr))
test_errs.append(loss01(yhat_te, ytest))
print(f"N={n:4d} train_err={np.mean(train_errs):.4f} "
f"test_err={np.mean(test_errs):.4f} "
f"test_sd={np.std(test_errs):.4f}")Szemléltető eredményértelmezés, nem mért futás. A
számok a seed mellett várható szemléltető mintázatot jelölik; tényleges
értéküket önálló futtatás igazolhatja. Azt várjuk, hogy a
train_err általában kisebb, mint a test_err,
és a rés
növekedésével csökken; a test_err a
bayes_risk_est környékére konvergál. A
train_err azért optimista, mert a
küszöböt ugyanazon a mintán illesztettük, amelyen a hibát számoljuk. A
Hoeffding-korlát ebben a laborban nem érvényes szigorúan a train-test
résre, mert a hypothesis a tanítómintától függ; az adaptív választás
kezelését a következő alfejezet adja.
F1 — fogalmi, nehézség 1. Előfeltétel: a fenti definíciók. Magyarázd el saját szavakkal, miért nem következik a megfigyelésből az, hogy . Adj egy konkrét kis ellenpéldát a kézi példa eloszlásán. Átadandó: legfeljebb fél oldalas magyarázat és a hipotézis, a hozzá tartozó és értékekkel.
F2 — levezetési, nehézség 2. Előfeltétel: a várható érték linearitása. Vezesd le lépésről lépésre a torzítatlansági egyenlőséget -re, és nevezd meg pontosan, melyik lépés használja az azonos eloszlást, és melyik a függetlenséget. Átadandó: a három egyenlőségből álló levezetés, minden lépés indoklásával.
F3 — implementációs, nehézség 1. Előfeltétel: a labor kódja. Egészítsd ki a labor ciklusát úgy, hogy minden -re kiírja a Hoeffding-korlát értékét mellett, és a 200 ismétlésből becsült annak a relatív gyakoriságát, hogy a train_errtest_err eltérés legalább . Átadandó: a módosított kód és a futtatási parancs, valamint annak indoklása, miért nem értelmezhető ez a gyakoriság a Hoeffding-korlát érvényességének ellenőrzéseként az adaptív küszöbválasztás miatt.
F4 — hibakeresési, nehézség 2. Előfeltétel: a labor kódja. Tekintsd az alábbi módosítást:
Xall = np.concatenate([Xtr, Xtest])
yall = np.concatenate([ytr, ytest])
t, _ = best_threshold(Xall, yall)
yhat_te = (Xtest > t).astype(np.int64)
test_errs.append(loss01(yhat_te, ytest))Mi a hiba, mi a következménye a train/test összehasonlításra, és hogyan javítanád? Átadandó: a hiba oka, következménye, a javított kódrészlet és az ellenőrzés módja.
F5 — kísérlettervezési/transzfer, nehézség 2. Előfeltétel: a distribution shift definíciója. Tervezz szimulációs kísérletet arra a kérdésre, hogy a tanító eloszláson tanított küszöbosztályozó hibája nő-e, ha a teszt eloszlását -re, a feltételes eloszlást változatlanul hagyva toljuk el. Adj protokollt, baseline-t, metrikát és következtetési határt. Átadandó: egy lehetséges terv a fenti elemekkel, a szimuláció mint megfigyelési egységével, legalább 200 ismétléssel.
F1. Az empirikus kockázat egyetlen véges mintán vett átlag, a populációs kockázat az egész eloszláson vett várható érték. A csak azt jelenti, hogy a modell a mintaelemeket helyesen osztályozza. Olyan eloszláson, ahol pozitív valószínűséget ad más celláknak, létezhet olyan , amely a mintán tökéletes, de a populációs kockázata pozitív. A kézi példa eloszlásán legyen
és a minta . Ekkor , mert mind az öt elemet eltalálja, de
mert a bemenetű 0 címkéjű eseteket és az bemenetű 1 címkéjű eseteket hibázza. Az ellenőrzés: az öt mintaelem mindegyikére , a populációs összeg a három hibás cella valószínűsége.
F2. Legyen . A definícióból
Az első egyenlőség a definíció, a második a várható érték linearitása; ez csak az összeg tagjainak véges voltát használja. Az azonos eloszlás miatt minden -re , mert minden pár eloszlása ugyanaz a . Tehát
A függetlenséget ez a levezetés nem használja; a torzítatlansághoz elegendő az azonos eloszlás, a függetlenség a koncentrációs állításhoz kell. Alakellenőrzés: skalár, a várható értéke skalár, a jobb oldal ; a loss miatt a várható érték véges.
F3. A ciklus belsejébe illeszthető:
eps = 0.05
bound = 2.0 * np.exp(-2.0 * n * eps**2)
exceed = float(np.mean(np.abs(np.array(train_errs) - np.array(test_errs)) >= eps))
print(f"N={n:4d} Hoeffding_bound={bound:.4f} excess_freq={exceed:.4f}")A futtatás parancsa változatlan:
python n029_simulation.py. A korlát egy rögzített
-ra
vonatkozó állítás; itt a küszöböt a train mintából választjuk, ezért
a minta függvénye. Az excess_freq így nem a
Hoeffding-korlát ellenőrzése, hanem csak leíró statisztika az adaptív
választású hipotézis train-test eltéréséről. A korrekt egyenletes
állítás a 8.2. Véges hipotézisosztály egyenletes
korlátja alfejezetben következik véges
-ra.
F4. A hiba az, hogy a küszöböt a train és a test
minta egyesített halmazán választjuk. Ennek következménye, hogy a test
adat befolyásolja a modellt, ezért a test_err már nem egy
előre nem látott mintán mért hiba: optimistán torzított, és nem méri az
általánosítást. A javítás az, hogy a küszöböt kizárólag a train mintán
kell választani, és a test mintát csak a választás után, egyszer
kiértékelni. A javított kód eredeti formája a laborban szerepel; a
Xall/yall összefűzést törölni kell. Az
ellenőrzés: ugyanazon seed mellett a javított test_err
várhatóan nagyobb, mint a hibás változaté, mert utóbbi a test mintából
is tanul.
F5. Egy lehetséges terv. Kérdés: a tanító eloszláson tanított küszöb hibája nő-e a shiftelt teszteloszláson? Adat: a tanító minták a labor generátorából, ; a shiftelt teszt , ugyanazzal a feltételes eloszlással. Megfigyelési egység: egy független minta; a shiftelt teszt egy nagy, független elemű minta. Split: a tanítóminta mérete , 200 ismétlés. Baseline: a shiftelt tesztmintán a gyakorisági osztályozó hibája; mivel a shift miatt az 1 osztály aránya nagyobb lesz, a baseline hibája változik, ezért mindkét eloszlásra külön számítjuk. Tényező: shiftelt versus eredeti teszteloszlás. Metrika: 0-1 hiba a nagy tesztmintán. Eljárás: minden ismétlésben tanítsuk a küszöböt a train mintán, értékeljük ki az eredeti és a shiftelt tesztmintán, és számoljuk ki a két hiba átlagát és szórását a 200 ismétlésből. Következtetési határ: mivel a shiftet mesterségesen ismerjük, a hibakülönbség ok-okozatilag a shiftnek tulajdonítható, de valós adatokon a shift detektálása külön feladat; az eredmény nem termelési robusztussági igazolás.
Gyakori tévedés, hogy a tanítóhiba csökkenése önmagában az általánosítás javulása. Az F1 ellenpéldája ezt cáfolja: a hipotézis a mintán 0 hibát ér el, miközben populációs kockázata 0.5. A tanítóhiba csökkenése csak azt jelenti, hogy a modell egyre jobban illeszkedik a véges mintához; a populációs kockázat változásához a mintától független adaton vagy elméleti korláton keresztül kell bizonyítékot gyűjteni. A kettő összekeverése ahhoz a hibás következtetéshez vezet, hogy egy nagyobb kapacitású háló, amely a train hibát nullára csökkenti, automatikusan jobb modell.
Ellenőrizd, hogy meg tudod-e válaszolni az alábbiakat. Mi a és definíciója, és melyik ismert a gyakorlatban? Mi a Hoeffding-korlát három feltétele, és miért nem alkalmazható adaptív modellválasztásra? Mi a különbség covariate shift és label shift között? Ha a GlyphLab jeleneteiből képenként veszel iid mintát, milyen feltétel sérül az 5.4. Függő képek, seedek és resampling szerint?
Visszahívás: a loss fogalmát és a cross-entropy célfüggvényt a 7.1. Entrópia, cross-entropy és KL vezette be; itt a 0-1 loss mint célmetrika különül el a surrogate losstól. A 4.1. Függvény, határérték és derivált alfejezetben definiált függvény és paraméterezett függvénycsalád fogalma adja a hypothesis nyelvét; a gradienslépés a 6.4. Momentum és adaptív optimizálók alfejezetből egy empirikus kockázatot csökkentő eljárás.
A populációs kockázat a modell várható hibája a teljes, ismeretlen adateloszláson, az empirikus kockázat pedig ugyanezen loss véges tanítómintán vett átlaga. IID minta esetén az empirikus kockázat torzítatlan becslő, de egy konkrét mintán jelentősen eltérhet; a Hoeffding-korlát rögzített hipotézisre számszerűsíti az eltérés valószínűségét, adaptív modellválasztásra azonban nem érvényes. A baseline olyan egyszerű referencia, amelyhez a modellt viszonyítjuk; distribution shift esetén a tanító eloszláson mért jó kockázat nem garantálja a használati eloszláson mért jót. A labor szimulációja a train-test rést és annak mintaméret-függését szemlélteti.
A 8.2. Véges hipotézisosztály egyenletes korlátja alfejezetben a Hoeffding-korlátból uniókorláttal egyenletes, minden -ra egyszerre érvényes állítást vezetünk le véges hipotézisosztályra; ez adja az adaptív modellválasztás első korrekt hibakorlátját.