Od číslic k jazyku
V prvých troch prednáškach dostala sieť 784 pixelov a vrátila 10 čísel: ako veľmi je obrázok nulou, jednotkou, dvojkou… Naučila sa to sama, gradientným zostupom a backpropagation. Jazykový model funguje prekvapivo podobne. Mení sa len to, čo ide dnu a čo von.
Skratka GPT znamená Generative Pretrained Transformer:
Generuje nový text. Nevyberá z hotových odpovedí, skladá ich po kúskoch.
Najprv sa natrénoval na obrovskom množstve textu. GPT-3 videl pri tréningu 300 miliárd tokenov.
Typ neurónovej siete z roku 2017. Jeho srdce otvoríme v 5. a 6. prednáške.
Hlavná myšlienka
Jazykový model je funkcia: text doteraz → pravdepodobnosť každého možného ďalšieho tokenu. Nič viac. Celé „písanie“ je slučka okolo tejto jednej funkcie.
Tá slučka má štyri kroky:
- Model dostane doterajší text. Napríklad tvoju otázku.
- Vráti pravdepodobnosti. Pre GPT-3 je to 50 257 čísel, jedno pre každý token, ktorý pozná.
- Jeden token sa vyžrebuje podľa týchto pravdepodobností. Nie vždy ten najpravdepodobnejší.
- Token sa pripojí na koniec textu a ide sa znova od kroku 1.
Vyskúšaj si slučku na hračke. Namiesto 175 miliárd parametrov má len tabuľku, ktorá počíta, aké slovo nasledovalo po posledných dvoch slovách v krátkom texte. Slučka je však úplne rovnaká.
Slučka generovania: predpovedz, vyžrebuj, pripoj
Vpravo vidíš pravdepodobnosti ďalšieho tokenu. Žrebuj po jednom, nechaj generovať automaticky, alebo klikni na pruh a vyber token sám. Modré tokeny sú kontext, z ktorého hračka predpovedá.
Úloha: daj teplotu na 0,2 a generuj. Text sa začne opakovať, lebo vyhráva stále to isté. Potom ju daj na 2 a sleduj, ako sa pravdepodobnosti vyrovnajú a text sa stane chaotickejším. Hračka vidí len dve slová dozadu, preto rýchlo stratí niť. GPT-3 vidí 2 048 tokenov.
Hračka má jeden zásadný nedostatok: pozná len dvojice slov, ktoré už videla. Skutočný model si musí poradiť s textom, aký ešte nikdy nevidel. Preto nemôže byť tabuľkou. Je to sieť, ktorá text najprv zmení na čísla a potom s nimi počíta. Celá cesta vyzerá takto:
- Text„Mačka si ľahla na“
- Tokenykúsky slovkapitoly 2 a 3
- Vektoryembedding + polohakapitoly 4 až 7
- 96 vrstievtokeny sa „rozprávajú“prednášky 5 a 6
- Logityskóre pre 50 257 tokenovkapitola 9
- Softmaxpravdepodobnosti → žrebovaniekapitola 9
Prečo nie písmená ani celé slová
Sieť potrebuje pevný zoznam kúskov, z ktorých sa skladá každý text. Tomuto zoznamu hovoríme slovník a jeho položkám tokeny. Ako veľké majú byť tie kúsky? Ponúkajú sa tri možnosti:
Slovník je malý, asi sto znakov. Lenže text je potom veľmi dlhý a jedno písmeno samo osebe skoro nič neznamená.
Text je krátky, ale slovník obrovský. Slovenčina má z každého slova veľa tvarov: mačka, mačky, mačke, mačkou… A čo preklep alebo nové meno?
Kompromis. Časté slová sú jeden token, zriedkavé sa poskladajú z menších kúskov. Nič nie je „neznáme“.
GPT používa tretiu možnosť. Kúsky slov hľadá algoritmus BPE (Byte Pair Encoding). Pôvodne to bola metóda na kompresiu dát z roku 1994. V roku 2016 ju Sennrich a kolegovia použili na strojový preklad a odvtedy ju používa skoro každý jazykový model. Je prekvapivo jednoduchá:
- Začni s jednotlivými znakmi. Každý znak je token.
- Spočítaj všetky susedné dvojice tokenov v trénovacom texte.
- Najčastejšiu dvojicu zlúč do nového tokenu a zapíš si pravidlo.
- Opakuj, kým slovník nemá želanú veľkosť. GPT-2 a GPT-3 sa zastavili po 50 000 zlúčeniach.
Natrénuj si vlastný BPE tokenizér
Každé kliknutie nájde najčastejšiu susednú dvojicu a zlúči ju. Sleduj, ako sa text skracuje a slovník rastie. Medzera je zobrazená ako bodka a patrí k slovu, ktoré po nej nasleduje.
Úloha: pri texte 1 sleduj, ako najskôr vznikne „ma“, potom „·ma“ a po pár krokoch celé slová „·rada.“ a „·mamu“. Pri texte 3 sa rýchlo zrodí token „token“. Všimni si, že zlúčenia nemajú žiadny jazykový význam. Sú len o tom, čo sa v texte často opakuje.
Pravidlá sa ukladajú v poradí, v akom vznikli. Keď potom tokenizér dostane nový text, rozdelí ho na znaky a pravidlá použije v tom istom poradí. Preto ten istý text dá vždy tie isté tokeny.
Skutočný tokenizér GPT-3
GPT-3 používa ten istý tokenizér ako jeho predchodca GPT-2. Má 50 257 tokenov a to číslo má jednoduchý pôvod:
Rozdiel oproti hračke je v tom, že GPT-2 nezačína so znakmi, ale s bajtmi. Každý text sa dá zapísať v kódovaní UTF-8 ako postupnosť bajtov (čísel 0 až 255). Bežné písmeno je jeden bajt, slovenské „č“ sú dva bajty, emoji štyri. Vďaka tomu tokenizér zvládne úplne čokoľvek: čínštinu, kód aj emoji. Nikdy nenarazí na neznámy znak.
Ešte pred zlučovaním sa text rozdelí na slová, čísla a interpunkciu. Medzera sa pritom prilepí na začiatok nasledujúceho slova. Preto je „ world“ aj s medzerou jeden token s ID 995 a „Hello world“ sú dva tokeny: [15496, 995].
Tokenizér GPT-3 priamo v prehliadači
Toto nie je napodobenina. Do prehliadača sa načíta všetkých 50 000 pravidiel zlúčenia z GPT-2 (456 kB) a text sa rozdelí presne tak, ako ho videl GPT-3. Píš čokoľvek. Pod každým tokenom je jeho ID. Ukáž na token a uvidíš jeho bajty a z čoho vznikol.
Úloha: porovnaj slovenský a anglický príklad. Slovenský text má 63 znakov a 30 tokenov, anglický 73 znakov a len 17 tokenov. Nájdi tokeny označené červenou: sú to polovice písmen s diakritikou. Potom napíš svoje meno a zisti, či je jedným tokenom.
Prečo to slovenčine ide horšie? Pravidlá zlúčenia sa učili na textoch z internetu, ktoré boli takmer celé anglické. Anglické slová sa preto často zlúčili do jedného tokenu. Slovenské tvary sa vyskytovali zriedka, takže ostali rozsekané. Písmeno s mäkčeňom alebo dĺžňom má navyše dva bajty a niekedy sa nezlúčia ani tie, takže token je len pol písmena.
Prečo na tom záleží
V angličtine pripadajú na jeden token asi 4 znaky. V slovenčine je to často len 2 až 3. Ten istý text po slovensky teda zaberie viac tokenov, viac miesta v kontextovom okne a viac výpočtu. Za používanie modelov cez API sa platí za tokeny. Novšie modely majú slovníky so 100 000 až 200 000 tokenmi a iným jazykom sa v nich darí lepšie.
Z čísla tokenu na vektor
Tokenizér zmenil text na zoznam ID, napríklad „ cat“ má ID 3797. S takým číslom sa však nedá rozumne počítať. Väčšie ID neznamená „viac“ ničoho, je to len poradové číslo v slovníku. Sieť potrebuje pre každý token celý vektor, teda zoznam čísel, ktoré niečo vyjadrujú.
Prvý krok je one-hot vektor: 50 257 núl a jedna jednotka na pozícii daného tokenu. Keď ním vynásobíš maticu (ako v 1. prednáške, váhy krát vstupy), všetky stĺpce sa vynásobia nulou a ostane presne jeden: stĺpec tohto tokenu.
Tejto matici hovoríme embedding matica. V GPT-3 má 12 288 riadkov a 50 257 stĺpcov. Každý token má svoj stĺpec s 12 288 číslami a tomu stĺpcu hovoríme embedding tokenu. Číslu 12 288 sa hovorí d_model: šírka modelu. S vektormi tejto dĺžky pracuje celý GPT-3 od začiatku po koniec.
Jeden pre každý token zo slovníka.
Dĺžka každého embeddingu, dmodel v GPT-3. Pôvodný Transformer z roku 2017 mal 512.
50 257 × 12 288. Asi 0,35 % zo 175 miliárd parametrov GPT-3.
Kde sa tie čísla vzali? Na začiatku tréningu sú náhodné. Sú to obyčajné váhy siete, presne ako v 1. prednáške, a učia sa rovnako: gradientným zostupom a backpropagation. Keď model zle predpovie ďalší token, chyba stečie späť až k embeddingom tokenov na vstupe a trochu ich posunie.
One-hot vektor vyberie stĺpec
Malá embedding matica: 7 tokenov a 11 čísel pre každý. Klikni na token. Riadok one-hot má jednotku len pod ním, takže násobenie nechá iba jeho stĺpec.
Úloha: porovnaj stĺpce „kráľ“ a „kráľovná“. Líšia sa skoro len v jednom riadku. Tieto hodnoty som pre názornosť nastavil ručne a riadky pomenoval. V GPT-3 sa naučili samé a riadky nemajú mená.
Z článku Attention Is All You Need (2017)
Podobne ako iné modely na prácu s postupnosťami používame naučené embeddingy, ktoré prevedú vstupné a výstupné tokeny na vektory s rozmerom dmodel.Voľný preklad, časť 3.4. Vaswani a kol., 2017.
Význam ako smer v priestore
Vektor s dvoma číslami je bod v rovine, alebo šípka z nuly do toho bodu. Vektor s troma číslami je šípka v priestore. Embedding s 12 288 číslami je šípka v priestore s 12 288 smermi. Taký priestor si nikto nevie predstaviť, ale počíta sa v ňom úplne rovnako ako v rovine.
Po tréningu sa ukáže niečo pozoruhodné. Tokeny s podobným významom majú podobné vektory. Nikto to tak nenaprogramoval. Model sa len učil predpovedať ďalší token. Slová, ktoré sa objavujú v podobných vetách (mačka, pes, škrečok), musia viesť k podobným predpovediam, a tak skončia blízko seba.
Ako zmerať podobnosť: skalárny súčin
Na porovnanie dvoch vektorov sa používa skalárny súčin (dot product). Vynásobíš čísla na rovnakých miestach a všetko sčítaš. Je to presne vážený súčet z 1. prednášky.
Skalárny súčin dvoch šípok
Ťahaj konce šípok a a b. Vpravo sa prepočíta súčin, dĺžky, uhol aj kosínus.
Úloha: natoč šípky kolmo na seba a skontroluj, že súčin je nula. Potom predĺž šípku a na dvojnásobok: súčin sa zdvojnásobí, ale kosínus ostane rovnaký. Kosínus meria len smer, nie dĺžku.
Skalárny súčin si dobre zapamätaj. V 5. prednáške uvidíš, že attention, srdce transformera, je v jadre len veľa skalárnych súčinov: každý token sa pýta, ktoré iné tokeny ukazujú „podobným smerom“ ako jeho otázka.
Prechádzka po priestore embeddingov
V nasledujúcej ukážke je malý ručne postavený embedding: 40 slov, každé s 11 číslami. Na rozdiel od GPT-3 má každá os meno (pohlavie, vek, zviera, krajina…), aby sa dalo čítať, čo čísla znamenajú. V skutočnom modeli sa význam rozprestiera cez veľa osí naraz a žiadna os nemá jednoduché meno.
Prieskumník priestoru embeddingov
Ukáž na slovo a uvidíš jeho vektor a najbližších susedov. Klikni na dve slová a porovnáš ich skalárnym súčinom. Prepínačom vyberieš, ktoré dve osi sa kreslia.
Úloha: porovnaj „kráľ“ a „muž“ (kosínus vysoký), potom „kráľ“ a „Paríž“ (okolo nuly). Pri dvojici „kráľ“ a „kráľovná“ vyjde len okolo 0,5: os pohlavia má opačné znamienko a skalárny súčin zníži. Prepni na pohľad „východ × sever“: krajiny a ich hlavné mestá ležia na tom istom mieste mapy.
Pohľad „Prehľad“ stlačí 11 rozmerov do dvoch tak, aby bolo vidieť čo najviac rozdielov (metóda PCA). Pri každom takom stlačení sa niečo stratí. Dve slová môžu na obrázku ležať pri sebe a v skutočnosti byť ďaleko. Preto sa vždy pozri aj na čísla.
Počítanie so slovami
Ak sú významy smery, dá sa s nimi počítať. Rozdiel kráľovná − kráľ je šípka, ktorá ide z „mužského“ do „ženského“. Rovnakú šípku nájdeš medzi „muž“ a „žena“. Keď ju teda pripočítaš ku „kráľ“, mal by si doraziť niekam ku „kráľovná“.
Vo videu 3Blue1Brown nájdeš aj ďalšie príklady. Taliansko − Nemecko + Hitler padne blízko k „Mussolini“: model si zrejme vytvoril smer niečo ako „talianskosť“ a smer „vodca z obdobia 2. svetovej vojny“. A existuje aj smer „množného čísla“: skalárny súčin s ním je pri slovách „one, two, three, four“ čím ďalej väčší. Nikto tieto smery nenavrhol, vznikli samé pri tréningu.
Aritmetika so slovami: A − B + C = ?
Vyber príklad alebo si poskladaj vlastný. Plná šípka ide z B do A, prerušovaná je tá istá šípka posunutá do C. Kde skončí, tam hľadáme najbližšie slovo. Obrázok je rez priestorom, v ktorom ležia všetky štyri body.
Úloha: skús „Paríž − Francúzsko + Slovensko“ a „šteniatko − pes + mačka“. Potom vymysli príklad, ktorý nevyjde, napríklad „pes − muž + Paríž“. Aritmetika funguje len vtedy, keď rozdiel A − B naozaj zachytáva jednu vlastnosť.
Poctivá poznámka
V ukážke všetko vychádza pekne, lebo osi som nastavil ručne. V skutočných modeloch to platí len približne: výsledok obyčajne nie je presne „kráľovná“, len jej je bližšie než ostatné slová (a vstupné slová sa pri hľadaní vynechávajú). Myšlienka je však správna: v priestore embeddingov majú smery význam.
Kde v texte token stojí
Porovnaj dve vety: „Nie je to zlé, je to dobré.“ a „Nie je to dobré, je to zlé.“ Majú presne tie isté tokeny, len v inom poradí, a opačný význam. Tokeny slova „dobré“ však majú rovnaké embeddingy, či stoja na začiatku vety, alebo na jej konci. A transformer spracúva všetky tokeny naraz, nie jeden po druhom. Bez pomoci by poradie vôbec nevidel.
Riešenie je jednoduché. Ku každému embeddingu sa pripočíta ďalší vektor, ktorý hovorí, na ktorej pozícii token stojí. Autori Transformera na to v roku 2017 použili vlny:
Predstav si hodiny s veľa ručičkami. Prvé dimenzie sú sekundová ručička: krútia sa rýchlo a pri každej pozícii sa výrazne zmenia. Posledné dimenzie sú hodinová ručička: pohnú sa až po stovkách pozícií. Z polohy všetkých ručičiek naraz sa dá presne vyčítať, o ktorú pozíciu ide.
Pozičné kódovanie zo vzorca
Každý riadok je vektor jednej pozície, každý stĺpec jedna dimenzia. Farby sú vypočítané podľa vzorca vyššie. Ukáž na políčko a uvidíš výpočet. Kliknutím vyberáš pozície A a B.
Úloha: sleduj graf podobnosti vpravo dole. Pozície blízko A majú vysokú podobnosť, vzdialené nižšiu. Model tak vie, čo je blízko a čo ďaleko. Všimni si aj, že stĺpce vpravo sa menia veľmi pomaly: to sú hodinové ručičky.
Z článku Attention Is All You Need (2017)
Túto funkciu sme zvolili, lebo sme predpokladali, že modelu umožní ľahko sa naučiť pozerať podľa relatívnej polohy: pre každý pevný posun k sa dá PEpos+k vyjadriť ako lineárna funkcia PEpos. Vyskúšali sme aj naučené pozičné embeddingy a obe verzie dali takmer rovnaké výsledky.Voľný preklad, časť 3.5. Vlnové dĺžky tvoria geometrickú postupnosť od 2π po 10000 · 2π.
GPT-3 vlny nepoužíva. Rovnako ako GPT-2 má druhú maticu, ktorú sa naučí ako všetko ostatné: pozičné embeddingy. Má 2 048 riadkov (jeden pre každú pozíciu) a 12 288 stĺpcov, spolu 25 165 824 parametrov. Vstup do prvej vrstvy je potom obyčajný súčet:
Encoder a decoder: tri rodiny transformerov
Transformer z roku 2017 vznikol na preklad, napríklad z angličtiny do nemčiny. Mal dve časti, každú so 6 vrstvami:
Prečíta celú vetu v pôvodnom jazyku naraz. Každý token sa smie pozrieť na všetky ostatné, dopredu aj dozadu. Výsledok je „porozumenie“ vete: jeden vektor pre každý token.
Píše preklad token po tokene, zľava doprava. Vidí celú pôvodnú vetu (cez encoder), ale z prekladu len to, čo už napísal. Budúcnosť je zamaskovaná.
Z tejto stavebnice vznikli tri rodiny modelov:
| Rodina | Príklady | Na čo sa hodí | Kto koho vidí |
|---|---|---|---|
| Encoder–decoder | Transformer (2017), T5 | preklad, sumarizácia | encoder všetko, decoder doľava |
| Len encoder | BERT (2018) | porozumenie, vyhľadávanie, triedenie textov | všetci všetkých |
| Len decoder | GPT, GPT-2, GPT-3, ChatGPT | písanie textu | každý len doľava |
Tri rodiny: kto sa smie pozerať na koho
Prepínaj architektúry. Klikni na token (v schéme alebo v mriežke) a fialovou sa zvýraznia tokeny, ktoré smie „vidieť“. Pri prekladači a pri GPT krokuj generovanie tlačidlom.
Úloha: pri GPT si pozri mriežku. Je to trojuholník: každý token vidí seba a všetko pred sebou, nič za sebou. Pri BERT je mriežka plná. Prečo BERT nevie písať text? Lebo pri tréningu vždy videl aj slová napravo, ktoré pri písaní ešte neexistujú.
GPT si z Transformera nechal len decoder. Keďže nemá encoder, vypadla aj časť, ktorou sa decoder pozeral do encodera. Ostal stĺpec 96 rovnakých vrstiev, kde každý token vidí len tokeny pred sebou.
Prečo vyhral decoder
Vďaka maske „len doľava“ je každá pozícia v texte samostatný tréningový príklad. Z jedného úseku s 2 048 tokenmi sa model naraz učí 2 048 predpovedí: ďalší token po prvom tokene, po prvých dvoch, po prvých troch… A text na tréning netreba nijako označovať, stačí ho mať.
Ako presne sa tokeny navzájom „rozprávajú“, je téma 5. prednášky. Dnes ti stačí vedieť, kto smie počúvať koho.
Cesta von: z vektora späť na token
Po 96 vrstvách má každá pozícia opäť vektor s 12 288 číslami. Ten na poslednej pozícii obsahuje všetko, čo model potrebuje na predpoveď ďalšieho tokenu. Treba ho už len zmeniť na 50 257 pravdepodobností.
Na to slúži unembedding matica WU: 50 257 riadkov a 12 288 stĺpcov. Každý riadok patrí jednému tokenu. Výsledný vektor sa vynásobí každým riadkom, teda spraví sa 50 257 skalárnych súčinov. Čím viac vektor „ukazuje smerom“ k tokenu, tým vyššie skóre. Tieto skóre sa volajú logity.
Logity môžu byť akékoľvek čísla, kladné aj záporné. Softmax ich najprv umocní (ex je vždy kladné a veľké čísla ešte zväčší) a potom vydelí súčtom, aby dali spolu 1. Teplota T určuje, aká ostrá bude výsledná distribúcia.
Logity, softmax a teplota
Osem kandidátov na ďalší token. Ťahaj ich logity, meň teplotu a top-k. Tlačidlo „Vyžrebuj 100“ ukáže, ako často by model ktorý token naozaj vybral.
Úloha: pri teplote 0,1 dostane skoro celú pravdepodobnosť najlepší token. Pri teplote 2 má šancu aj „mesiac“. Zdvihni logit tokenu „banán“ o 1 (pri teplote 1): jeho pravdepodobnosť vzrastie asi 2,7-krát, lebo e1 ≈ 2,7.
- Teplota blízko 0: model vyberá vždy najpravdepodobnejší token. Text je istý, ale často sa opakuje.
- Teplota 1: pravdepodobnosti presne také, aké sa model naučil.
- Teplota nad 1: šancu dostanú aj nepravdepodobné tokeny. Text je kreatívnejší, ale aj chaotickejší.
- Top-k a top-p: pred žrebovaním sa zahodí „chvost“ nezmyselných tokenov. Top-k nechá k najlepších, top-p nechá najmenšiu skupinu najlepších tokenov, ktorá má spolu pravdepodobnosť aspoň p.
A kde je tu učenie?
Pri tréningu sa nežrebuje. Pozrieme sa, akú pravdepodobnosť dal model tokenu, ktorý v texte naozaj nasledoval. Chyba je −log tejto pravdepodobnosti (cross-entropy). Je to chyba siete z 2. prednášky, len pre slová. Backpropagation ju potom pošle späť cez WU, všetkých 96 vrstiev až po embeddingy.
Mimochodom, pôvodný Transformer aj GPT-2 používajú pre WE a WU tú istú maticu (len otočenú). Je to logické: token, ktorý sa „vkladá“ ako vektor, by mal mať ten istý smer, keď sa predpovedá. 3Blue1Brown ich vo svojom súčte parametrov ráta oddelene.
Kontextové okno: 2 048 tokenov
GPT-3 spracuje naraz najviac 2 048 tokenov. Tomu sa hovorí kontextové okno. Je to pevná hranica: matica pozičných embeddingov má presne 2 048 riadkov, takže pre pozíciu 2 049 jednoducho neexistuje vektor.
Maximálna dĺžka vstupu GPT-3 (nctx v článku). Otázka aj odpoveď sa musia zmestiť dovnútra.
Asi tri strany textu. Po slovensky sa zmestí menej, lebo slovenské slová majú viac tokenov.
Váhy sa počas rozhovoru nemenia. Model si „pamätá“ len to, čo má práve v okne.
Všetko, čo model o rozhovore „vie“, musí byť v tom okne. Keď sa s chatbotom rozprávaš, celá doterajšia konverzácia sa mu pri každej odpovedi posiela znova. Keď je dlhšia ako okno, najstaršie časti sa musia odrezať alebo zhrnúť. Preto model niekedy „zabudne“, čo si mu povedal na začiatku.
Novšie modely majú okná s desiatkami tisíc až miliónmi tokenov. Princíp je však rovnaký: model vidí len to, čo je v okne, a z toho predpovedá jeden ďalší token.
Over si, čo si pochopil
Šesť krátkych otázok. Nič sa nikam neposiela, je to len pre teba.
1. Koľko parametrov má embedding matica GPT-3?
Každý z 50 257 tokenov má vektor s 12 288 číslami: 617 558 016 parametrov. 12 288 × 2 048 je matica pozičných embeddingov a 175 miliárd je celý model.
2. Prečo má slovenská veta viac tokenov ako rovnako dlhá anglická?
Zlúčenia vznikli z najčastejších dvojíc v trénovacom texte, ktorý bol takmer celý anglický. Slovenské tvary ostali rozsekané a „č“ či „í“ sa niekedy rozpadne až na dva tokeny.
3. Dva embeddingy ukazujú presne opačným smerom. Aký je ich skalárny súčin?
Opačný smer znamená uhol 180° a kosínus −1. Skalárny súčin je teda záporný. Nula vyjde pri kolmých vektoroch.
4. Prečo sa ku embeddingu pripočítava pozičný vektor?
„Nie je to zlé, je to dobré“ a „Nie je to dobré, je to zlé“ majú tie isté tokeny. Bez informácie o polohe by ich model nevedel rozlíšiť.
5. Do ktorej rodiny patrí GPT-3?
GPT si z Transformera nechal len stĺpec decoder vrstiev s maskou „len doľava“. Preto vie písať text zľava doprava a učiť sa z každej pozície naraz.
6. Čo sa stane, keď teplotu znížiš skoro na nulu?
Delenie malou teplotou roztiahne rozdiely medzi logitmi, takže softmax dá skoro celú pravdepodobnosť najlepšiemu tokenu. Logity sa nemenia, mení sa len ich prevod na pravdepodobnosti.
Čo si odnášaš
- Jazykový model je funkcia: text doteraz → pravdepodobnosti ďalšieho tokenu. Písanie je slučka: predpovedz, vyžrebuj, pripoj, opakuj.
- Tokeny sú kúsky slov, ktoré našiel algoritmus BPE. GPT-3 ich má 50 257 a slovenčina sa rozpadá na viac tokenov ako angličtina.
- Embedding matica (12 288 × 50 257) je tabuľka naučených váh. Každý token dostane svoj stĺpec: vektor s 12 288 číslami.
- Význam je smer. Podobné tokeny majú podobné vektory a skalárny súčin meria, ako veľmi.
- Poloha sa pripočíta ako ďalší vektor: vlny v roku 2017, naučená matica 2 048 × 12 288 v GPT-3.
- GPT je len decoder: každý token vidí iba to, čo je pred ním. Na výstupe unembedding dá logity a softmax s teplotou z nich spraví pravdepodobnosti.
Vieme teda, ako sa text dostane dnu a ako sa slovo dostane von. Medzi tým je 96 vrstiev, ktoré z izolovaných embeddingov spravia vektory plné kontextu. Slovo „kľúč“ musí vo vete o zámku znamenať niečo iné ako vo vete o hudbe. Ako sa to deje, ukáže attention v ďalšej prednáške.
Štvrtá prednáška je za tebou
Zdroje
- T. Brown a kol.: Language Models are Few-Shot Learners (GPT-3). 2020.
- A. Vaswani a kol.: Attention Is All You Need. 2017. Časti 3.1, 3.4 a 3.5.
- 3Blue1Brown: Transformers, the tech behind LLMs (video, 2024).
- A. Radford a kol.: Language Models are Unsupervised Multitask Learners (GPT-2, byte-level BPE). 2019.
- R. Sennrich, B. Haddow, A. Birch: Neural Machine Translation of Rare Words with Subword Units (BPE). 2016.
- T. Mikolov a kol.: Efficient Estimation of Word Representations in Vector Space (word2vec). 2013.
- J. Devlin a kol.: BERT. 2018.
- Slovník a pravidlá zlúčenia GPT-2: openai-community/gpt2 (licencia MIT).