Nedávno sme písali o tom, ako vznikol jazykový model ChatGPT – znelo to v princípe jednoducho, tak prečo ho teda nikto nevyrobil skôr? Za odpoveďou sa pozrime do minulosti.
Pred šiestimi rokmi kraľovali jazykovým modelom rekurentné neurónové siete, ktoré získali vďaka jednoduchému triku schopnosť pamäte. Fungovalo to takto:
- Do rekurentnej siete vkladáte jedno slovo za druhým, v poradí v akom idú za sebou v texte.
- Sieť každé slovo spracuje a na výstupe vráti dve veličiny: výstup pre dané slovo a svoj vnútorný stav – svoju pamäť.
- Keď do siete vložíte ďalšie slovo, vložíte spolu s ním aj pamäť po predošlom slove.
Pri uvažovaní o každom slove teda môže sieť čerpať informácie o predošlom texte z pamäte, a na základe každého ďalšieho slova túto pamäť zas poupraviť.
Tento prístup bol revolučný, pretože teoreticky umožňoval neurónovým sieťam spracúvať ľubovoľne dlhé texty, ale mal aj svoje problémy. Napríklad, keďže pri každom slove sieť svoju pamäť trochu poupraví, tak pri dlhých textoch sa môže ľahko stať, že ju príliš prepíše a úplne zabudne, čo bolo na začiatku textu. Ďalší problém je praktický: keďže rekurentná sieť spracúva slová jedno po druhom, jej práca sa nedá rozdeliť na menšie časti, ktoré by sa dali vykonávať paralelne, čo spomaľuje jej tréning.
Ľudia vymysleli množstvo trikov, ako sa s týmito problémami vysporiadať, ale na konci roku 2017 vyšiel článok s provokatívnym titulkom „Pozornosť je všetko čo potrebujete“ [1], ktorý sa na celý problém pozrel z úplne iného uhla. Jeho autori predstavili novú architektúru neurónových sietí, ktorú nazvali transformer, a miesto pamäte jej dali schopnosť pozornosti.
Transformer sa pozerá na celý text súčasne. Pozostáva z vrstiev, a každá vrstva funguje takto:
- Každé jedno slovo porovná so všetkými ostatnými slovami, a rozhodne sa, ktoré z nich sú pre jeho význam dôležité (teda ktorým bude „venovať pozornosť“).
- Vrstva potom každé slovo obohatí o informáciu o slovách, ktoré sú pre jeho význam dôležité, a pošle ho ďalej do ďalšej vrstvy.
Ako teda slovo prechádza vrstvami, je postupne zasadzované do stále bohatšieho kontextu ostatných slov. Napríklad si vezmime vetu:
„Achilles predbehol pani Korytnačku a pohodlne sa usadil na jej chrbát.“
Keď v nej transformer spracúva slovo ‘jej’, určí, že by mal venovať pozornosť hlavne slovu ‘Korytnačka’, zároveň ale nebude venovať veľa pozornosti slovu ‘predbehol’, pretože to pre význam slova ‘jej’ nie je vôbec dôležité.
Transformery rýchlo prekonali pri spracúvaní textu predošlé rekurentné neurónové siete a všetky súčasné veľké jazykové modely využívajú túto architektúru (je ich obrovské množstvo, ChatGPT je len najznámejší, pozri napríklad [2]).
Lenže aj transformery majú svoje slabiny: pozorný čitateľ si možno všimol, že zatiaľ čo rekurentná sieť spracuje každé slovo iba raz (keď si ho ukladá do pamäte), transformer sa na dané slovo musí pozrieť vždy, keď posudzuje jeho význam pre každé ďalšie slovo. Ak má teda text napríklad tisíc slov, transformer musí tisíc krát spracovať všetkých tisíc slov, urobí teda milión operácií, zatiaľ čo rekurentná sieť ich musí urobiť stále iba tisíc. Možno sa teda dočkáme nejakej novej inovácie, ktorá tento problém odstráni a zosadí transformery z ich trónu.
[Ján]PS: Počkať, ale ako si potom ChatGPT pamätá, o čom sme si písali v konverzácií, keď nemá pamäť? Jednoducho, jeho pamäťou je samotný text. ChatGPT sa pozrie na celý text, vygeneruje nové slovo, pridá ho k textu, a potom sa na celý text pozrie zas, aby vygeneroval ďalšie. Žiadnu internú pamäť ChatGPT nemá.
PPS: Prečo sa transformery volajú transformery? Lebo v pôvodnom článku sa autori zaoberali hlavne strojovým prekladom, a teda transformovali text na iný text. S princípom fungovania to nemá nič spoločné.
[1] https://arxiv.org/pdf/1706.03762v5.pdf[2] https://medium.com/geekculture/list-of-open-sourced-fine-tuned-large-language-models-llm-8d95a2e0dc76