Kako transformer zapravo radi (bez matematike)
Spojler: nema tamo unutra malog čovječuljka koji razmišlja — ima gomilu pogađanja koja se pretvaraju u dobar dan
Prošlo je poglavlje, sjećaš se — ChatGPT, milijun korisnika u pet dana, tvoja teta piše pjesme za unukovu krizmu, a šef traži da mu AI napiše mail koji je mogao sam sastaviti u tri minute. Sve je odjednom AI. Firma za dostavu hrane ima AI. Aplikacija za budilicu ima AI. Netko je na automat za kavu stavio natpis „AI”, kunem se da sam to vidio negdje, i vjerojatno je unutra samo običan termostat koji se pravi pametan.
I tu nastaje zanimljiv fenomen: riječ koju svi izgovaraju po deset puta dnevno, a koju gotovo nitko ne bi znao objasniti da ga uhvatiš na ulici i pitaš. Pitaj prosječnog čovjeka što se točno događa kad upiše pitanje u ChatGPT i dobije odgovor. Dobit ćeš nešto između sažetka nekog SF filma i sažaljivog pogleda. Mozak? Baza podataka koja u stvarnom vremenu pretražuje internet? Mali čovječuljak u kutiji koji čita i piše brzinom svjetlosti? Sve pogrešno, i sve razumljivo — jer nitko im nije sjeo i objasnio to na ljudskom jeziku.
E, to ćemo sad objasniti. Bez ijedne formule. Ozbiljno — nema matematike u ovom poglavlju, nema grčkih slova, nema matrica koje se množe. Ne zato što bi te te matrice ubile (iako, možda bi), nego zato što razumijevanje koncepta ne ovisi o poznavanju notacije. Možeš razumjeti kako auto vozi bez da znaš termodinamiku motora. Ovo je ta vrsta objašnjenja.
Zamislit ćemo da sjedimo, ti i ja, i da ti stvarno, iskreno, ne znaš ništa o ovome — a to je najbolja pozicija za učenje koju čovjek može imati. Postavljat ćeš pitanja koja djeluju glupo. „Pa kako on onda zna sve to?” „Zašto onda griješi ako je toliko naučio?” „Ako ne razumije ništa, kako zvuči kao da razumije sve?” Ta pitanja nisu glupa. Ta pitanja su, redom, ona koja ni polovica ljudi koji o AI-ju pišu naslove u novinama ne postavlja sebi prije nego stisne objavi.
Do kraja ovog poglavlja znat ćeš zašto stroj koji je napisao genijalan esej istim dahom izmisli nepostojeći citat i izgovori ga s istim samopouzdanjem kao i sve ostalo. Znat ćeš zašto zaboravlja što si mu rekao pet minuta ranije. I znat ćeš zašto, kad kaže »ne znam«, to gotovo nikad nije istina — nego trik koji su ga ljudi naučili govoriti.
Dobro, kreni polako — pita laik, i ruku na srce, ima pravo pitati. Svi zadnje dvije godine bacaju riječ AI kao da je čarobni štapić, kao da je netko u nekom podrumu skuhao malu digitalnu dušu i pustio je da razmišlja. Pa dobro, što ta stvar STVARNO radi kad upišem pitanje i pritisnem enter?
Odgovor je razočaravajuće jednostavan, i zato ga nitko ne voli izgovoriti naglas na konferencijama gdje je ulaznica tristo eura: stroj pogađa sljedeći komad teksta. To je to. Cijela predstava, sav hype, sve naslovnice o superinteligenciji — sve se svodi na mašinu koja, kad joj daš početak, pokušava pogoditi što bi razuman čovjek napisao dalje. I onda to napiše. I onda pogađa sljedeći komad. I onda sljedeći. Do beskraja, ili dok ne stavi točku i stane.
Čekaj, kaže laik, komad? Zašto komad, a ne riječ? Zašto ne slovo? E vidiš, to je dobro pitanje, bolje nego što izgleda. Stroj ne razmišlja u riječima kao ti i ja, ali ni u slovima, jer bi to bio prespor i preglup način da se pamte obrasci jezika. Umjesto toga, tekst se sječe na komadiće koji se zovu tokeni — ne baš slovo, ne baš riječ, nešto između. Kraća, česta riječ kao „i” ili „je” obično je jedan token. Duža ili neobična riječ zna se raspasti na više komada. Uzmi riječ nevjerojatno. Model je vrlo vjerojatno neće gledati kao jednu cjelinu, nego kao niz komada — otprilike kao ne-vjer-o-jat-no. Grozno zvuči kad to napišeš razdvojeno, ali stroju je to sasvim prirodno: on ni ne zna da je to jedna riječ, on zna samo da iza komada „ne” često dolazi komad „vjer”, a iza „vjer” često „o”, i tako dalje.
Zvuči kao da je pametan zato što slaže slova pravim redom, kaže laik, sumnjičavo. Zvuči, da. Ali ono što on radi u svakom trenu jest čisto pogađanje: koji token najvjerojatnije dolazi iza svih tokena koje je do sad vidio? I nije bitno je li taj token slovo, riječ, dio riječi ili znak interpunkcije — nema ništa sveto u toj jedinici, može biti bilo koji komad teksta koji je model naučio prepoznavati, isto kao što u primjeru s API-jem nije bilo ništa specifično u riječi koju šalješ, mogla je biti bilo koja, poput „lopta”. Princip je identičan: token je samo etiketa na kutiji, ne magija u kutiji.
Ali čekaj, kaže laik, ako samo pogađa sljedeći komad — kako onda ispadne smislen tekst, a ne gomila nasumičnih riječi? Dobro pitanje, i strpi se s njim još malo, jer to je upravo tema sljedećeg dijela ove priče: kako stroj bira KOJU riječ pogoditi i zašto to pogađanje, kad ga naslažeš dovoljno puta zaredom, počne izgledati zapanjujuće poput razmišljanja. Za sada ti je bitno samo ovo, upiši ga negdje u glavu i vrati se na njega sljedeći put kad te netko impresionira demonstracijom u konferencijskoj dvorani: nema tu razmišljanja u smislu u kojem ti razmišljaš prije nego što nešto kažeš. Ima samo tisuću, milijun, milijardu malih pogodaka koji se nižu jedan za drugim, brzo, dovoljno brzo da to izgleda kao tečnost, kao stil, kao — nemoj se prevariti — kao pamet.
Pojednostavljujem, priznajem — ima puno više slojeva ispod ovoga i doći ćemo do njih. Ali ako iz ove sekcije izvučeš samo jednu stvar, neka bude ova: svaki put kad model kaže nešto genijalno, on nije znao da je genijalno. On je samo pogodio sljedeći komad, i onda sljedeći, i sljedeći — i slučilo se da je poredak tih komada bio takav da ga ti, čovjek koji čita, proglasiš genijalnim.

"Kako zna KOJU riječ?" — pažnja
— Dobro, shvatio sam ono s pogađanjem sljedećeg komada. Ali otkud stroj zna KOJU riječ da pogleda kad pogađa? Kad ja pišem rečenicu, ne gledam baš svaku riječ koju sam ikad napisao u životu.
Ne gledaš, ali gledaš više nego što misliš. Uzmi rečenicu: „Marko je uzeo knjigu i stavio ju je na stol.” Kad dođeš do riječi „ju”, tvoj mozak u trenu, bez da razmišljaš, skoči nekoliko riječi unatrag i spoji „ju” s „knjigu”. Nisi svjestan da to radiš — radiš to otkad znaš govoriti. E, upravo to, taj skok unatrag i spajanje, model radi za SVAKU riječ koju generira. Samo što on to ne radi instinktom, nego računanjem — i to za baš svaku riječ, prema baš svakoj prijašnjoj riječi.
— Znači gleda cijelu rečenicu prije svake nove riječi?
Gleda cijeli tekst do tog trenutka, ne samo rečenicu. I ne samo da gleda — vaga. Za svaku riječ koju je već napisao dodijeli neku vrijednost: koliko je ta riječ bitna za ono što upravo piše. Tome se u struci kaže »attention«, pažnja, i to je, otkad su ga 2017. smislili neki tipovi u Googleu, doslovno ono što je pokrenulo cijelu ovu eru u kojoj sad živimo. Cijela ta arhitektura — pažnja plus hrpa slojeva naslaganih jedan na drugi — zove se baš »transformer«, otud i naslov ovog poglavlja; a ono „GPT” iz ChatGPT-a znači ništa manje egzotično nego Generative Pre-trained Transformer, generativni, prethodno istrenirani transformer. Ne šalim se — ako postoji jedna ideja koja je zaslužna za ChatGPT, GPT-ove, sve to, ta je ideja pažnja.
Zamisli konkretnije. Model piše rečenicu i dolazi do zamjenice „on”. Prije nego što odluči što dolazi dalje, taj „on” baci pogled unatrag, kroz sve prijašnje riječi, i pita se: na koga se ja, „on”, ovdje odnosim? Ako je prije toga stajalo „Ivan je ušao u sobu”, „on” će najviše pažnje posvetiti riječi „Ivan”, malo manje riječi „sobu”, a riječima kao „je” i „u” gotovo nikakvu. To vaganje, koliko pažnje kome, model radi za svaku jedinu riječ, prema svakoj prijašnjoj riječi, i to sve u isto vrijeme. Zvuči kao ludilo, i jest, matematički je to naporno kao vrag, ali rezultat je da tekst konačno ima smisla kroz cijelu dužinu, a ne samo riječ po riječ nasumce.
— OK, ali onda — koliko unatrag on može gledati? Ja, ako mi netko spomene nešto što je rekao prije pola sata, još se sjećam. Sjeća li se stroj svega što smo pričali od početka razgovora?
Ovo je dobro pitanje, i baš ovdje leži jedno od najvećih i najfrustrirajućih ograničenja ovih modela. Svaki model ima nešto što se zove kontekstni prozor — zamisli ga kao dužinu papira koju stroj drži pred sobom u tom trenutku. Sve što je napisano na tom papiru, on može pogledati i vagati. Sve što je ispalo s papira, kao da nikad nije postojalo. Ne „zaboravlja” u onom smislu kako ti zaboraviš nešto — jednostavno, fizički, to više nije na papiru koji drži u ruci.
Zato ti se čini da AI „zaboravi” što si mu rekao na početku dugog razgovora. Nije prestao paziti, nikad nije ni gledao tamo — ta rečenica je pala s papira. Stariji modeli su imali kratke papire, par tisuća riječi, i znao si to osjetiti već nakon desetak minuta pričanja. Noviji imaju papire duge kao cijeli romani. Ali papir, koliko god dug, ima kraj. I to je bitno da znaš, ne kao tehnički detalj nego kao praktičan savjet — ako vodiš dugačak razgovor s AI-jem i primijetiš da je počeo „zaboravljati” stvari s početka, nije glup, nije te zanemario. Fizički mu je ispalo s papira.
— A ta pažnja, to vaganje — to je ono zbog čega tekst zvuči povezano, a ne kao nasumična gomila riječi?
Točno to. Veći modeli počnu pisati tekst koji drži formu kroz cijeli odlomak, ne samo rečenicu po rečenicu — i pažnja (na engleskom „attention”) je mehanika iza toga. Kad svaka nova riječ vidi ne samo prošlu riječ nego čitav kontekst iza sebe, i vaga ga pametno, dobiješ tekst koji se sjeća da je subjekt bio ženskog roda pet rečenica ranije, da je priča bila o Zagrebu a ne o Splitu, da je ton bio formalan a ne šaljiv. Bez pažnje, imao bi stroj koji svaku riječ generira gotovo neovisno od prethodnih — a to zvuči, i to zvuči najbolje kao opis, kao da netko baca riječi na kockicama koje su malo teže na jednu stranu.
Zamisli sad sebe kao pisca. Da bi napisao koherentan pasus, ne trebaš pamtiti svaku riječ koju si ikad izgovorio u životu — ali prije nego napišeš sljedeću riječ u rečenici, tvoj mozak baci brz pogled na cijelu dosadašnju rečenicu i provjeri slaže li se rod, broj, smisao. To je, grubo rečeno i bez ičeg tehničkog, isto što model radi — samo što on to radi mehanički, računski, za baš svaku riječ, dok ti to isto radiš u djeliću sekunde i ne primjećuješ da radiš.
— Dobro, sad mi je jasnije zašto zna povezati „on” s pravom osobom. Ali otkud mu, uopće, sve to znanje o svijetu da bi imao što povezivati?
E, to je sljedeće pitanje, i tu stvari postaju — zanimljivije. I malo mračnije.

"Odakle mu znanje?" — trening
— Dobro, malo mi je jasnije kako pogađa sljedeću riječ i zašto pazi na prethodne. Ali odakle mu uopće znanje da napiše sonet, objasni fotosintezu i skuha recept za lazanje, sve u istom razgovoru?
Iz čitanja. Ne knjižnice u kutu sobe, nego otprilike cijelog dostupnog interneta — forumi, Wikipedija, novine, digitalizirane knjige, kod s GitHuba, znanstveni radovi, blogovi ljudi koji pišu o svom mačku. Sve to, u ogromnim količinama, provuklo se kroz model tijekom treninga, a trening je zapravo taj isti trik iz prošlog odlomka — pogodi sljedeći token — samo odrađen milijarde i milijarde puta, dok je model bio zatvoren u sobi s cijelim internetom i nitko ga nije puštao van dok ne prestane griješiti tako glupo.
— Znači, negdje u njemu postoji zapisano „fotosinteza je proces u kojem…”, kao rečenica koju je pročitao i sad je samo izvlači?
Ne. I ovo je mjesto gdje većina ljudi zamišlja neku ogromnu bazu podataka, Ctrl+F preko interneta. Nije. Kad se trening završi, taj cijeli internet se ne čuva — model se sažme u gomilu brojeva, parametara, zovu ih i „težine”, i tih brojeva ima od nekoliko milijardi do preko bilijun, ovisno o modelu. Ti brojevi se ne postave sami od sebe, nego se guraju polako, tijekom cijelog treninga: model pokuša pogoditi sljedeći komad riječi, ako pogodi krivo — a u početku gotovo uvijek pogodi krivo — svi brojevi koji su doveli do tog krivog pogotka se sitno pomaknu, malo bliže onome što je stvarno trebalo doći. To se ponovi milijarde puta, na milijunima rečenica, dok se ti pomaci ne slegnu u nešto što redovito pogađa. Zamisli da pročitaš tisuću knjiga o povijesti, pa zatvoriš sve knjige i zapamtiš samo — osjećaj. Obrasce. Kako se stvari obično slažu, koje riječi idu uz koje, kakva je logika argumenta, kakav je ton kad nešto objašnjavaš a kakav kad se ispričavaš. Brojevi u modelu su taj destilirani osjećaj, ne tekst. Milijarde gumbića, svaki malo podešen tim čitanjem, i zajedno tvore nešto što reagira na jezik onako kako reagira jezik koji je vidjelo.
Zato model ne može citirati stranicu i broj. Ne zato što je lijen, nego zato što ta stranica fizički ne postoji u njemu. Ono što u njemu postoji je magla uzoraka iz koje se, kad pitaš, izvlači nešto što zvuči kao ono što bi na toj stranici pisalo. Ponekad pogodi točno. Ponekad izmisli broj koji zvuči jednako uvjerljivo kao i pravi, jer za model — u ovom trenutku — nema razlike. Oboje je »ono što obično slijedi« nakon tvog pitanja.
— OK, ali onda mi je još čudnije da griješi. Ako je pojeo cijelu knjižnicu, kako uopće nešto zabrlja?
Zato što nije pojeo istinu. Pojeo je tekst. A internet, da ne zaboravimo, nije baza provjerenih činjenica — pun je grešaka, šala, ironije koju netko nije skužio da je ironija, foruma gdje se ljudi svađaju oko krivih datuma i pobjeđuje onaj koji glasnije piše. Model je iz svega toga izvukao uzorak »kako ljudi obično govore o X«, a ne presudu »što je istina o X«. Kad ga pitaš nešto što se u tekstovima često i pogrešno tvrdi, on će to ponoviti s istim samopouzdanjem kao i točnu činjenicu — jer njemu, iznutra, obje rečenice zvuče jednako glatko. Ne provjerava, samo nastavlja obrazac. A to, baš to, su vrata za sljedeće pitanje — jer priča ovdje prestaje biti o tome kako model zna, i počinje biti o tome zašto tako uvjerljivo laže.

"Zašto laže tako uvjerljivo?" — halucinacije
— OK, ali čekaj. Ako samo pogađa sljedeći komad teksta, kako to da zna toliko toga? Zna glavne gradove, zna kad je počeo Drugi svjetski rat, zna kako se piše funkcija u Pythonu. Zvuči kao da ZNA.
Dobro pitanje, i evo gdje pucaš najveći mit o ovoj temi u jednom potezu. Ne zna. Nikad nije znao. Zna samo što OBIČNO dolazi iza čega. A budući da je u milijardama tekstova glavni grad Francuske skoro uvijek naveden kao Pariz, model će skoro uvijek reći Pariz. Ne zato što je bio u Parizu, ne zato što je provjerio na karti, nego zato što je Pariz statistički najvjerojatniji sljedeći komad teksta iza rečenice „Glavni grad Francuske je”. Slučajno se to poklapa s istinom. Slučajno, u smislu — istina je toliko dominantna u podacima da pobjeđuje kao najvjerojatnija opcija.
I tu dolazimo do srca cijele priče, do stvari koju moraš zapamtiti i ponoviti sljedeći put kad te netko pita zašto ChatGPT „laže”: model nema pojam istine. Nula. Ništa. Nema ni ladicu u kojoj bi taj pojam čuvao. Ima samo pojam vjerojatnosti. On se ne pita „je li ovo točno?”, on se pita „što obično slijedi nakon ovoga?”. To su dva potpuno različita pitanja, i cijela drama oko halucinacija dolazi iz činjenice da su odgovori na njih ČESTO isti, ali ne UVIJEK.
— Pa dobro, ako ne zna gdje je istina, zašto ne kaže jednostavno „ne znam” kad nije siguran? Meni to zvuči kao poštena opcija.
Zvuči, i jest — ali samo za ljude, koji imaju taj mehanizam ugrađen negdje u glavi, onaj osjećaj „čekaj, ja ovo baš i ne znam sigurno”. Model taj mehanizam nema, osim ako ga netko nije eksplicitno naučio da ga koristi. A njega su, sjeti se, trenirali da nastavlja tekst na način na koji bi ga nastavio nekakav prosječan autoritativan tekst s interneta. A koji autor na internetu, kad piše članak, kad piše odgovor, kad piše bilo što — piše u stilu „možda, ne znam, nisam siguran, vjerojatno griješim”? Skoro nitko. Ljudi na internetu, kao i inače u životu, pišu uvjereno. Čak i kad su totalno u krivu. Posebno kad su totalno u krivu, ako ćemo biti iskreni. Model je to upio kao stil. Naučio je zvučati sigurno, jer zvučati sigurno je ono što je vidio milijardu puta. Kad ne zna odgovor, ne prelazi u modus nesigurnosti — nastavlja u istom uvjerenom tonu, samo umjesto činjenice ubacuje najvjerojatniji oblik činjenice. Rečenicu koja zvuči kao činjenica. Ime koje zvuči kao ime pravog znanstvenog rada. Broj koji zvuči kao pravi datum. Sve krivo, sve u savršenoj gramatici, sve s istim samopouzdanjem kojim bi ti rekao i da je Zemlja okrugla.
— Dobro, uplašio si me. Pa što sad, ne smijem ga koristiti?
Smiješ, samo ga koristi kao — ovo je najbolja usporedba koju imam — kao onog jednog kompića koji je stvarno pametan, stvarno brzo čita i pamti, ali koji ti isto uvjereno kaže i istinu i sranje, i sam ne zna razliku. Koristan? Jako. Pouzdan svjedok na sudu? Nikad u životu. Pravilo je jednostavno, čak dosadno jednostavno: sve što ti model kaže a bitno je — provjeri. Ime, broj, citat, zakon, lijek, adresu, datum — pogotovo ako to djeluje presuviše specifično i uredno. Ne jer je model zloćudan, nije, nema tu zle namjere, nema namjere ikakve — nego jer jednostavno ne postoji unutarnji alarm koji bi mu rekao „stani, ovo izmišljam”. Taj alarm si ti. Uvijek si bio ti.

"Je li to inteligencija?"
Dobro, pita laik, zadnje pitanje, obećavam. Je li to onda inteligentno ili nije? Samo reci da ili ne, moram ići.
Ne mogu, i to iz poštenog razloga: ne znaju ni ljudi koji se ovim bave za život. Ne glumim skromnost, stvarno je tako — postoje dva tabora, oba puna ljudi s doktoratima, i svađaju se već godinama bez pobjednika.
Tabor jedan kaže: to je samo papiga. Točnije, „stohastička papiga” — termin koji je smislila lingvistica Emily Bender i koji je zalijepio za temu kao čičak za vunenu čarapu, jer je predobar da bi ga se odbacilo. Poanta: model nema pojma o čemu priča. On je, nakon što je progutao ogromne količine teksta s interneta, naučio samo koja riječ statistički najčešće slijedi iza koje. Papiga koja je čula ljudski govor toliko puta da zvuči kao da razumije — ali unutra je prazno. Nema svijesti, nema slike svijeta, nema ničega osim jedne goleme tablice vjerojatnosti, istrenirane da izgleda pametno.
Tabor dva kaže: fino, statistika, ali statistika koja u nekom trenutku počne raditi stvari koje statistika ne bi trebala moći raditi. To se zove emergentna sposobnost — model koji nikad nije treniran da rješava matematičke zagonetke ili piše kod u stilu koji ne postoji u trening podacima odjednom to napravi, jer je na dovoljno velikoj skali nešto — nitko točno ne zna što — proklizalo iz čistog nabrajanja u nešto što barem funkcionalno sliči rasuđivanju. Ako hoda kao patka i rasuđuje kao patka, kažu, možda je bitno manje važno je li patka unutra svjesna da je patka.
Ja se, iskreno, ne stavljam ni na jednu stranu, i to nije izbjegavanje, to je pošten opis stanja stvari. Struka se ne slaže, pa se ja sigurno ne usudim presuditi umjesto nje. Ono što je meni draže od etikete jest funkcija — a funkcija je poznata i dogovorena, bez obzira zove li se to inteligencija ili papiga na steroidima.
Funkcija je ovo: koristan alat, nepouzdan svjedok. Zapamti tu rečenicu, ona vrijedi više od cijele filozofske rasprave. Koristan alat — jer stvarno pomaže, piše, sažima, objašnjava, ubrzava posao koji bi inače trajao satima. Nepouzdan svjedok — jer sve to radi s istim samopouzdanjem kad je u pravu i kad je potpuno pored istine, a ti nemaš ugrađeni alarm koji zvoni kad je drugo. Nije čovjek, ne razumije te kao osoba. Nije kalkulator, ne daje ti provjerljivo točan broj svaki put. Nešto treće, nova kategorija za koju stari rječnik nije bio spreman, i zato se toliko svađamo oko naziva — jer nemamo pretinac u koji to spada.
I sad, kad zatvoriš ovo poglavlje, stojiš u boljoj poziciji od devedeset posto ljudi koji o ovome pišu naslove za novine. Znaš da model predviđa sljedeći komad teksta, a ne da čita tvoje pitanje kao osoba. Znaš zašto pažnja daje koherentnost, znaš zašto zaboravlja stariji dio razgovora, znaš da nije naučio istinu nego uzorke, i znaš — ovo je najvažnije — zašto zvuči isto uvjerljivo kad izmišlja i kad govori istinu. Usput, otud i naslov ovog poglavlja — transformer, ono što ono »T« u GPT-u znači. To znanje se ne mijenja bez obzira dobije li rasprava papiga-ili-nije ikad pobjednika. Ti sad znaš dovoljno da mu ne vjeruješ na riječ, a to je, realno, jedina obrana koja postoji.
Priznajem, negdje sam po putu vjerojatno nešto tehnički zaglavio ili pojednostavio više nego što bi neki inženjer iz laboratorija odobrio — ali koncept, koncept sad imaš, i to je bio jedini cilj ovog poglavlja.