Ako fungujú LLM · Prednáška 3 zo 7

Backpropagation: ako sa sieť učí

Konečne odpovieme na otázku, ktorá visí nad kurzom od prvej prednášky: ako sa nastavia váhy skrytých neurónov, keď im nikto nepovie, čo majú robiť? Celý algoritmus prejdeme ručne na jedinej malej sieti s 9 číslami, ktorá sa učí XOR. Presne ten istý algoritmus trénuje aj GPT.

  • 35 až 45 minút
  • Predpoklad: prednášky 1 a 2
  • 6 interaktívnych ukážok
01

Kto môže za chybu?

V prvej prednáške sme postavili sieť 2-2-1, ktorá rieši XOR. Má dva vstupy, dva skryté neuróny a jeden výstup. Všetkých jej 9 čísel (6 váh a 3 biasy) sme ale nastavili ručne. V druhej prednáške sme sa naučili, ako sa dá chyba siete zmenšovať: vypočítaš gradient a urobíš krok proti nemu. Chýba posledný dielik. Ako ten gradient pre všetky váhy rýchlo vypočítať?

Pri výstupnom neuróne je to jasné. Vidíme, čo povedal, a vieme, čo mal povedať. Pri skrytom neuróne nie. Nikto mu nepovedal, akú hodnotu mal mať. Keď sieť odpovie zle, je to vina výstupného neurónu? Alebo prvého skrytého? Alebo druhého? A ktorej z ich váh? Tomuto problému sa hovorí credit assignment, po slovensky zhruba „rozdelenie zásluh a viny“.

✓Výstupný neurón

Má cieľ. Chyba = výstup − cieľ. Pravidlo perceptronu z 1. prednášky sa tu dá použiť.

?Skrytý neurón

Nemá cieľ. Nevieme, či mal svietiť viac alebo menej. Pravidlo perceptronu tu nemá s čím porovnávať.

←Backpropagation

Vypočíta, ako veľmi každý skrytý neurón prispel k chybe. Chyba sa pošle dozadu po tých istých váhach.

Hrubá sila by fungovala: pohneš jednou váhou o kúsok, pozrieš, či chyba klesla, a vrátiš ju. Pri 9 váhach to ide. Pri sieti na číslice s 13 002 parametrami by si na jeden krok učenia potreboval 13 002 behov siete. Pri GPT-3 so 175 miliardami parametrov je to nemysliteľné. Backpropagation dá všetky gradienty naraz za cenu zhruba jedného prechodu sieťou dopredu a jedného dozadu.

Hlavná myšlienka

Backpropagation nie je nový spôsob učenia. Je to rýchly a presný spôsob, ako vypočítať gradient. Učí sa stále gradient descentom z 2. prednášky. Backpropagation mu len dodá smer, ktorým má ísť.

02

Najprv dopredu: forward pass s konkrétnymi číslami

Celú prednášku budeme pracovať s jednou sieťou. Na začiatku má váhy, ktoré XOR ešte nevedia. Zapíšeme si ich:

NeurónVáhy na vstupochBias
h₁ (1. skrytý)w₁₁ = 0,5 (z x₁) · w₁₂ = −0,4 (z x₂)b₁ = 0,1
h₂ (2. skrytý)w₂₁ = 0,3 (z x₁) · w₂₂ = 0,8 (z x₂)b₂ = −0,2
y (výstup)v₁ = 0,6 (z h₁) · v₂ = −0,5 (z h₂)b₃ = 0,2

Ako aktiváciu používame sigmoid σ(z) = 1 / (1 + e−z), hladké „S“ medzi 0 a 1 z prvej prednášky. Pustíme do siete vstup x₁ = 1, x₂ = 0. XOR z neho má dať 1.

z₁ = 0,5·1 + (−0,4)·0 + 0,1 = 0,6   →   h₁ = σ(0,6) = 0,6457
z₂ = 0,3·1 + 0,8·0 + (−0,2) = 0,1   →   h₂ = σ(0,1) = 0,5250
z  = 0,6·0,6457 + (−0,5)·0,5250 + 0,2 = 0,3249   →   y = σ(0,3249) = 0,5805 z je vážený súčet neurónu, h a y sú aktivácie. Signál tečie zľava doprava, preto „forward pass“.

Sieť povedala 0,58, mala povedať 1. Koľko to je chyba? Použijeme štvorec rozdielu ako v 2. prednáške, len s polovicou navyše:

C = ½·(y − t)² = ½·(0,5805 − 1)² = 0,0880 t je cieľ (target). Polovica je tam len pre pohodlie: pri derivovaní sa zruší s dvojkou z mocniny. Či chybu sčítaš, spriemeruješ alebo vynásobíš ½, mení to len mierku gradientu a tú aj tak dolaďuje learning rate.

Teraz chceme vedieť deväť čísel: o koľko sa zmení chyba C, keď trochu pohneme každou z 9 váh. To sú parciálne derivácie ∂C/∂w z 2. prednášky. Spolu tvoria gradient.

03

Intuícia: čo si želá výstupný neurón

Skôr ako prídu vzorce, poďme na to ako 3Blue1Brown. Výstup je 0,58 a mal by byť 1. Výstupný neurón si teda „želá“, aby jeho vážený súčet z bol väčší. Má na to tri spôsoby:

  1. Zvýšiť bias b₃. Najpriamočiarejšie. Bias sa pripočíta vždy, takže pomôže vždy.
  2. Zmeniť váhy v₁ a v₂ úmerne tomu, ako svietia ich neuróny. h₁ svieti 0,65, h₂ svieti 0,52. Zvýšenie váhy pri silnejšie svietiacom neuróne pomôže viac. Váha od neurónu, ktorý nesvieti vôbec, by nepomohla vôbec. Odtiaľ známa veta „neurons that fire together wire together“: posilní sa spojenie od neurónu, ktorý bol aktívny práve vtedy, keď sme chceli viac.
  3. Zmeniť aktivácie h₁ a h₂ úmerne váham. Váha v₁ je kladná (+0,6), takže by pomohlo, keby h₁ svietil viac. Váha v₂ je záporná (−0,5), takže by pomohlo, keby h₂ svietil menej.

Prvé dve veci vieme spraviť priamo, sú to parametre. Tretiu nie. Aktivácie h₁ a h₂ nie sú gombíky, sú to výsledky výpočtu. Dajú sa zmeniť len cez ich váhy a biasy. Z tretieho bodu sa teda stane želanie pre skryté neuróny: „h₁, svieť trochu viac“, „h₂, svieť trochu menej“. A každý skrytý neurón na svoje želanie odpovie presne rovnako: tými istými tromi spôsobmi, len o vrstvu skôr.

Odtiaľ to meno

Želanie sa začne pri výstupe a vrstvu po vrstve sa šíri dozadu k vstupu. Back-propagation znamená doslova „šírenie dozadu“. Šíri sa po tých istých váhach, po ktorých predtým tiekol signál dopredu.

Toto bolo želanie jedného príkladu. Príklad 1, 1 → 0 si bude želať presne opak: menší výstup. Keď spravíme želania pre všetky štyri príklady a spriemerujeme ich, dostaneme smer, ktorý pomôže v priemere. To je presne záporný gradient z 2. prednášky.

Čo znamená δ

Želanie budeme zapisovať ako číslo δ (delta) pri každom neuróne: o koľko sa zmení chyba, keď neurónu trochu zvýšime vážený súčet z. Záporné δ znamená „zvýš ma, chyba klesne“. Kladné δ znamená „zníž ma“. Veľkosť hovorí, ako veľmi na tom záleží.

04

Backpropagation krok za krokom

Toto je jadro celej prednášky. Prejdi si celý výpočet sám. Každý krok zvýrazní neuróny a váhy, ktorých sa týka, a vypíše presnú aritmetiku. Žiadne číslo nie je vymyslené, všetko sa počíta živo.

Vyskúšaj si

Jeden krok učenia, rozobratý na 9 častí

Tlačidlom „Ďalší krok“ ideš dopredu, potom dozadu a nakoniec urobíš update. Po poslednom kroku môžeš spustiť ďalšie kolo s novými váhami. Vstup a learning rate môžeš kedykoľvek zmeniť.

Úloha: pri vstupe 1, 0 sleduj kroky 4 až 6. Prečo má δ₂ opačné znamienko ako δ₁? (Pozri sa na znamienko váhy v₂.) Potom skús vstup 0, 0 a všimni si, že gradienty váh w₁₁ až w₂₂ sú presne 0. Nakoniec daj learning rate 3 a prejdi niekoľko kôl.

Všimni si dve veci. Po prvé, spätný chod používa čísla z forward passu: aktivácie h₁, h₂, y aj váhy. Preto si sieť pri trénovaní všetky medzivýsledky pamätá. Po druhé, gradient váhy, ktorej vstup bol 0, je 0. Váha, ktorá k výsledku neprispela, za chybu nemôže, tak sa nemení.

05

Celý algoritmus v štyroch rovniciach

Čo si práve preklikal, sa dá zapísať štyrmi rovnicami. Platia pre každú sieť, nielen pre našu. Index „in“ znamená neurón, z ktorého váha vychádza. Výraz y(1 − y) je sklon sigmoidu v bode y.

1 · chyba na výstupe (krok 4)
δout = (y − t) · y(1 − y)

Rozdiel od cieľa krát sklon sigmoidu v bode, kde neurón práve je. Chain rule: ∂C/∂z = ∂C/∂y · ∂y/∂z.

2 · gradient váhy (kroky 5 a 7)
∂C/∂w = δcieľ · ain

δ neurónu, do ktorého váha vedie, krát aktivácia, ktorá po nej pritiekla. Pre bias je ain = 1.

3 · δ o vrstvu skôr (krok 6)
δh = (Σ δďalší · w) · h(1 − h)

Sčítaj želania všetkých neurónov, do ktorých h posiela signál, každé vážené váhou spojenia. Potom krát sklon sigmoidu.

4 · update (krok 8)
w ← w − η · ∂C/∂w

Gradient descent z 2. prednášky. η je learning rate. Robí sa naraz pre všetky váhy aj biasy.

Pre náš príklad 1, 0 → 1 to vyjde takto. Skontroluj si to s labom vyššie:

δ = (0,5805 − 1)·0,5805·0,4195 = −0,4195·0,2435 = −0,1022
∂C/∂v₁ = δ·h₁ = −0,1022·0,6457 = −0,0660
∂C/∂v₂ = δ·h₂ = −0,0536    ∂C/∂b₃ = δ = −0,1022
δ₁ = δ·v₁·h₁(1 − h₁) = −0,1022·0,6·0,2288 = −0,0140
δ₂ = δ·v₂·h₂(1 − h₂) = −0,1022·(−0,5)·0,2494 = +0,0127 Záporné δ₁: h₁ má svietiť viac. Kladné δ₂: h₂ má svietiť menej, lebo jeho váha do výstupu je záporná. Presne ako v intuícii z kapitoly 3.

Prečo to funguje: chain rule

V 2. prednáške si videl, že pri reťazi funkcií sa sklony násobia. Váha w₁₁ ovplyvní chybu po reťazi w₁₁ → z₁ → h₁ → z → y → C. Jej gradient je súčin sklonov všetkých článkov:

∂C/∂w₁₁ = ∂z₁/∂w₁₁ · ∂h₁/∂z₁ · ∂z/∂h₁ · ∂y/∂z · ∂C/∂y
         = x₁ · h₁(1−h₁) · v₁ · y(1−y) · (y − t) Posledné dva činitele sú δ výstupu, ďalšie dva z neho robia δ₁, prvý je vstup. Backpropagation je chain rule, pri ktorom si spoločné časti súčinu vypočítaš raz a použiješ znova.

Práve toto „vypočítaj raz a použi znova“ robí backpropagation rýchlym. δ výstupu potrebujú všetky váhy v sieti. Vypočíta sa raz a potom sa len posúva dozadu. Keby mala sieť viac skrytých neurónov napojených na viac výstupov, rovnica 3 by mala v sume viac členov, ale princíp je rovnaký.

06

Neveríš? Over si gradient sám

Gradient je sklon. Sklon sa dá aj zmerať: pohneš váhou o malé Δ, pozrieš, o koľko sa zmenila chyba, a vydelíš. Je to tá hrubá sila z prvej kapitoly. Pre jednu váhu je to v poriadku a je to výborná kontrola, či backpropagation počíta správne. Programátori neurónových sietí to tak naozaj robia, volá sa to gradient check.

Vyskúšaj si

Backpropagation vs. meranie posunom

Klikni na ktorúkoľvek z 9 váh v sieti. Graf ukazuje, ako sa mení chyba C, keď hýbeš len touto jednou váhou. Posuvníkom zvolíš, o koľko váhu posunieš pri meraní.

Úloha: nastav Δ na ±1 a pozri, že meranie je nepresné, sečnica sa od dotyčnice odkláňa. Potom Δ zmenšuj. Pri Δ = 0,001 sa obe čísla zhodujú na päť desatinných miest. Vyber aj váhu w₁₂ pri vstupe 1, 0: krivka je úplne plochá a gradient je 0.

Meranie a backpropagation dávajú to isté číslo. Rozdiel je v cene: meranie potrebuje pre každú váhu jeden beh siete navyše, backpropagation dá všetky naraz. Pri 9 váhach je to jedno. Pri 175 miliardách je to rozdiel medzi „dá sa to“ a „nedá sa to“.

07

Trénovanie naživo

Teraz to celé spustíme dokola. Sieť začne s náhodnými váhami. V každej epoche prejde všetky štyri príklady XOR, pre každý spraví backpropagation, gradienty sčíta a urobí jeden krok. Presne takto to robili aj autori článku z roku 1986. Pridáme ešte momentum: časť minulého kroku sa pripočíta k novému, ako keď sa guľa kotúľa z kopca a naberá rýchlosť. Viac o ňom v kapitole 9.

Vyskúšaj si

Sieť 2-2-1 sa sama naučí XOR

Hrúbka čiary je veľkosť váhy, farba znamienko (modrá kladná, červená záporná). Dole vidíš, čo sieť odpovedá na celom štvorci vstupov, a ako klesá chyba.

Úloha: spusti učenie a sleduj, ako sa zelený pás vytvorí okolo bodov 0, 1 a 1, 0. Všimni si plató na krivke chyby: dlho sa nedeje nič, potom sa chyba náhle prepadne. Potom vypni momentum (α = 0) a porovnaj počet epoch. Nakoniec klikni na „Ukáž zaseknutý prípad“.

Keď sa sieť zasekne

Niektoré náhodné začiatky skončia zle. Chyba klesne na 0,25 alebo 0,33 a ďalej sa nehýbe. Sieť napríklad odpovedá skoro správne na tri body a na štvrtý odpovedá 0,5, alebo oba skryté neuróny skončia v saturácii, kde je sklon sigmoidu takmer nulový. Gradient je tam malý a gradient descent sa nemá kam pohnúť. Takému miestu sa hovorí lokálne minimum alebo plochý plató.

Pri našej malej sieti sa to stáva pri zhruba jednom z desiatich náhodných začiatkov. Riešenie je jednoduché: nové náhodné váhy. Autori článku poctivo písali, že lokálne minimá sú najväčšou slabinou metódy, ale že v praxi sa do zlých minim sieť dostáva zriedka. Pri veľkých sieťach je to ešte menší problém: v priestore s miliardami rozmerov má takmer každé „údolie“ niekde cestu von.

Plató nie je zaseknutie

Ak krivka chyby dlho stojí na 0,5 a potom spadne, to nebolo lokálne minimum, len rovinka. Skryté neuróny si v tej chvíli „hľadali úlohu“. Keď ju našli, chyba rýchlo klesla. Zaseknutá sieť ostane na rovinke aj po tisícoch epoch.

08

Čo sa naučili skryté neuróny

V 1. prednáške sme si ukázali, že skrytá vrstva si vstup preloží do novej podoby, v ktorej je úloha ľahká. Tam sme to nastavili ručne (OR a AND). Teraz sa pozrieme, čo si skryté neuróny našli samy, keď ich trénovala len backpropagation.

Vyskúšaj si

Svet očami výstupného neurónu

Vľavo sú štyri vstupy XOR v pôvodných súradniciach x₁, x₂ a priamky, kde sa každý skrytý neurón „prepína“. Vpravo sú tie isté štyri body v súradniciach h₁, h₂, teda tak, ako ich vidí výstupný neurón. Posuvníkom prechádzaš učením od náhodného začiatku.

Úloha: pusti prehrávanie. Vľavo sa dva body s cieľom 1 nikdy nedajú oddeliť jednou priamkou. Vpravo sa body počas učenia presunú tak, že ich jedna priamka oddelí. Potom natrénuj vlastnú sieť v labe vyššie a klikni na „Vezmi moju sieť“. Tvoja sieť možno našla iné riešenie ako OR a AND.

Toto je odpoveď na otázku z prvej kapitoly. Nikto skrytým neurónom nepovedal, čo majú počítať. Backpropagation im poslala želania a oni sa postupne posunuli tak, aby ich výstup bol pre ďalšiu vrstvu užitočný. Skryté neuróny si vytvoria vlastnú reprezentáciu vstupu. Presne to bolo hlavné posolstvo článku z roku 1986.

09

Článok, ktorý to rozbehol (1986)

V októbri 1986 vyšiel v časopise Nature štvorstranový článok Learning representations by back-propagating errors. Autori: David Rumelhart, Geoffrey Hinton a Ronald Williams. Je to druhý zo štyroch článkov, na ktorých stojí tento kurz.

Z článku (Rumelhart, Hinton, Williams, 1986)

Výsledkom úprav váh je, že vnútorné skryté jednotky, ktoré nie sú súčasťou vstupu ani výstupu, začnú reprezentovať dôležité vlastnosti úlohy. Pravidelnosti úlohy zachytia ich vzájomné pôsobenie.
Voľný preklad z abstraktu. Nature 323, 533–536 (1986).

Slovo representations v názve nie je náhoda. Autori zdôraznili, že staršie metódy, napríklad pravidlo perceptronu, vedeli učiť len váhy, ktoré vedú priamo na výstup. Skryté jednotky museli byť nastavené ručne. Nová metóda prvýkrát ukázala, že sieť si užitočné vnútorné „pojmy“ vytvorí sama.

Rovnice z článku

Článok používa trochu iné značky ako my. xj je vážený súčet jednotky j, yj jej výstup, wji váha od jednotky i k jednotke j, dj želaný výstup. Bias sa v článku rieši trikom: každá jednotka dostane jeden vstup navyše, ktorý má vždy hodnotu 1.

(1) xj = Σi yi · wji      (2) yj = 1 / (1 + e−xj)      (3) E = ½ Σc Σj (yj,c − dj,c)² Forward pass a chyba. c prechádza všetky príklady (cases), j všetky výstupné jednotky. To je presne naše E v labe „Trénovanie naživo“.
∂E/∂yj = yj − dj
∂E/∂xj = ∂E/∂yj · yj(1 − yj)
∂E/∂wji = ∂E/∂xj · yi
∂E/∂yi = Σj ∂E/∂xj · wji Spätný chod. ∂E/∂xj je naše δ. Druhý riadok je rovnica 1, tretí je rovnica 2 a štvrtý spolu s druhým dáva rovnicu 3 z kapitoly 5.
Δw = −ε · ∂E/∂w      Δw(t) = −ε · ∂E/∂w(t) + α · Δw(t−1) Update. ε je learning rate, α je momentum: koľko z minulého kroku sa prenesie do nového. t počíta prechody všetkými príkladmi (sweeps).

Prečo momentum

Autori opísali najprv jednoduchý krok proti gradientu a hneď dodali, že je pomalý. Ich zlepšenie je druhý vzorec vyššie: k novému kroku sa pripočíta α-násobok predchádzajúceho. V smere, kde gradient stále ukazuje rovnako, sa kroky sčítavajú a sieť zrýchľuje. V smere, kde gradient skáče tam a späť, sa kroky navzájom rušia. Najlepšie to vidno v úzkom údolí.

Vyskúšaj si

Momentum v úzkom údolí

Elipsy sú vrstevnice chyby E(w₁, w₂) = ½(0,5·w₁² + 10·w₂²). Údolie je 20-krát strmšie zhora nadol ako zľava doprava. Modrá cesta je obyčajný gradient descent, jantárová má momentum. Kliknutím do plochy zmeníš štart.

Úloha: pri α = 0,9 porovnaj počet krokov do cieľa. Potom zvyšuj learning rate na 0,21: modrá cesta začne kmitať cez údolie a nakoniec vyletí, lebo krok je na strmé steny príliš veľký. Jantárová vydrží. Skús aj α = 0,95 a pozri, ako sa začne kolísať okolo minima.

Dva pokusy z článku

2Zrkadlová symetria

Vstup je 6 bitov. Sieť má povedať, či je reťazec symetrický okolo stredu, napríklad 101101. Stačili jej 2 skryté jednotky. Naučila sa to po 1 425 prechodoch všetkými 64 možnými vstupmi s ε = 0,1 a α = 0,9.

24Dva rodokmene

Dve rovnako stavané rodiny, anglická a talianska, spolu 24 ľudí a 12 vzťahov (otec, teta, synovec…). Sieť dostala trojice ako „Colin má tetu ?“ a mala doplniť osobu.

Pri symetrii sieť našla elegantné riešenie. Váhy na zrkadlových pozíciách sú rovnako veľké, ale s opačným znamienkom, takže symetrický vstup sa vynuluje a obe skryté jednotky ostanú zhasnuté. Veľkosti váh na jednej polovici sú v pomere 1 : 2 : 4, takže žiadny nesymetrický vstup sa vynulovať nedá. Nikto to sieti nenapovedal.

Pri rodokmeňoch bola každá osoba na vstupe zakódovaná jedným neurónom z 24, bez akejkoľvek informácie o tom, kto je kto. Napriek tomu si 6 skrytých jednotiek, ktoré kódovali vstupnú osobu, vytvorilo zmysluplné vlastnosti: jedna rozlišovala, či je osoba Angličan alebo Talian, ďalšia kódovala generáciu (starí rodičia, rodičia, deti) a iná vetvu rodiny. Rovnako ako náš h₁ a h₂ pri XOR, len so zrozumiteľnejším významom.

Autori boli poctiví aj v slabinách. Napísali, že metóda sa môže zaseknúť v lokálnom minime, ale v praxi sa to deje zriedka. A napísali, že ich postup v tejto podobe nie je vierohodný model učenia v mozgu. Je to inžiniersky nástroj, nie biológia.

Kto backpropagation vymyslel?

Poctivá odpoveď: nie autori tohto článku, aspoň nie ako prví. Spätný výpočet derivácií cez reťaz operácií opísal fínsky študent Seppo Linnainmaa už v roku 1970 (dnes sa tomu hovorí reverse-mode automatic differentiation). Paul Werbos navrhol v roku 1974 vo svojej dizertácii použiť ho na neurónové siete. Prínosom článku z roku 1986 bolo, že jasne ukázal, že skryté vrstvy sa takto naučia užitočné reprezentácie, presvedčivo to predviedol na pokusoch a metódu spopularizoval. Odvtedy sa neurónové siete trénujú takmer výlučne takto.

Geoffrey Hinton

Druhý autor článku pracoval na neurónových sieťach aj vtedy, keď to bolo nemoderné. Neskôr sa mu začalo hovoriť „krstný otec AI“ (godfather of AI). V roku 2018 dostal Turingovu cenu spolu s Yoshuom Bengiom a Yannom LeCunom a v roku 2024 Nobelovu cenu za fyziku spolu s Johnom Hopfieldom.

10

Od 9 parametrov k 175 miliardám

Všetko, čo sme robili so sieťou 2-2-1, platí bez zmeny aj pre veľké siete. Sieť na číslice z 1. prednášky má 13 002 parametrov. Výstupných neurónov je 10, takže δ výstupu je 10 čísel. Každý neurón druhej skrytej vrstvy je napojený na všetkých 10 výstupov, takže v rovnici 3 sčíta 10 želaní. A tak ďalej až po vstup.

Vyskúšaj si

Čo si backpropagation želá v sieti na číslice

Skutočná sieť 784-16-16-10 z 1. prednášky. Vyber číslicu. Uvidíš, ako silno svieti každý výstupný neurón a akú zmenu si od neho backpropagation želá (−δ). Pod tým je o jeden krok dozadu 16 neurónov druhej skrytej vrstvy.

Všimni si: správna číslica (zvýraznená) chce takmer vždy rásť, ostatné klesať. Keď si je sieť istá a má pravdu, želania sú malé. Najväčšie želania vznikajú pri neurónoch, ktoré svietia zle, ale nie sú v saturácii. Skús viac vzoriek a nájdi takú, pri ktorej sieť háda zle.

Mini-batche: učenie po kúskoch

V našom labe sme v každej epoche sčítali gradienty zo všetkých 4 príkladov. MNIST má 60 000 príkladov a texty na tréning GPT-3 mali stovky miliárd tokenov. Prejsť všetko pred každým krokom by trvalo večnosť. Preto sa používa stochastic gradient descent z 2. prednášky: náhodne vyberieš malú dávku (mini-batch), napríklad 32 alebo 512 príkladov, spravíš backpropagation pre každý, gradienty spriemeruješ a urobíš krok. Smer nie je dokonalý, ale je dosť dobrý a krokov urobíš oveľa viac.

9Naša sieť 2-2-1

4 príklady. Pár stoviek epoch. Zvládne to prehliadač za zlomok sekundy.

13 002Sieť na číslice

60 000 príkladov, mini-batche. Pár minút na bežnom počítači.

175 mld.GPT-3

Asi 300 miliárd tokenov. Tisíce grafických kariet celé týždne. Algoritmus stále ten istý.

Koľko stojí backpropagation? Spätný chod robí rovnaký druh práce ako dopredný: pre každú váhu jedno násobenie a sčítanie, len v opačnom smere. Autori článku to zdôraznili: náročnosť spätného chodu je rovnakého rádu ako dopredného. V praxi stojí spätný chod zhruba ako jeden až dva dopredné. Gradient všetkých 175 miliárd parametrov teda stojí približne toľko ako dva či tri behy siete, a nie 175 miliárd behov. Bez tejto vlastnosti by žiadny veľký jazykový model neexistoval.

Jeden algoritmus pre všetko

GPT nemá sigmoid, ale iné aktivačné funkcie. Nemá štvorcovú chybu, ale inú (cross-entropy). Má attention a milióny neurónov. Pre backpropagation je to jedno. Pokiaľ vieš pre každý článok reťaze povedať jeho sklon, chain rule poskladá gradient celku. Moderné knižnice (PyTorch, JAX) to robia automaticky.

11

Over si, čo si pochopil

Šesť otázok, niektoré s malým výpočtom. Pero a papier sa zídu.

1. Výstupný neurón so sigmoidom dal y = 0,8, cieľ je t = 1. Aké je jeho δ = (y − t)·y(1 − y)?

2. Skrytý neurón má aktiváciu h = 0,5. Výstupný neurón má δ = 0,1. Aký je gradient váhy v, ktorá ich spája?

3. Výstup má δ = 0,2, váha zo skrytého neurónu do výstupu je v = −1 a skrytý neurón má h = 0,5. Aké je δ skrytého neurónu?

4. Prečo sa pravidlom perceptronu nedajú učiť skryté neuróny?

5. Vstup do siete bol x₁ = 0. Aký je gradient každej váhy, ktorá vychádza z x₁?

6. Čo bolo hlavným posolstvom článku Rumelharta, Hintona a Williamsa z roku 1986?

12

Prvá polovica kurzu je za tebou

Toto bola posledná prednáška o tom, ako fungujú neurónové siete všeobecne. Pozri sa, čo všetko už vieš:

  • Prednáška 1: neurónová sieť je funkcia s veľa nastaviteľnými číslami. Neurón spraví vážený súčet, pridá bias a prepustí ho cez aktivačnú funkciu. Skryté vrstvy si vstup prekladajú do podoby, v ktorej je úloha ľahká.
  • Prednáška 2: učenie je zmenšovanie chyby. Gradient ukazuje smer, kde chyba rastie najrýchlejšie, a gradient descent ide opačne. Learning rate určuje veľkosť kroku, mini-batche ho zrýchľujú.
  • Backpropagation vypočíta gradient všetkých váh naraz. Chyba sa ako δ šíri od výstupu dozadu po tých istých váhach. Gradient váhy = δ cieľového neurónu × aktivácia na jej vstupe.
  • Chain rule je celé tajomstvo. Backpropagation ho používa tak, aby každý medzivýsledok vypočítala len raz, preto stojí len zhruba ako jeden či dva behy siete.
  • Skryté neuróny si samy nájdu reprezentácie, ktoré úlohu zjednodušia. To bol hlavný objav článku z roku 1986 a je to dôvod, prečo hlboké siete fungujú.
  • Ten istý algoritmus trénuje sieť s 9 parametrami aj GPT-3 so 175 miliardami. Mení sa veľkosť, nie princíp.

V druhej polovici kurzu sa presunieme k jazyku. Najprv zistíme, ako sa z textu stanú čísla, s ktorými sieť vie počítať: tokeny a embeddingy. Potom príde attention, srdce transformera, a vrstvy MLP, v ktorých je uložená väčšina vedomostí modelu. Na konci spočítame všetkých 175 miliárd parametrov GPT-3. A pamätaj si: všetky sa nastavili presne tak, ako si to dnes videl na deviatich číslach.

Tretia prednáška je za tebou

Pokračovať na 4. prednášku

Zdroje