A veszteségfüggvény
Hogyan mérjük a modell hibáját, és hogyan irányítja ez a mérce a tanulást? A veszteség az a szám, amelyből a modell tanul, és amely nagyban meghatározza, mit tanul meg.
8 szint · kb. 4 óra · középhaladó. A lakásárbecsléstől a nagy nyelvi modellek finomhangolásáig. Minden szint három mélységben olvasható, és kvízzel zárul: a következő szint 3-ból 2 helyes válasszal nyílik meg.
Kezdés az 1. szintnél →Mielőtt elindulsz
A fenti kép egy veszteségtáj, mint egy turistatérkép szintvonalai. Ez az anyag azt magyarázza el, mi ez a „magasság”, ki határozza meg, és miért ezen múlik minden, amit egy modell megtanul.
A három mélységi réteg közül bármikor válthatsz. Az egyszerű réteg képlet nélkül, példákkal magyaráz. A matematika bevezeti a jelöléseket, és minden jelet megmagyaráz, amikor először előkerül. A kutatói szint a szakirodalomhoz köt. A kvízek az egyszerű és a matematikai rétegre épülnek. A kódrészletek olvasásra valók, soronként kommentálva.
Minden teljesített szint egy réteg. A haladásod csak ebben a böngészőben tárolódik.
Minden szint fel van oldva áttekintéshez. A kvízeredményeid megmaradnak.
Egy szám, ami megmondja, mennyit tévedtünk
Cél:megérteni, mi a veszteség, miért kell egyetlen számnak lennie, és hogy a mércét mi választjuk.
Egy modell megbecsüli egy lakás árát: 51,5 millió forint. A lakás végül 50 millióért kelt el. Mennyire jó ez a becslés?
Egy embernek elég annyi, hogy „kicsit sokat mondott”. Egy tanuló modellnek viszont egyetlen számra van szüksége, amely annál nagyobb, minél rosszabb a becslés. Csak így tudja eldönteni, hogy egy változtatás javított-e vagy rontott. Ez a szám a veszteség. A szabályt, amellyel az eltérésből kiszámoljuk, veszteségfüggvénynek hívjuk.
Miért nem jó maga az eltérés?
Az eltérés itt +1,5 millió forint. Ha a modell a következő lakásnál 1,5 millióval alábecsül, a két eltérés átlaga 0, mintha mindkét becslés pontos lett volna. Az előjeles eltérés tehát nem mérce, mert a túl- és az alábecslések kioltják egymást. Két szokásos megoldás van: vesszük az eltérés abszolút értékét (az előjelet eldobjuk), vagy a négyzetét (a négyzet sosem negatív).
Van egy harmadik, a hétköznapokban megszokott mérce is: a „talált vagy nem talált”. Mondjuk azt, hogy ±2 millión belül a becslés talált (veszteség 0), azon kívül tévedett (veszteség egy fix érték). Ez a mérce nem tesz különbséget az 50,1 és az 51,9 milliós becslés között, pedig az egyik szinte hibátlan, a másik a sáv szélén jár. A négyzetes mérce szerint már a kis eltérés is veszteség, csak kicsi, és az eltérés négyzetével nő.
Kísérlet: egy becslés, három mérce
A lakás valódi ára 50 millió forint. Húzd a csúszkát, és nézd, mekkora veszteséget ad a három mérce. Az eltérést sávegységben mérjük: 1 egység = 2 millió forint, vagyis a ±1 a „talált” sáv széle.
Figyeld meg, hol keresztezi egymást a kék és az arany görbe: pontosan a sáv szélén, ±1-nél. A sávon belül a négyzetes veszteség kisebb, mint az abszolút, kívül sokkal nagyobb. A négyzetes mérce tehát elnézi az apró hibákat, a nagyokat viszont keményen bünteti.
Kulcsgondolat. A veszteségfüggvény nem a modell része, hanem a mérce, amit mi választunk hozzá. Ugyanaz a modell más mércével mást tanul meg. Az egész anyag erről a mondatról szól.
Jelölések
A gépi tanulásban a helyes (valódi, elvárt) értéket y-nal jelöljük, a modell válaszát ŷ-nal („y kalap”). Az eltérés, más néven hiba vagy reziduum:
e = ŷ − y
A példában y = 50,0 millió forint a valódi eladási ár, ŷ = 51,5 a becslés, tehát e = +1,5 millió forint.
A két alapveszteség
Labs(ŷ, y) = |ŷ − y| Lnégyz(ŷ, y) = (ŷ − y)²
Az L betű az angol loss (veszteség) rövidítése. A függőleges vonal az abszolút érték: az előjelet dobja el, |−3| = 3 és |3| = 3. A négyzet szintén pozitívvá tesz mindent, de közben át is méretez: (−3)² = 9.
| Eltérés | |e| | e² | Mit jelent |
|---|---|---|---|
| 0,5 | 0,5 | 0,25 | kis hiba: a négyzet elnézőbb |
| 1 | 1 | 1 | a két mérce itt egyenlő |
| 2 | 2 | 4 | kétszeres hiba, négyszeres büntetés |
| 4 | 4 | 16 | a nagy hiba uralja a számítást |
Mértékegység. Ha az eltérés millió forintban van, a négyzetes veszteség (millió forint)²-ben. Ezért szokás a négyzetes veszteségek átlagából a végén gyököt vonni (RMSE, 2. szint): így az eredmény újra millió forintban olvasható. Ebből az is következik, hogy a „kis” és a „nagy” hiba határa a mértékegységtől függ. A kísérletben ezért sávegységben mértünk: így a két görbe éppen a sáv szélén metszi egymást.
valos_ar = 50.0 # a lakás tényleges eladási ára [millió Ft] becsult_ar = 51.5 # a modell becslése [millió Ft] sav = 2.0 # ± ennyin belül „talált” a becslés [millió Ft] e = becsult_ar - valos_ar # előjeles eltérés: +1.5 millió Ft abs_veszteseg = abs(e) # |e| = 1.5 millió Ft negyzetes_veszteseg = e ** 2 # e² = 2.25 (millió Ft)², figyelem: négyzetes mértékegység! # talált vagy nem: a sávon belül 0, kívül fix büntetés talalat_veszteseg = 0.0 if abs(e) <= sav else 1.0
Veszteség, költség, célfüggvény
A szakirodalom három szót használ, sokszor lazán. A veszteség (loss) szigorúan véve egyetlen példára vonatkozik. A költség vagy célfüggvény (cost, objective) az, amit ténylegesen optimalizálunk: általában a veszteségek átlaga a tanítóadaton, néha kiegészítve egy büntetőtaggal (7. szint). Az átlagot empirikus kockázatnak hívják:
R̂(θ) = 1n Σi L(fθ(xi), yi)
Itt θ a modell paraméterei, fθ maga a modell, xi az i-edik példa bemenete (például a lakás alapterülete és elhelyezkedése), yi a hozzá tartozó valódi érték. Amit valójában szeretnénk, az a várható kockázat: a veszteség átlaga az összes jövőbeli, még nem látott adaton. Ezt nem ismerjük, csak mintából becsüljük. A kettő közti rés a generalizáció kérdése, erről a 7. szint szól [6].
Döntéselméleti gyökerek
A veszteségfüggvény fogalma a statisztikai döntéselméletből jön. Wald megfogalmazásában minden becslés egy döntés, a veszteség pedig a rossz döntés ára [2]. Ez a nézőpont azért fontos, mert világossá teszi, hogy a veszteség értékítélet: azt kódolja, mennyibe kerül nekünk egy adott tévedés. A minőségügyben Taguchi ugyanezt a gondolatot fogalmazta meg: minőségi veszteségfüggvénye, L(y) = k(y − m)², már a céltól való kis eltérést is veszteségnek tekinti, a k állandó pedig pénzben fejezi ki az eltérést [1]. A gépi tanulás négyzetes vesztesége és ez a minőségi veszteség ugyanaz az ötlet.
Miért nem a „talált vagy nem” mércén tanítunk?
A 0/1 típusú (talált/nem talált) veszteség szinte mindenhol vízszintes: egy kis változtatás a paraméteren nem mozdítja az értékét. A 4. szinten kiderül, hogy a tanulás a veszteség meredekségéből tájékozódik, így ebből a mércéből nem kapna irányt. Ezért a gyakorlatban helyettesítő (surrogate) veszteségen tanítunk, amely használható irányt mutat, és csak a végén mérünk a számunkra fontos, de rosszul tanítható mércével.
Sok hibából egy szám: MSE és MAE
Cél:látni, hogy a veszteség megválasztása eldönti, melyik válasz lesz „a legjobb”, és hogy az átlag, illetve a medián honnan jön.
Egy lakás helyett most hét hasonló lakás eladási árát ismered ugyanabból az utcából: 52, 48, 51, 53, 49, 50 és 52 millió forint. A kérdés: ha egyetlen számmal kellene megmondanod, mennyit ér egy lakás ebben az utcában, melyik szám lenne a legjobb? Ez a legegyszerűbb „modell”: egyetlen becslés, jelöljük c-vel.
Minden lakásra kiszámolod a veszteséget, aztán átlagolod. Ha a négyzetes veszteséget átlagolod, az az MSE (átlagos négyzetes hiba). Ha az abszolútat, az az MAE (átlagos abszolút hiba). A legjobb c az, amelyiknél ez az átlag a legkisebb.
Kísérlet: melyik szám írja le legjobban az árakat?
Mozgasd a becslést, és figyeld, hol van a két görbe alja. Aztán kapcsold be a kiugró értéket: a hetedik lakás ára 90 millióként szerepel. Lehet, hogy valaki elírta, és lehet, hogy tényleg egy luxus tetőtéri lakás került a listára.
MSE(c), (millió Ft)²: a görbe alja az átlagnál van
MAE(c), millió Ft: a görbe alja a mediánnál van
Amit látnod kell: az MSE-görbe alja pontosan az átlagnál van, az MAE-görbéé a mediánnál (a sorba rendezett értékek középsőjénél). Kiugró érték nélkül a kettő szinte egybeesik: 50,7 és 51 millió. Ha bekapcsolod a 90 milliós árat, az átlag 56,1 millióra ugrik, a medián marad 51.
Melyik a jó? Ez nem matematikai, hanem szakmai kérdés. Ha a kiugró érték valódi (tényleg eladtak ott egy lakást 90 millióért, és a becslésnek az ilyenekre is fel kell készülnie), az MSE helyesen figyelmeztet rá. Ha elírás, az MAE-nek van igaza, mert nem hagyja magát elhúzni.
Kulcsgondolat. Nincs „semleges” veszteség. Az MSE-vel azt mondod, hogy a nagy hibák aránytalanul fontosak, az MAE-vel azt, hogy minden millió ugyanannyit ér. A két mérce más választ tart a legjobbnak.
A szumma jel
A Σ (nagy görög szigma) azt jelenti: add össze. A Σi=1n yi kiolvasva: „az yi értékek összege, ahol i 1-től n-ig fut”. Nálunk n = 7, az y1, …, y7 a hét eladási ár.
MSE(c) = 1n Σi (yi − c)² MAE(c) = 1n Σi |yi − c|
Miért pont az átlag minimalizálja az MSE-t?
Egy szép átrendezéssel, deriválás nélkül is látható. Jelölje ȳ az átlagot, s² pedig az árak szórásnégyzetét (az átlagtól vett eltérések négyzetének átlaga). Ekkor minden c-re igaz:
MSE(c) = (ȳ − c)² + s²
Az első tag azt méri, milyen messze van a becslés az átlagtól. Ez a becsléstől függ, és nulla, ha c = ȳ. A második tag, s², egyáltalán nem függ c-től: ez az árak saját szóródása. Ebből két dolog következik. Az MSE minimuma az átlagnál van, és a legkisebb elérhető érték maga a szórásnégyzet (a hét árnál kb. 2,78 (millió Ft)²). Egyetlen állandó becslés sem lehet ennél jobb: ennél a modellnél ezt a részt az árak ingadozása okozza, nem a becslés. Ez a korlát a választott modellre vonatkozik: ha a modell az alapterületet vagy a lakás állapotát is látja, az ingadozás egy része megmagyarázható, és a hiba csökkenhet. Irreducibilis hibának csak azt a bizonytalanságot nevezzük, amely az adott bemeneti információ mellett is megmarad.
És miért a medián az MAE-t?
Toljuk c-t egy hajszálnyival jobbra. Minden olyan árnál, amely c alatt van, a távolság nő, minden felette lévőnél csökken, mindegyiknél ugyanannyival. Ha több ár van alatta, mint felette, a mozgatás rontott. Ha kevesebb, javított. A mérleg akkor áll egyensúlyban, amikor ugyanannyi ár van alatta, mint felette: ez a medián. A kiugró érték ezért nem húzza el: az MAE-nek csak az számít, hogy egy ár melyik oldalon van, az nem, hogy milyen messze.
RMSE. Az MSE (millió Ft)²-ben van. A gyöke, RMSE = √MSE, újra millió forintban olvasható, és ha a becslés az átlag, pontosan a szórást adja (itt kb. 1,67 millió Ft). A kettőnek ugyanott van a minimuma, mert a gyökvonás nem változtat a minimum helyén. A gradiensük viszont különbözik, ezért ugyanazzal az optimalizálóval és lépésközzel a tanulás menete eltérhet. Az RMSE főleg a jelentésben hasznos.
y = np.array([52, 48, 51, 53, 49, 50, 52]) # hét eladott lakás ára [millió Ft]
def mse(c): # átlagos négyzetes hiba egy "c" becslésre
return np.mean((y - c) ** 2)
def mae(c): # átlagos abszolút hiba
return np.mean(np.abs(y - c))
print(y.mean(), mse(y.mean())) # 50.71...: az átlagnál a legkisebb az MSE
print(np.median(y), mae(np.median(y))) # 51.0: a mediánnál a legkisebb az MAE
print(np.var(y)) # = mse(y.mean()): ennél lejjebb nem lehet menni
Legendre, Gauss és a legkisebb négyzetek
A négyzetes hiba minimalizálását Legendre publikálta először 1805-ben, üstököspályák számításához [3]. Gauss 1809-ben valószínűségi indoklást adott hozzá: ha a mérési hibák normális (Gauss-) eloszlásúak, a legkisebb négyzetes becslés a legvalószínűbb [4]. Ez a kapcsolat a 6. szint központi gondolata. Az abszolút eltérések minimalizálása még régebbi, de sokáig háttérbe szorult, mert az abszolút érték a nullában nem deriválható, és kézzel sokkal nehezebb vele számolni.
Robusztusság és a Huber-veszteség
A törési pont (breakdown point) azt mondja meg, az adatok mekkora hányadát kell tetszőlegesen elrontani ahhoz, hogy a becslés tetszőlegesen elszálljon. Az átlagé 0 (elég egyetlen rossz adat, ha elég rossz), a mediáné 50%. Huber 1964-ben a két világ ötvözetét javasolta [5]: kis hibánál négyzetes, nagynál lineáris veszteséget.
Lδ(e) = ½ e², ha |e| ≤ δ; Lδ(e) = δ(|e| − ½δ), ha |e| > δ
A δ küszöb szakmai döntés: meddig hiszünk a hibának, és honnan kezdjük gyanúsnak tartani. A mély tanulásban ennek egy változata a smooth L1 veszteség, amelyet például objektumdetektorok dobozkoordinátáinak regressziójára használnak.
A felbontás általánosan
Az MSE(c) = (ȳ − c)² + s² azonosság a torzítás–variancia felbontás legegyszerűbb esete. A tanult modelleknél a várható négyzetes hiba három részre bomlik: torzítás² + variancia + irreducibilis zaj [6]. A 7. szinten ez visszatér a túlillesztésnél.
A veszteségtáj: a paraméterek térképe
Cél:megérteni, hogy a tanulás egy táj legmélyebb pontjának keresése, és hogy ezt a tájat az adatok, a modell és a veszteség együtt adják.
Eddig egyetlen számot becsültünk. Most legyen egy igazi modell. Nyolc különböző méretű lakás eladási árát ismerjük, és a modell az alapterületből jósolja az árat: ár = w · alapterület. A w a négyzetméterár, a modell egyetlen paramétere, ezt kell megtanulni az adatokból.
Hogy kerek számokkal számolhassunk, az alapterületet tíz négyzetméterben mérjük: a 2 jelentése 20 m², a 16 jelentése 160 m². Ez nem csak kényelem: a 4. szinten kiderül, hogy a mértékegység még azt is befolyásolja, mekkorát szabad lépni tanulás közben.
Minden lehetséges w-hez tartozik egy egyenes, és minden egyeneshez egy MSE. Ha minden w-re kiszámolod az MSE-t, és felrajzolod, kapsz egy görbét. Ez a veszteségtáj. A tanulás nem más, mint ennek a tájnak a legmélyebb pontját megkeresni.
Kísérlet: egy paraméter, egy táj
Bal oldalon a nyolc lakás és a modell egyenese, pirossal a hibák. Jobb oldalon ugyanez a helyzet a veszteségtájon, egyetlen pontként.
Adat és modell: alapterület (10 m²) – ár (millió Ft)
Veszteségtáj: MSE a w függvényében
Két paraméternél (például ha a modell ár = w · alapterület + b, vagyis egy alapárat is tanul, amely nem függ a mérettől) a táj már felület, mint a lap tetején lévő szintvonalas térkép. Egy neurális hálónak milliónyi vagy milliárdnyi paramétere van, így a tája ennyi dimenziós. Ezt senki nem látja. Az algoritmus sem látja: csak azt érzékeli, merre lejt a talaj ott, ahol éppen áll. Erről szól a 4. szint.
Kulcsgondolat. A veszteségtáj alakját az adatok, a modell (milyen függvényeket tud felvenni) és a választott veszteségfüggvény (mit tartunk rossznak) együtt határozzák meg; az optimalizáló pedig azt szabályozza, hogyan haladunk ezen a tájon. Ha az adatokat, a modellt vagy a veszteségfüggvényt módosítod, megváltozhat a veszteségtáj és a minimum helye is.
A táj képlete
A modell jóslata az i-edik lakásra ŷi = w · xi, ahol xi az alapterület, yi a valódi eladási ár. A veszteségtáj:
L(w) = 1n Σi (w xi − yi)²
Ha a zárójelet kibontjuk, és a felülvonással az átlagot jelöljük:
L(w) = x² · w² − 2 · xy · w + y²
Ez egy közönséges másodfokú függvény w-ben, vagyis felfelé nyíló parabola. A parabola csúcsa (a minimum) a középiskolából ismert −b/(2a) képlettel adódik:
w* = Σ xi yiΣ xi²
Az adatainkkal Σ xiyi = 4888 és Σ xi² = 816, így w* ≈ 5,99 millió forint tíz négyzetméterenként, vagyis kb. 599 ezer Ft/m². Ezt nem kellett keresgélni: ennél az egyszerű esetnél a legmélyebb pont zárt képlettel kiszámolható.
Két paraméter
Ha a modell ŷ = w·x + b, a táj L(w, b) egy kétváltozós felület: egy elliptikus tál. A szintvonalai ellipszisek. Az ellipszis lapultsága azt mutatja, hogy a két irányban mennyire eltérő a meredekség, és a 4. szinten kiderül, hogy ez lassítja a keresést.
terulet = np.array([2, 4, 6, 8, 10, 12, 14, 16]) # alapterület [10 m²]: 20–160 m²
ar = np.array([13.5, 22, 38.5, 47, 63, 69.5, 85, 94.5]) # eladási ár [millió Ft]
def L(w): # a veszteségtáj egy paraméterre
return np.mean((w * terulet - ar) ** 2)
ws = np.linspace(0, 12, 241) # végigpásztázzuk a lehetséges w-ket
taj = [L(w) for w in ws] # ez a görbe maga a "táj"
w_opt = np.sum(terulet * ar) / np.sum(terulet ** 2) # zárt alakú minimum (a parabola csúcsa)
print(round(w_opt, 2)) # ≈ 5.99 millió Ft / 10 m²
Konvex és nem konvex tájak
Egy függvény konvex, ha bármely két pontját összekötő szakasz a görbe felett halad. Egy konvex tájnak nincs „álvölgye”: minden lokális minimum egyben globális. A lineáris modell MSE-vel mindig konvex, ezért tudtunk zárt képletet adni. Amint a modellben nemlineáris rétegek jelennek meg (egy neurális háló aktivációs függvényei), a táj általában nem konvex [6].
Mi van egy magas dimenziós tájon?
A régi félelem az volt, hogy a gradiens-módszer rossz lokális minimumokban ragad. Dauphin és munkatársai amellett érveltek, hogy nagy dimenzióban a kritikus pontok (ahol a lejtő nulla) túlnyomó többsége nyeregpont: bizonyos irányokban lefelé, másokban felfelé görbül. Az igazi akadály ezért inkább a nyeregpontok körüli lelassulás [7]. Li és munkatársai a táj alacsony dimenziós metszeteit vizualizálták, és azt találták, hogy az architektúra (például a reziduális kapcsolatok) jelentősen simábbá teheti a tájat [8].
Lapos és éles minimumok
Egy régóta vizsgált hipotézis szerint a lapos, széles völgyekbe érkező megoldások jobban általánosítanak, mint az éles, keskeny völgyekbe érkezők. Keskar és munkatársai ezzel magyarázták, hogy a nagyon nagy minibatch-ekkel tanított hálók gyengébben teljesítenek új adaton [9]. A hipotézis vitatott, mert az élesség függ a paraméterezéstől: ugyanaz a függvény átparaméterezve élesebb minimumba kerülhet, anélkül hogy az általánosítása változna [39]. Jó példa viszont arra, hogy nem csak a völgy mélysége számít, hanem az alakja is.
Lejtőn lefelé: a gradiens-módszer
Cél:megérteni, hogyan találja meg az algoritmus a völgy alját, amikor nem látja a tájat, és miért kritikus a lépésköz.
Képzeld el, hogy sűrű ködben állsz egy domboldalon, és le kell jutnod a völgybe. A völgyet nem látod, de a talpadon érzed, merre lejt a talaj. A legjobb stratégia: lépj egyet a lejtés irányába, aztán újra tapogasd ki, merre lejt, és lépj megint. Ez a gradiens-módszer. A gradiens azt mutatja meg, merre nőne leggyorsabban a veszteség, és milyen meredeken; a módszer ezért az ellenkező irányba, lefelé lép.
Egyetlen fontos döntés marad: mekkorát lépj. Ez a tanulási ráta. Ha túl kicsit, évekig tart leérni. Ha túl nagyot, átlépsz a völgy felett a túloldalra, és ha nagyon nagyot, minden lépéssel egyre magasabbra jutsz: az algoritmus „szétszáll”.
Kísérlet: találd meg a jó lépésközt
Ugyanaz a táj, mint a 3. szinten: a négyzetméterár keresése. Állítsd be a tanulási rátát, és lépkedj. Próbáld ki a 0,003-at, a 0,009-et és a 0,011-et.
A lépések a veszteségtájon
Egy neurális hálóban ugyanez történik, csak nem egy, hanem millió paraméterrel egyszerre. Minden paraméterre kiszámolják, mennyire változna a veszteség, ha azt a paramétert kicsit megmozdítanánk (ez a gradiens), és mindegyiket egy kicsit abba az irányba mozdítják, amerre a veszteség csökken. A gradienst hatékonyan a visszaterjesztés (backpropagation) számolja ki; a paramétereket pedig az optimalizáló módosítja.
Kulcsgondolat. A tanuló algoritmus csak a veszteség meredekségét érzékeli. Ezért olyan veszteség kell, amely használható irányjelzést ad a paraméterek módosításához. Néhány nem deriválható pont (mint az abszolút érték vagy a ReLU törése) kezelhető; a „talált vagy nem” mércén viszont nem lehet közvetlenül tanítani, mert szinte mindenhol vízszintes, és nem mutat irányt.
A derivált mint meredekség
A L′(w) derivált azt mondja meg, mennyit változik a veszteség, ha w-t egy nagyon kicsit megnöveljük. Közelítőleg:
L′(w) ≈ L(w + h) − L(w)h, ahol h nagyon kicsi
Ha L′(w) pozitív, a táj jobbra emelkedik, tehát balra kell lépni, és fordítva. Ezt a lépésszabály egy sorban kifejezi:
wúj = w − η · L′(w)
A mi tájunkra a derivált: L′(w) = (2/n) Σi xi(w xi − yi). Minden lakás a saját hibájával (w xi − yi) arányosan húzza a paramétert, súlyozva az alapterületével.
Mikor konvergál? Egy sorban levezetve
Parabolánál a derivált egyenes: L′(w) = L″ · (w − w*), ahol L″ a görbület, nálunk L″ = 2 · x² = 2 · 102 = 204. Behelyettesítve a lépésszabályba:
wúj − w* = (1 − η L″) · (w − w*)
A minimumtól mért távolság minden lépésben a q = 1 − ηL″ szorzóval szorzódik. Ebből három eset adódik:
- Ha 0 < q < 1, vagyis η < 1/L″ ≈ 0,0049: a távolság egyenletesen csökken, mindig ugyanarról az oldalról közelítünk.
- Ha −1 < q < 0, vagyis 0,0049 < η < 2/L″ ≈ 0,0098: minden lépés átugrik a túloldalra, de egyre közelebb. Oszcillálva konvergál.
- Ha q < −1, vagyis η > 0,0098: a távolság minden lépéssel nő. Szétszáll.
A tanulság általános: a legnagyobb biztonságos lépésköz a táj görbületétől függ. Egy meredek falú völgyben kicsit kell lépni. És mivel L″ = 2 · x², a görbület a bemenet mértékegységétől is függ: ha az alapterületet négyzetméterben mérnénk, L″ százszor nagyobb lenne, és százszor kisebb lépésköz kellene. Ezért szokás a bemeneteket tanítás előtt hasonló nagyságrendűre skálázni.
Több paraméter: a gradiens vektor
Sok paraméternél minden paraméter szerint külön deriválunk (ezek a parciális deriváltak, jelük ∂), és ezeket egy vektorba gyűjtjük. Ez a gradiens, jele ∇L. A lépésszabály ugyanaz, csak vektorokkal: θúj = θ − η ∇L(θ).
w = 0.0 # kiinduló tipp
eta = 0.003 # tanulási ráta (lépésköz)
for k in range(50):
maradek = w * terulet - ar # reziduumok: jóslat mínusz valódi ár
grad = 2 * np.mean(terulet * maradek) # L'(w): a lejtő meredeksége
w = w - eta * grad # lépés a lejtővel SZEMBEN
print(w) # közel 5.99-hez
Sztochasztikus gradiens
Egy nagy adathalmazon a teljes gradienst minden lépésben kiszámolni túl drága. A sztochasztikus gradiens-módszer (SGD) minden lépésben csak egy véletlen kis részhalmazon (minibatch) számol. Ez a gradiens zajos, de torzítatlan becslése. Robbins és Monro 1951-es sztochasztikus approximációs eredménye adja a konvergencia elméleti alapját, megfelelően csökkenő lépésközzel [10]. A zajnak gyakorlati haszna is lehet, mert segít kimozdulni a nyeregpontok környékéről.
Visszaterjesztés
Egy többrétegű hálóban a veszteség a paraméterek összetett függvénye. A láncszabály segítségével a gradiens a kimenettől visszafelé, rétegről rétegre számolható, nagyjából egy előreszámítás költségén. Rumelhart, Hinton és Williams 1986-os cikke tette ezt a módszert a neurális hálók tanításának standard eszközévé [11]. A modern keretrendszerek (PyTorch, JAX) ezt automatikusan végzik:
import torch
w = torch.tensor(0.0, requires_grad=True) # a paraméter, amelynek gradiensét követjük
opt = torch.optim.SGD([w], lr=0.003) # sima gradiens-módszer
x = torch.tensor(terulet, dtype=torch.float32)
y = torch.tensor(ar, dtype=torch.float32)
for k in range(50):
loss = torch.mean((w * x - y) ** 2) # ugyanaz az MSE, mint fent
opt.zero_grad() # az előző lépés gradiensének törlése
loss.backward() # visszaterjesztés: kiszámolja dL/dw-t
opt.step() # w ← w − lr · grad
Lendület és adaptív módszerek
Egy lapos, elnyújtott völgyben (ahol az egyik irányban sokkal nagyobb a görbület, mint a másikban) a sima gradiens-módszer cikcakkozik: a meredek irányhoz kell igazítani a lépésközt, a lapos irányban így alig halad. A lendület (momentum) a korábbi lépések irányát átlagolja, így kisimítja a cikcakkot. Az Adam paraméterenként skálázza a lépést a gradiens korábbi nagysága szerint [12], ezért a mai mély tanulás egyik alapértelmezett optimalizálója.
Osztályozás: valószínűség és keresztentrópia
Cél:megérteni, milyen veszteséggel tanul egy osztályozó, és miért a magabiztos tévedés a legdrágább.
Eddig számot jósoltunk (lakásárat). Sok feladatban viszont kategóriát kell választani. Egy levélszűrőnek egy beérkező e-mail alapján azt kell eldöntenie, hogy a levél rendes levél, reklám vagy adathalász (csaló) levél. Itt nincs értelme „0,3 millió forintot tévedni”. Ehelyett a modell valószínűségeket ad: például 20% rendes, 70% reklám, 10% adathalász.
A modell belül először nyers pontszámokat számol, egyet minden osztályra. Ezek a logitok, és bármilyen valós számok lehetnek. A softmax nevű lépés alakítja őket valószínűségekké: mindegyik 0 és 1 közé kerül, és az összegük 1 lesz. A nagyobb pontszám nagyobb valószínűséget kap.
A veszteség: mennyire lepődik meg a modell
Ha a levél valójában reklám, a veszteség csak attól függ, mekkora valószínűséget adott a modell a reklámra. A keresztentrópia ezt így számolja: a helyes osztály valószínűségének negatív logaritmusa. A képlet mögötti érzés egyszerű:
| A helyes osztály valószínűsége | Veszteség | Értelmezés |
|---|---|---|
| 0,99 | 0,01 | biztos és igaza van: szinte nincs mit tanulni |
| 0,5 | 0,69 | bizonytalan volt |
| 0,1 | 2,30 | rossz felé hajlott |
| 0,01 | 4,61 | magabiztosan tévedett: nagyon drága |
Kísérlet: levélszűrő
Állítsd a három logitot, válaszd ki, melyik a valódi osztály, és figyeld a veszteséget. Próbáld ki, mi történik, ha a modell nagyon biztos a rossz válaszban.
A veszteség (−ln p) a helyes osztály valószínűségének függvényében. Balra, a nullánál a görbe az égbe szökik.
Miért nem a találati arányon tanítunk?
A találati arány (hány százalékot talált el) a számunkra fontos mérce, de ugyanaz a baj vele, mint a „talált vagy nem” veszteséggel. Egy kis változtatás a súlyokon általában egyetlen döntést sem fordít meg, így a meredeksége szinte mindenhol nulla. A keresztentrópia viszont a valószínűség minden apró változására reagál, így mindig van iránya. A találati arányt a tanítás után mérjük, a keresztentrópián tanítunk.
Kulcsgondolat. A keresztentrópia nem csak azt bünteti, ha a modell téved, hanem azt is, mennyire volt biztos a tévedésében. Ez jó tanulási cél valószínűségi előrejelzéshez: a modellt a jól kalibrált valószínűségek felé tereli. Garanciát viszont nem ad: véges adaton, adott modellel és tanítással a modern neurális hálók gyakran túl magabiztosak, ezért a kalibrációt külön mérni kell [43].
Softmax
A logitok z1, …, zK, ahol K az osztályok száma. A k-adik osztály valószínűsége:
pk = ezkΣj ezj
Az e ≈ 2,718 alapú hatványozás minden számot pozitívvá tesz, az összeggel való osztás pedig gondoskodik róla, hogy a valószínűségek összege 1 legyen. Ha minden logithoz ugyanazt a számot adod, az eredmény nem változik. Ezt a kódban a numerikus stabilitásra használjuk ki.
Keresztentrópia
A valódi osztályt egy „one-hot” vektorral írjuk le: a helyes osztálynál 1, máshol 0. Reklámnál y = (0, 1, 0). A keresztentrópia:
CE = − Σk yk ln pk = − ln phelyes
Az ln a természetes alapú logaritmus. Két tulajdonsága kell ide: ln 1 = 0 (ha a modell teljesen biztos és igaza van, nincs veszteség), és ha p a nullához tart, ln p a mínusz végtelenhez tart (a magabiztos tévedés végtelenül drága lehet).
A legszebb eredmény: a gradiens
Ha a keresztentrópiát a logitok szerint deriváljuk, meglepően egyszerű eredményt kapunk:
∂ CE∂ zk = pk − yk
Szavakban: a tanulási jel minden osztálynál „amit a modell mondott, mínusz ami igaz”. A kísérletben ezt az értéket is kiírjuk. A helyes osztálynál negatív (a logitját növelni kell), a többinél pozitív (azokat csökkenteni). A softmax és a keresztentrópia azért tartozik össze, mert együtt ilyen tiszta gradienst adnak.
z = np.array([1.0, 2.0, -1.0]) # logitok: rendes levél, reklám, adathalász
helyes = 1 # a valódi osztály indexe (reklám)
def softmax(z):
z = z - z.max() # stabilitás: a legnagyobbat levonjuk, az eredmény nem változik
ez = np.exp(z)
return ez / ez.sum() # osztás az összeggel: a valószínűségek összege 1
p = softmax(z) # kb. [0.259, 0.705, 0.035]
ce = -np.log(p[helyes]) # keresztentrópia erre az egy levélre: kb. 0.35
y = np.eye(3)[helyes] # one-hot vektor: [0, 1, 0]
grad_z = p - y # a veszteség gradiense a logitok szerint
Információelméleti háttér
Shannon információelméletében egy p valószínűségű esemény információtartalma (meglepetése) −log p [13]. A keresztentrópia tehát a helyes válaszon mért átlagos meglepetés, természetes logaritmussal számolva „nat” egységben. A 6. szinten kiderül, hogy a keresztentrópia minimalizálása azonos a maximum likelihood becsléssel.
Nagy nyelvi modellek
A mai autoregresszív, csak dekóderből álló nagy nyelvi modellek (a GPT-szerű modellek) előtanítási célja jellemzően ez: minden pozícióban a következő token eloszlását kell megtanulni, sok tízezer osztály (a szótár) közül, és a veszteség a keresztentrópia. Más nyelvimodell-családok más célt használnak, például kitakart szavak visszajóslását. A gyakran közölt perplexitás ennek exponenciálisa, eCE: szemléletesen úgy értelmezhető, mintha a modell átlagosan ennyi egyformán valószínű lehetőség közül választana. Ez csak szemléltetés: a valódi eloszlások nem egyenletesek. Kaplan és munkatársai azt mutatták, hogy ez a veszteség a modellméret, az adatmennyiség és a számítás függvényében jó közelítéssel hatványfüggvény szerint csökken [38].
Módosított keresztentrópiák
- Címkesimítás (label smoothing): a one-hot célt kissé „elkenik”, például 0,9 a helyesre, a maradék egyenletesen elosztva. Ez visszafogja a túlzott magabiztosságot [14]. Müller és munkatársai kimutatták, hogy javíthatja a kalibrációt, de ronthatja a modell alkalmazhatóságát tanítómodellként [15].
- Fókuszveszteség (focal loss): a már jól osztályozott, könnyű példák súlyát lecsökkenti, így a tanulás a nehéz, ritka esetekre koncentrál [16]. Csalásfelismerésnél ez közvetlenül releváns, mert az adathalász levél ritka, a rendes levél tömeges.
- Osztálysúlyozás: a ritka osztály hibáit egyszerűen nagyobb súllyal számolják. Egy átengedett adathalász levél sokkal drágább, mint egy tévesen a reklámok közé sorolt hírlevél, és ezt a veszteségnek tudnia kell.
Honnan jönnek a veszteségek?
Cél:látni, hogy a veszteségek nem ötletszerűek, hanem mindegyik mögött egy feltevés áll arról, hogyan zajos a világ.
Eddig úgy tűnhetett, hogy az MSE, az MAE és a keresztentrópia három külön ötlet. Valójában egyetlen elvből következnek. Az elv neve maximum likelihood: válaszd azt a modellt, amelyik mellett a ténylegesen megfigyelt adat a legvalószínűbb.
Ehhez el kell döntened, hogyan képzeled a zajt. Ha úgy gondolod, hogy a hibák többnyire kicsik, a nagy hibák pedig nagyon ritkák (a jól ismert haranggörbe, a Gauss-eloszlás), abból az MSE következik (megfordítva nem igaz: az MSE-hez nem kötelező Gauss-zajt feltenni). Ha úgy gondolod, hogy a nagy kiugrások gyakoribbak ennél (csúcsosabb eloszlás vastagabb szélekkel, a Laplace-eloszlás), abból az MAE. A kategóriák valószínűségeiből pedig a keresztentrópia.
Kísérlet: zajfeltevésből veszteség
Bal oldalon a két zajeloszlás, jobb oldalon a negatív logaritmusuk. Figyeld meg: a Gauss-ból parabola lesz (négyzetes veszteség), a Laplace-ból V alak (abszolút veszteség).
Zajeloszlás: mennyire valószínű egy e hiba
−ln(valószínűség): ez lesz a veszteség
Ez a felismerés megfordítja a kérdést. Ha tudod, milyen az adataid zaja, abból levezetheted a hozzá illő veszteséget. Egy jó digitális hőmérő leolvasási hibája közel Gauss-eloszlású. Egy kézzel vezetett időjárás-napló, amelybe néha elütnek egy számjegyet, már nem: ritkán, de akkor nagyot téved. A 2. szinten ösztönösen érzett kérdésre („a 90 milliós ár valódi-e”) itt kapsz elvi választ: a veszteség választása egy feltevés a világról.
Kulcsgondolat. Sok veszteség mögött egy kimondatlan feltevés áll arról, milyen hibákat tart a modell gyakorinak és ritkának. Az MSE egyik valószínűségi indoklása a haranggörbe alakú (Gauss-) zaj. MSE-t azonban akkor is választhatsz, ha egyszerűen a nagy eltéréseket akarod erősebben büntetni; ehhez nem kell normális eloszlást feltételezni. A veszteség a döntés költségeiből is levezethető (erről a 7. szint szól).
Likelihood és negatív log-likelihood
Tegyük fel, hogy a hiba σ szórású Gauss-eloszlású. Egy e hiba valószínűségsűrűsége:
p(e) = 1σ√(2π) · exp(−e²2σ²)
Független adatpontoknál az együttes valószínűség a szorzat. Szorzatot nehéz kezelni, ezért logaritmust veszünk, ami szorzatból összeget csinál, és mínusz jellel minimalizálandó mennyiséget kapunk. Ez a negatív log-likelihood (NLL):
−ln p(e) = e²2σ² + ln(σ√(2π))
A második tag állandó: nem függ a modell paramétereitől, így a minimum helyét sem befolyásolja. Az első tag a négyzetes hiba, egy pozitív számmal osztva. A Gauss-zaj melletti maximum likelihood tehát pontosan az MSE minimalizálása. Laplace-zajnál ugyanez a lépéssor:
p(e) = 12b exp(−|e|b) ⇒ −ln p(e) = |e|b + ln(2b)
Ez pedig az abszolút hiba, vagyis az MAE.
Keresztentrópia és KL-divergencia
Két valószínűségeloszlás, a valódi p és a modellé, q között a keresztentrópia két részre bomlik:
H(p, q) = H(p) + DKL(p ‖ q)
A H(p) az adatok saját entrópiája, a modelltől független. A DKL a Kullback–Leibler-divergencia, amely azt méri, mennyire tér el a modell eloszlása a valóságostól. Nulla, ha egyeznek, egyébként pozitív. A keresztentrópia minimalizálása tehát a modell eloszlásának a valóságos felé húzása. Ugyanaz a szerkezet, mint a 2. szinten az MSE = (ȳ − c)² + s²: egy csökkenthető és egy nem csökkenthető rész.
sigma = 2.0 # feltételezett zaj a lakásárakban [millió Ft] e = y - c # hibák egy c becslésre (a 2. szint árai) nll = np.mean(e**2 / (2 * sigma**2) + np.log(sigma * np.sqrt(2 * np.pi))) # = mse(c) / (2 sigma²) + állandó, tehát ugyanott van a minimuma, mint az MSE-nek
Fisher és a maximum likelihood
A maximum likelihood elvét Fisher fogalmazta meg rendszerezett formában 1922-ben [17]. A KL-divergenciát Kullback és Leibler vezette be 1951-ben [18]. Fontos tulajdonsága, hogy nem szimmetrikus: DKL(p‖q) ≠ DKL(q‖p). Egy gyakori, szemléletes leírás szerint az előre irányú változat (amit a keresztentrópiával minimalizálunk) inkább „lefedő” viselkedést ad: a modell mindenhol valószínűséget próbál adni, ahol a valóságban van. A fordított irány inkább „módusz-kereső”: a modell egy csúcsra koncentrálhat [42]. Ez tendencia, amely főleg akkor látszik, ha a modell túl egyszerű a valódi eloszláshoz; nem minden modellre érvényes törvény. Ez a különbség a generatív modelleknél és a 8. szint KL-büntetésénél is számít.
Tudásdesztilláció
Egy kis modell tanítható úgy is, hogy nem a one-hot címkéket, hanem egy nagy modell teljes valószínűségeloszlását kell utánoznia, keresztentrópiával vagy KL-divergenciával. A „puha” célok több információt hordoznak: azt is elárulják, hogy egy reklámlevél a nagy modell szerint inkább az adathalász levelekre hasonlít-e, vagy a rendes levelekre [19].
Tanult bizonytalanság
Ha a σ zajszintet nem rögzítjük, hanem a modell maga jósolja meg minden bemenetre, a Gauss-NLL-ből olyan veszteség lesz, amelyben a modell „megengedheti magának” a nagyobb hibát ott, ahol nagyobb bizonytalanságot vall be, de ezért a ln σ tag bünteti. Kendall és Gal így modellezte a zajból eredő (aleatorikus) bizonytalanságot [20].
A táj görbülete és a Fisher-információ
Megfelelő regularitási feltételek mellett a Fisher-információ megegyezik a negatív log-likelihood Hesse-mátrixának (a második deriváltak mátrixának) várható értékével, ahol a várható értéket a modell saját eloszlása szerint vesszük. Szavakban: a görbület azt méri, mennyi információt hordoznak az adatok a paraméterekről. A klasszikus statisztikában egy meredek falú völgy pontosan meghatározott paramétert jelent, egy lapos völgy bizonytalant. Vigyázat: a konkrét adatokon mért (megfigyelt) Hesse-mátrix, a várható Hesse-mátrix és a Fisher-információ nem ugyanaz, csak bizonyos feltételek mellett esnek egybe; a gyakorlatban használt „empirikus Fisher” pedig sokszor rossz közelítés [40] [41]. Amari természetes gradiens módszere ezt a görbületet használja a paramétertér metrikájaként, vagyis a lépést a táj „valódi” geometriájához igazítja [21].
A mérce testre szabása
Cél:megtanulni a veszteséget a valódi költségekhez igazítani, és felismerni, mikor tanul a modell túl jól.
Aszimmetrikus költség
Egy pékségben minden hajnalban el kell dönteni, hány kenyeret süssenek. A kereslet napról napra ingadozik. Ha kevés a kenyér, a délután érkező vevő üres polcot talál: elmarad az eladás, és lehet, hogy legközelebb máshová megy. Ha sok, a maradékot este ki kell dobni. A kettő nem egyformán drága, de az MSE és az MAE ezt nem tudja, mert szimmetrikusak: nekik tíz kenyérrel több és tíz kenyérrel kevesebb ugyanannyit ér.
A megoldás egy aszimmetrikus veszteség: a hiányt k-szor drágábbnak számoljuk, mint a maradékot. Ezt kvantilis vagy pinball-veszteségnek hívják. A matematika egy nagyon gyakorlatias szabályt ad: az optimális mennyiségnél a napok 1/(k+1) részében fogy el minden kenyér. Ha a hiány kilencszer drágább, a napok 10%-ában fogyjon el, és ebből kiszámolható, hány kenyérrel kell többet sütni az átlagos keresletnél.
Kísérlet: hány kenyeret süss?
A kereslet ingadozása adott. Állítsd be, hányszor drágább a hiány, mint a maradék, és nézd meg, hová kerül az optimális mennyiség.
Várható napi veszteség a többlet függvényében (egység: egy megmaradt kenyér ára)
Maradék (+) és hiány (−) eloszlása az optimális mennyiségnél; pirossal a hiányos napok
Túl jó tanulás: a túlillesztés
Egy elég rugalmas modell nagyon kis hibát érhet el a tanítóadatokon. Ez önmagában még nem bizonyít túlillesztést: nagyon túlparaméterezett modellek nulla tanítási hiba mellett is általánosíthatnak jól [25]. Túlillesztésre az utal, ha a tanítási veszteség tovább csökken, miközben a félretett, megfelelően választott adatokon mért teljesítmény romlik. Zajos adatoknál (a 2. szint irreducibilis hibája) ennek egyik oka lehet, hogy a modell a tanítóminta véletlen sajátosságaihoz is alkalmazkodik. Olyan ez, mint a diák, aki a tavalyi feladatsor megoldásait tanulta meg, nem a módszert.
Ezért az adatok egy részét félretesszük, és csak ellenőrzésre használjuk: ez a validációs halmaz. A tanítás közben mindkét veszteséget figyeljük.
Tanítási és validációs veszteség
Sematikus ábra. A tanítási veszteség folyamatosan csökken, a validációs egy ponton megfordul: ott érdemes megállni.
Büntetőtagok: regularizáció
A túlillesztés ellen a veszteséghez egy második tagot adhatunk, amely a túl bonyolult modellt bünteti, például a nagy súlyokat. A modell így két dolog között egyensúlyoz: illeszkedjen az adatokhoz, de maradjon egyszerű. Ugyanígy a veszteségbe tudás is beépíthető. A fizikával informált neurális hálóknál (PINN) egy tag azt bünteti, ha a modell megsérti a fizikai egyenletet, például a hővezetés egyenletét, még ott is, ahol nincs mérés.
Kulcsgondolat. A veszteségfüggvénybe mindent beleírhatsz, ami számodra fontos: a valódi költségarányokat, az egyszerűség iránti igényt, a fizikai törvényeket. A modell mindezt figyelembe veszi, de csak azt, ami benne van.
A pinball-veszteség és az optimum
Legyen e a megsütött kenyerek és a kereslet különbsége: pozitív e maradékot, negatív e hiányt jelent. Maradéknál kenyerenként egységnyi, hiánynál k-szoros árat számolunk:
L(e) = e, ha e ≥ 0; L(e) = −k·e, ha e < 0
Egy s mennyiséget sütünk, a kereslet pedig napról napra szór. Ha s-t eggyel növeljük, minden maradékos napon egy kicsit drágább lesz a nap (+1 egység), minden hiányos napon egy kicsit olcsóbb (−k egység). Az egyensúly ott van, ahol a kettő kiegyenlíti egymást:
P(maradék) · 1 = P(hiány) · k ⇒ P(hiány) = 1k + 1
Ez ugyanaz az érvelés, amellyel a 2. szinten a mediánt kaptuk. Ott k = 1 volt, vagyis az esetek fele esik alá: a medián a 0,5-ös kvantilis. Normális eloszlású keresletnél az optimális többlet σ · z, ahol z a standard normális eloszlás k/(k+1) kvantilise. Például k = 9 és σ = 10 kenyér mellett z ≈ 1,28, tehát körülbelül 13 kenyérrel kell többet sütni az átlagos keresletnél.
Túlillesztés és regularizáció
A tanítási veszteség a tanítóadaton mért átlagos veszteség, a validációs veszteség ugyanez a félretett adatokon. Túlillesztésre utal, ha az első tovább csökken, miközben a második nő. Az L2-regularizált célfüggvény:
J(θ) = 1n Σi L(fθ(xi), yi) + λ Σj θj²
A λ szabályozza, mennyire erős a büntetés. A 6. szint nyelvén ez annak felel meg, hogy a paraméterekről is van egy előzetes feltevésünk: valószínűleg kicsik, Gauss-eloszlás szerint a nulla körül. Az adat és ez a feltevés együtt adja a célfüggvényt.
def pinball(e, k): # e = sütött - kereslet [kenyér]
return np.where(e >= 0, e, -k * e) # a hiány k-szor drágább, mint a maradék
def cel_fuggveny(w, X, y, lam):
adat = np.mean((X @ w - y) ** 2) # illeszkedés az adatokhoz (MSE)
bunteto = lam * np.sum(w ** 2) # L2: a nagy súlyok büntetése
return adat + bunteto # a kettő egyensúlya
# PINN-szerű összetett veszteség vázlata:
# teljes = adat_veszteseg + lam_fiz * np.mean(egyenlet_reziduum ** 2)
Kvantilis-regresszió
A pinball-veszteséget Koenker és Bassett tette a kvantilis-regresszió alapjává [22]: nem az átlagot, hanem egy tetszőleges kvantilist (például a 90%-os felső határt) lehet vele modellezni. Előrejelzéseknél így egyszerre több kvantilis tanulható, és ebből előrejelzési sáv adódik, nem csak egy pont.
Súlycsökkentés
Az L2-büntetés gradiens-módszerrel minden lépésben egy kicsit csökkenti a súlyokat, innen a neve: súlycsökkentés (weight decay) [23]. Adaptív optimalizálóknál (például Adam) a kettő már nem azonos. Loshchilov és Hutter megmutatta, hogy a súlycsökkentést érdemes a gradiens-lépéstől leválasztva alkalmazni. Ez az AdamW, ma a legelterjedtebb változat [24].
A klasszikus U-görbe nem a teljes történet
A torzítás–variancia kompromisszum szerint a modell bonyolultságának növelésével a tesztveszteség előbb csökken, majd nő. Belkin és munkatársai kimutatták, hogy a nagyon túlparaméterezett modelleknél, ahol a modell már tökéletesen illeszkedik a tanítóadatra, a tesztveszteség egy csúcs után újra csökkenhet. Ez a kettős süllyedés (double descent) [25]. A sematikus ábra tehát a klasszikus tartományt mutatja, a mai nagy modellek viselkedése árnyaltabb.
Összetett veszteségek súlyozása
A PINN-ek veszteségében a mérési adattag mellett a differenciálegyenlet reziduuma és a peremfeltételek is szerepelnek [26]. A tagok gradiensei nagyságrendekkel eltérhetnek, és ilyenkor a tanítás az egyiket elhanyagolja. Wang, Teng és Perdikaris ezt a hibamódot elemezte, és a súlyok gradiens-statisztikák alapján történő automatikus kiegyensúlyozását javasolta [27]. Általános tanulság: ha egy veszteség több tagból áll, a λ súlyok is a mérce részei, és ugyanannyit számítanak, mint a tagok maguk.
Amikor a mérce elcsúszik a céltól
Cél:megérteni, miért veszélyes egy mércét túl erősen optimalizálni, és hogyan kezelik ezt a mai nyelvi modelleknél.
Minden veszteségfüggvény helyettesítő: egy mérhető szám, amely remélhetőleg együtt mozog azzal, amit igazán akarunk. Amíg gyengén optimalizálunk, a kettő együtt javul. Ha viszont nagyon erősen nyomjuk a mércét, a rendszer megtalálja azokat a réseket, ahol a mérce javítható a valódi cél nélkül, vagy annak rovására.
Ezt a jelenséget egy közgazdászról, Goodhartról nevezték el. A ma ismert megfogalmazás Strathern antropológustól származik: ha egy mérőszámból cél lesz, megszűnik jó mérőszám lenni [28]. A hétköznapokból is ismerős: ha egy ügyfélszolgálatot csak a hívások hosszával mérnek, a hívások rövidülnek, a problémák viszont nem feltétlenül oldódnak meg.
Kísérlet: a helyettesítő mérce és a valódi cél
Sematikus modell. Növeld az optimalizálás erejét, és figyeld, meddig mozog együtt a két görbe.
A gépek is játszmáznak
A gépi tanulásban ezt specifikációs játszmázásnak vagy jutalom-hackelésnek (reward hacking) hívják. Klasszikus példa egy hajóversenyes játék, amelyben a pontszámot maximalizáló ágens nem ért célba: rájött, hogy többet kap, ha egy kis lagúnában körbe-körbe fut, és újra meg újra felveszi ugyanazokat a bónuszokat [32]. Az ágens nem hibázott: pontosan azt tette, amit a mérce jutalmazott [33].
A nagy nyelvi modellek esete
Egy nyelvi modell finomhangolásánál a „jó válasz” mércéjét nem lehet képletbe írni. Ezért megtanulják: emberek sok válaszpárt összehasonlítanak, és ezekből egy külön modell, a jutalommodell, megtanulja megjósolni, melyik válasz tetszene jobban. Ezután a nyelvi modellt úgy tanítják, hogy ezt a jutalmat maximalizálja. Ez az RLHF, a megerősítéses tanulás emberi visszajelzésből [34].
A jutalommodell viszont maga is helyettesítő, és ha túl erősen optimalizálnak rá, a nyelvi modell megtanulja kihasználni a gyengeségeit. Ezért kap egy fékezőt: egy büntetést azért, ha túl messzire távolodik az eredeti modelltől. Ez a büntetés a 6. szinten megismert KL-divergencia.
Kulcsgondolat. Képletesen: a veszteségfüggvény az, amit a tanítás során a rendszer „akar” (ez metafora, nem a kész modell szándéka). Ha a mérce és a valódi cél eltér, egy elég erős optimalizáló megtalálhatja a különbséget, és kihasználhatja; ez kockázat, nem minden célfüggvénynél szükségszerű. Ezért egy rendszer tervezésekor a legnehezebb kérdés sokszor nem az, hogyan optimalizáljunk, hanem az, hogy mit.
Kitekintés: kapcsolódó elméletek és spekulatív modellek
Választható kitekintés. Az alábbi elméletek vitatottak, részben spekulatívak. Nem a veszteségfüggvényről tanult mérnöki állítások bizonyítékai, csak rokon gondolatok.
A veszteségfüggvény gondolata messze túlnyúlik a gépi tanuláson. Friston szabadenergia-elve szerint az agy is egy mennyiséget minimalizál: a predikciós hibájához kötődő variációs szabadenergiát [36]. Vanchurin spekulatív modelljében pedig a fizikai világ egy tanuló hálózatként írható le, amelyben a veszteség szerepét egy termodinamikai mennyiség tölti be [37]. Mindkettő ugyanazt a kérdést veti fel, amelyből ez az anyag kiindult: mit minimalizál a rendszer, és ki vagy mi határozta meg ezt?
A helyettesítés formálisan
Legyen J(θ) a valódi cél, amelyet nem tudunk közvetlenül mérni, és R(θ) a helyettesítő, amelyet optimalizálunk. Kezdetben a két gradiens nagyjából egy irányba mutat, így az R-en tett lépés J-t is javítja. A Goodhart-hatás akkor lép fel, amikor az optimalizálás olyan tartományba ér, ahol a két gradiens iránya eltér: R tovább nő, J csökken. A kísérlet görbéi: R(d) = d és J(d) = d − 0,08 d², ahol d az optimalizálás ereje. A valódi cél maximuma d = 6,25-nél van.
Az RLHF célfüggvénye
A finomhangolt modell (πθ, „policy”) egy x promptra y választ ad. A maximalizálandó cél:
maxθ E[ rφ(x, y) ] − β · DKL(πθ ‖ πref)
Az rφ a tanult jutalommodell pontszáma, a πref a finomhangolás előtti modell, a β pedig azt szabályozza, milyen erős a fék. A veszteség ennek a mínusz egyszerese. Ha β túl kicsi, a modell kihasználja a jutalommodell hibáit. Ha túl nagy, alig változik.
# vázlat: a jel, amelyet a finomhangolás egy válaszra kap jutalom = r_phi(prompt, valasz) # a tanult jutalommodell pontszáma kl = logp_uj(valasz) - logp_ref(valasz) # mennyire tért el az eredeti modelltől cel = jutalom - beta * kl # ezt maximalizáljuk veszteseg = -cel # a veszteség ennek a mínusz egyszerese
A Goodhart-törvény változatai
Goodhart eredetileg monetáris politikai megfigyelést tett: egy statisztikai szabályszerűség összeomlik, amint szabályozási célra kezdik használni [29]. Manheim és Garrabrant négy mechanizmust különít el [30]. A regressziós változatban a mérce zajos, és a szélsőértékek kiválasztása a zajt is kiválasztja. Az extremális változatban a szélsőséges tartományban a mérce és a cél kapcsolata megváltozik. Az ok-okozati változatban a mérce befolyásolása nem hat a célra. Az adverzális változatban egy ágens tudatosan kihasználja a mércét.
A túloptimalizálás skálatörvényei
Gao, Schulman és Hilton kontrollált kísérletben mérték ezt: egy nagy „arany” jutalommodell helyettesítette az embert, és egy kisebb, belőle tanított jutalommodellre optimalizáltak [35]. A helyettesítő jutalom monoton nőtt, az arany jutalom viszont egy pont után csökkenni kezdett. Best-of-n mintavételre a görbét az eredeti modelltől mért KL-távolság gyökének másodfokú függvényével illesztették, ez ugyanaz a forma, mint a kísérlet sematikus görbéje. A hatás nagyobb jutalommodellel gyengült, de nem tűnt el.
Biztonsági keretezés
Amodei és munkatársai a rosszul specifikált célfüggvényt a gyakorlati MI-biztonság egyik alapproblémájaként írták le, a nem kívánt mellékhatásokkal és a jutalom-hackeléssel együtt [31]. Krakovna és munkatársai hosszú listát gyűjtöttek valós specifikációs játszmázási esetekből [33]. A közös tanulság: a veszteség megtervezése nem technikai részlet, hanem a rendszer céljainak megfogalmazása, és ennek hibái az optimalizálás erejével együtt nőnek.
Nyitott kérdés
A mai rendszerek veszteségét kívülről adják meg, még az RLHF-nél is, ahol a mércét tanulják, emberek ítéletei alapján. Az ember viszont élete során részben a saját céljait is átírja. Hogy egy mesterséges rendszer képes-e saját, jól viselkedő célfüggvényt kialakítani, és ha igen, mi alapján, ma nyitott kutatási kérdés.
Összefoglaló táblázat
Melyik veszteség mögött milyen feltevés áll, és mikor érdemes választani.
| Veszteség | Feladat | Valószínűségi indoklás, illetve feltevés | Mikor válaszd |
|---|---|---|---|
| MSE (négyzetes) | szám jóslása | Gauss-zaj | a nagy hibák valódiak és drágák |
| MAE (abszolút) | szám jóslása | Laplace-zaj | kiugró adathibák várhatók |
| Huber | szám jóslása | többnyire Gauss, néha kiugrás | robusztusság kell, de sima gradiens is |
| Pinball (kvantilis) | szám jóslása | aszimmetrikus költség | a hiány és a többlet ára eltér |
| Keresztentrópia | osztályozás, nyelvi modell | kategorikus eloszlás | valószínűséget kell jósolni |
| Fókusz / súlyozott CE | ritka osztályok | kiegyensúlyozatlan adatok | a ritka hiba a fontos |
| + L2 büntetés | bármelyik mellé | kis súlyok (Gauss-prior) | túlillesztés ellen |
| + fizikai reziduum | PINN | ismert egyenlet | kevés adat, ismert fizika |
| Jutalom − β·KL | RLHF | tanult emberi preferencia | a „jó” nem írható képletbe |
Glosszárium
- Veszteségfüggvényloss function
- Szabály, amely egy jóslatból és a helyes értékből egy számot képez: annál nagyobbat, minél rosszabb a jóslat.
- Célfüggvény, költségfüggvényobjective, cost
- Amit ténylegesen optimalizálunk: a veszteségek átlaga, esetleg büntetőtagokkal kiegészítve.
- Reziduumresidual
- A jóslat és a valódi érték különbsége, ŷ − y.
- MSE, RMSEmean squared error
- Az eltérések négyzetének átlaga, illetve annak gyöke. Az átlagnál minimális.
- MAEmean absolute error
- Az eltérések abszolút értékének átlaga. A mediánnál minimális, kiugró értékekre kevésbé érzékeny.
- Huber-veszteség
- Kis hibánál négyzetes, nagynál lineáris veszteség. Robusztus, és a gradiense mindenhol értelmes.
- Irreducibilis hiba
- A veszteségnek az a része, amelyet a zaj okoz, és semmilyen modell nem tud eltüntetni.
- Veszteségtájloss landscape
- A veszteség értéke a modell paramétereinek függvényében. A tanulás ennek legmélyebb pontját keresi.
- Konvex
- Olyan tál alakú függvény, amelynek minden lokális minimuma globális.
- Nyeregpont
- Olyan pont, ahol a lejtő nulla, de egyes irányokban lefelé, másokban felfelé görbül a táj.
- Gradiens
- A veszteség meredekségeinek vektora az egyes paraméterek szerint. A legmeredekebb emelkedés irányába mutat.
- Gradiens-módszergradient descent
- Iteratív eljárás: minden lépésben a gradienssel ellentétes irányba mozdítja a paramétereket.
- Tanulási rátalearning rate, η
- A lépésköz a gradiens-módszerben. Túl kicsi: lassú. Túl nagy: oszcillál vagy szétszáll.
- SGD, minibatch
- Sztochasztikus gradiens-módszer: minden lépésben csak az adatok egy kis véletlen részhalmazán számolt gradienst használ.
- Visszaterjesztésbackpropagation
- A gradiens hatékony kiszámítása a láncszabállyal, a kimenettől a bemenet felé haladva.
- Logit
- Osztályonkénti nyers pontszám a softmax előtt. Tetszőleges valós szám lehet.
- Softmax
- Függvény, amely a logitokból 0 és 1 közötti, összesen 1-et adó valószínűségeket képez.
- Keresztentrópiacross-entropy
- A helyes osztály valószínűségének negatív logaritmusa, átlagolva. Az osztályozók és a nyelvi modellek alapvesztesége.
- Perplexitás
- A keresztentrópia exponenciálisa. Nyelvi modelleknél elterjedt mérőszám.
- Likelihood, maximum likelihood
- Annak valószínűsége, hogy adott modell mellett a látott adatot kapjuk. A maximum likelihood ezt maximalizáló paramétert választ.
- Negatív log-likelihoodNLL
- A likelihood negatív logaritmusa. A legtöbb veszteségfüggvény ilyen alakú.
- KL-divergencia
- Két valószínűségeloszlás eltérésének mértéke. Nem szimmetrikus.
- Fisher-információ
- Regularitási feltételek mellett a negatív log-likelihood várható görbülete (a Hesse-mátrix várható értéke a modell eloszlása szerint). Azt méri, mennyi információt hordoz az adat a paraméterekről.
- Pinball- vagy kvantilis veszteség
- Aszimmetrikus lineáris veszteség. Minimuma egy kvantilisnél van, nem az átlagnál.
- Túlillesztésoverfitting
- A modell a tanítóadat zaját is megtanulja, és új adaton rosszabbul teljesít.
- Validációs halmaz
- Tanításra nem használt adatok, amelyeken a modell általánosító képességét mérjük.
- Regularizáció
- A célfüggvényhez adott büntetőtag, amely az egyszerűbb modellt részesíti előnyben.
- Goodhart-törvény
- Ha egy mérőszámból cél lesz, megszűnik jó mérőszám lenni.
- Jutalom-hackelés, specifikációs játszmázás
- A rendszer a mércét javítja a valódi cél helyett vagy annak rovására.
- Jutalommodellreward model
- Emberi preferenciákból tanított modell, amely a „jó válasz” mércéjét adja az RLHF-ben.
Irodalom
- [1]
Taguchi, G. (1986). Introduction to Quality Engineering: Designing Quality into Products and Processes. Asian Productivity Organization. 1. szint
- [2]
Wald, A. (1950). Statistical Decision Functions. Wiley. 1. szint
- [3]
Legendre, A.-M. (1805). Nouvelles méthodes pour la détermination des orbites des comètes. Paris: Firmin Didot. 2. szint
- [4]
Gauss, C. F. (1809). Theoria motus corporum coelestium in sectionibus conicis solem ambientium. Hamburg: Perthes & Besser. 2. szint
- [5]
Huber, P. J. (1964). Robust Estimation of a Location Parameter. The Annals of Mathematical Statistics, 35(1), 73–101. 2. szint
- [6]
Goodfellow, I., Bengio, Y., Courville, A. (2016). Deep Learning. MIT Press. deeplearningbook.org · 1–3. szint
- [7]
Dauphin, Y. N. et al. (2014). Identifying and attacking the saddle point problem in high-dimensional non-convex optimization. NeurIPS. arXiv:1406.2572 · 3. szint
- [8]
Li, H., Xu, Z., Taylor, G., Studer, C., Goldstein, T. (2018). Visualizing the Loss Landscape of Neural Nets. NeurIPS. arXiv:1712.09913 · 3. szint
- [9]
Keskar, N. S. et al. (2017). On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima. ICLR. arXiv:1609.04836 · 3. szint
- [10]
Robbins, H., Monro, S. (1951). A Stochastic Approximation Method. The Annals of Mathematical Statistics, 22(3), 400–407. 4. szint
- [11]
Rumelhart, D. E., Hinton, G. E., Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323, 533–536. 4. szint
- [12]
Kingma, D. P., Ba, J. (2015). Adam: A Method for Stochastic Optimization. ICLR. arXiv:1412.6980 · 4. szint
- [13]
Shannon, C. E. (1948). A Mathematical Theory of Communication. Bell System Technical Journal, 27, 379–423, 623–656. 5. szint
- [14]
Szegedy, C. et al. (2016). Rethinking the Inception Architecture for Computer Vision. CVPR. arXiv:1512.00567 · 5. szint
- [15]
Müller, R., Kornblith, S., Hinton, G. (2019). When Does Label Smoothing Help? NeurIPS. arXiv:1906.02629 · 5. szint
- [16]
Lin, T.-Y., Goyal, P., Girshick, R., He, K., Dollár, P. (2017). Focal Loss for Dense Object Detection. ICCV. arXiv:1708.02002 · 5. szint
- [17]
Fisher, R. A. (1922). On the Mathematical Foundations of Theoretical Statistics. Philosophical Transactions of the Royal Society A, 222, 309–368. 6. szint
- [18]
Kullback, S., Leibler, R. A. (1951). On Information and Sufficiency. The Annals of Mathematical Statistics, 22(1), 79–86. 6. szint
- [19]
Hinton, G., Vinyals, O., Dean, J. (2015). Distilling the Knowledge in a Neural Network. arXiv:1503.02531 · 6. szint
- [20]
Kendall, A., Gal, Y. (2017). What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision? NeurIPS. arXiv:1703.04977 · 6. szint
- [21]
Amari, S. (1998). Natural Gradient Works Efficiently in Learning. Neural Computation, 10(2), 251–276. 6. szint
- [22]
Koenker, R., Bassett, G. (1978). Regression Quantiles. Econometrica, 46(1), 33–50. 7. szint
- [23]
Krogh, A., Hertz, J. A. (1992). A Simple Weight Decay Can Improve Generalization. NeurIPS 4. 7. szint
- [24]
Loshchilov, I., Hutter, F. (2019). Decoupled Weight Decay Regularization. ICLR. arXiv:1711.05101 · 7. szint
- [25]
Belkin, M., Hsu, D., Ma, S., Mandal, S. (2019). Reconciling modern machine-learning practice and the classical bias–variance trade-off. PNAS, 116(32), 15849–15854. 7. szint
- [26]
Raissi, M., Perdikaris, P., Karniadakis, G. E. (2019). Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations. Journal of Computational Physics, 378, 686–707. 7. szint
- [27]
Wang, S., Teng, Y., Perdikaris, P. (2021). Understanding and mitigating gradient flow pathologies in physics-informed neural networks. SIAM Journal on Scientific Computing, 43(5), A3055–A3081. 7. szint
- [28]
Strathern, M. (1997). ‘Improving ratings’: audit in the British University system. European Review, 5(3), 305–321. 8. szint
- [29]
Goodhart, C. A. E. (1975). Problems of Monetary Management: The U.K. Experience. In Papers in Monetary Economics, Vol. I. Reserve Bank of Australia. 8. szint
- [30]
Manheim, D., Garrabrant, S. (2018). Categorizing Variants of Goodhart's Law. arXiv:1803.04585 · 8. szint
- [31]
Amodei, D. et al. (2016). Concrete Problems in AI Safety. arXiv:1606.06565 · 8. szint
- [32]
Clark, J., Amodei, D. (2016). Faulty Reward Functions in the Wild. OpenAI blog. 8. szint
- [33]
Krakovna, V. et al. (2020). Specification gaming: the flip side of AI ingenuity. DeepMind blog. 8. szint
- [34]
Ouyang, L. et al. (2022). Training language models to follow instructions with human feedback. NeurIPS. arXiv:2203.02155 · 8. szint
- [35]
Gao, L., Schulman, J., Hilton, J. (2023). Scaling Laws for Reward Model Overoptimization. ICML. arXiv:2210.10760 · 8. szint
- [36]
Friston, K. (2010). The free-energy principle: a unified brain theory? Nature Reviews Neuroscience, 11, 127–138. 8. szint
- [37]
Vanchurin, V. (2020). The World as a Neural Network. Entropy, 22(11), 1210. 8. szint
- [38]
Kaplan, J. et al. (2020). Scaling Laws for Neural Language Models. arXiv:2001.08361 · 5. szint
- [39]
Dinh, L., Pascanu, R., Bengio, S., Bengio, Y. (2017). Sharp Minima Can Generalize For Deep Nets. ICML. arXiv:1703.04933 · 3. szint
- [40]
Martens, J. (2020). New Insights and Perspectives on the Natural Gradient Method. Journal of Machine Learning Research, 21. arXiv:1412.1193 · 6. szint
- [41]
Kunstner, F., Balles, L., Hennig, P. (2019). Limitations of the Empirical Fisher Approximation for Natural Gradient Descent. NeurIPS. arXiv:1905.12558 · 6. szint
- [42]
Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer, 10.1. fejezet. 6. szint
- [43]
Guo, C., Pleiss, G., Sun, Y., Weinberger, K. Q. (2017). On Calibration of Modern Neural Networks. ICML. arXiv:1706.04599 · 5. szint
A demók szemléltető, kitalált adatokkal dolgoznak.
Tanításban vagy a munkahelyeden használod? Örülnék, ha megírnád: csaplar.d@gmail.com