Transformer (model mašinskog učenja)

[mini|Standardna arhitektura transformera, s [enkoderom lijevo i dekoderom desno.]]

**Transformer** jest arhitektura umjetne neuronske mreže u dubokom učenju zasnovana na mehanizmu višeglave pažnje (*multi-head attention*). U njoj se ulazni podaci, naročito tekst, pretvaraju u niz tokena, a svaki token zatim u vektorski prikaz preko sloja ugnježđivanja. Na svakom sloju model kontekstualizira tokene unutar kontekstnog prozora pomoću paralelnog mehanizma pažnje, čime se pojačava signal važnih tokena, a umanjuje utjecaj manje važnih. 

Transformeri ne koriste rekurentne jedinice, pa se njihova obuka može bolje paralelizirati od ranijih rekurentnih neuronskih mreža kao što je LSTM. Kasnije varijante transformera široko su prihvaćene za obuku velikih jezičkih modela na vrlo velikim skupovima podataka.

Savremena verzija transformera predstavljena je u radu *Attention Is All You Need* iz 2017. godine, koji su objavili istraživači kompanije Google.  Arhitektura je prvobitno razvijena za mašinsko prevođenje, ali je kasnije našla široku primjenu u obradi prirodnog jezika, računarskom vidu, obradi zvuka, multimodalnom učenju, pojačanom učenju i robotici.

Arhitektura transformera dovela je i do razvoja unaprijed istreniranih sistema kao što su GPT i BERT.

## Historija 
### Preteče 
Dugi niz godina modeliranje i generiranje sekvenci oslanjalo se na obične rekurentne neuronske mreže. Teorijski, informacija iz jednog tokena može se prenositi proizvoljno daleko kroz sekvencu, ali u praksi problem iščezavajućeg gradijenta ostavlja stanje modela na kraju duge rečenice bez preciznih i lako izdvojivih informacija o ranijim tokenima.

Veliki iskorak predstavljao je LSTM, rekurentna mreža koja je raznim tehnikama ublažila problem iščezavajućeg gradijenta i omogućila efikasnije učenje nad dugim sekvencama. Takve mreže kasnije su nazivane sigma-pi mrežama ili višerednim mrežama.

LSTM je i dalje radio sekvencijalno, token po token, te nije mogao paralelno obrađivati cijelu sekvencu. Savremeni transformeri prevazilaze taj problem, ali za uzvrat obično imaju vremensku složenost koja je kvadratna u odnosu na veličinu kontekstnog prozora.  U literaturi se među važnim pretečama navode i modeli s tzv. brzim težinama (*fast weights*), koji su kasnije interpretirani kao linearni transformeri bez normalizacije.

### Pažnja i seq2seq modeli 
Ideja enkodersko-dekoderske transformacije sekvenci razvijena je početkom 2010-ih, a kao polazna tačka za seq2seq obično se navode dva rada iz 2014. godine. Ubrzo je pažnja dodana takvim modelima za mašinsko prevođenje, čime je omogućeno poravnavanje relevantnih dijelova ulazne i izlazne sekvence.

### Nastanak transformera 
Originalni enkodersko-dekoderski transformer od približno 100 miliona parametara predložen je 2017. godine u radu *Attention Is All You Need*. Cilj je bio unaprijediti seq2seq modele za mašinsko prevođenje tako što će se ukloniti rekurencija, omogućiti obrada svih tokena paralelno i zadržati uspješni mehanizam skalarne pažnje. Time je uveden višeglavi mehanizam pažnje, čije su glave nezavisne i lakše za paralelizaciju, a model je postao znatno pogodniji za obuku na velikim računarskim sistemima.

## Obuka 
### Stabilizacija obuke 
Originalni transformer koristio je normalizaciju sloja, rezidualne veze i plan promjene stope učenja s početnim zagrijavanjem (*warmup*) radi stabilnosti konvergencije.  U praksi se pokazalo da postavljanje normalizacije sloja *prije* pažnje i potpunopovezane mreže stabilizira obuku i često uklanja potrebu za zagrijavanjem stope učenja; ta se varijanta naziva *pre-LN transformer*, za razliku od izvornog *post-LN* rasporeda.

### Prethodno treniranje i fino podešavanje 
Transformeri se obično najprije prethodno treniraju pomoću samonadziranog učenja na velikom općem korpusu, a zatim fino podešavaju nad manjim skupom podataka specifičnim za zadatak.

## Arhitektura 
### Tokenizacija 
Pošto se transformerska arhitektura sastoji od operacija nad brojevima, a ne direktno nad tekstom, svaki ulazni tekst mora se najprije pretvoriti u numerički oblik. Uobičajeni pristup uključuje segmentiranje teksta na tokene, a zatim preslikavanje tih tokena na cjelobrojne identifikatore iz konačnog rječnika modela.  Često korišteni postupci podriječne tokenizacije uključuju byte pair encoding i modele jednorazinskog jezika.

### Ugnježđivanje 
Svaki token zatim se preslikava na gusti vektorski prikaz pomoću matrice ugnježđivanja. Te vektorske reprezentacije služe kao osnovni ulaz u daljnje slojeve modela.  U praksi se ponekad koristi isto vezivanje težina za ulazno i izlazno ugnježđivanje (*weight tying*) kako bi se smanjio broj parametara i poboljšala stabilnost pri obuci.

### Pozicijsko kodiranje 
Pošto sam mehanizam pažnje nema urođeno znanje o redoslijedu tokena, transformeri koriste pozicijsko kodiranje kako bi modelu pružili informaciju o tome gdje se pojedini token nalazi u sekvenci.  U izvornom radu korišteno je sinusno i kosinusno apsolutno pozicijsko kodiranje s baznim parametrom 10000. 

### Enkoder–dekoder 
mini|Jedan enkodersko-dekoderski blok transformera.

Izvorni transformer koristi enkodersko-dekodersku arhitekturu s više naslaganih slojeva.  Enkoder obrađuje sve ulazne tokene zajedno, sloj po sloj, i stvara njihove kontekstualizirane reprezentacije. Dekoder potom koristi izlaz enkodera i dotad proizvedene izlazne tokene kako bi generirao naredni token. 

Svaki enkoderski sloj ima dva glavna dijela: mehanizam samopažnje i potpunopovezanu mrežu unaprijednog prostiranja (*feedforward*). Svaki dekoderski sloj ima tri dijela: kauzalno maskiranu samopažnju, unakrsnu pažnju prema izlazu enkodera i potpunopovezanu mrežu. 

### Skalirana skalarna pažnja 
Osnovna jedinica pažnje u transformeru jest skalirana skalarna pažnja. Za svaki blok pažnje model uči tri matrice težina: upit (Q), ključ (K) i vrijednost (V).  Pažnja se izračunava poređenjem upita s ključevima, normalizacijom dobijenih vrijednosti funkcijom softmax i njihovom primjenom na vrijednosti. Takav postupak omogućuje modelu da za svaki token odredi kojim drugim tokenima treba posvetiti veću pažnju. 

#### Višeglava pažnja 
Umjesto jedne glave, transformer koristi više glava pažnje paralelno. Njihovi se izlazi spajaju i dalje prosljeđuju u naredni dio mreže.  Ovakva konstrukcija omogućuje modelu da istovremeno prati više različitih aspekata ulazne sekvence. 

#### Maskirana pažnja 
U dekoderu se koristi kauzalna maska kako bi svaki token mogao obraćati pažnju samo na sebe i tokene prije sebe, ali ne i na buduće tokene.  Time se zadržava autoregresivna priroda generiranja. 

### Enkoder 
mini|Jedan enkoderski sloj.

Enkoder se sastoji od ulaznog sloja ugnježđivanja i više enkoderskih slojeva. Svaki sloj najprije primjenjuje samopažnju radi miješanja informacija među ulaznim tokenima, a zatim potpunopovezanu mrežu nad svakim položajem zasebno. 

### Dekoder 
mini|Jedan dekoderski sloj.

Dekoder prima već proizvedene izlazne tokene i izlaz enkodera. Njegova maskirana samopažnja osigurava kauzalnost, a unakrsna pažnja omogućuje pristup reprezentacijama ulaza koje je proizveo enkoder. 

## Kasniji razvoj 
### Alternativne aktivacijske funkcije 
Izvorni transformer koristio je ReLU kao aktivacijsku funkciju.  Kasnije su razvijene i druge funkcije; modeli iz serija Llama i PaLM koristili su SwiGLU, dok su GPT-1 i BERT koristili GELU.

### Alternativne normalizacije 
Uz LayerNorm razvijene su i druge normalizacije. Jedan poznat primjer jest RMSNorm, koji se koristi u seriji Llama.

### Alternativna pozicijska kodiranja 
Kasniji radovi predložili su više zamjena ili dopuna izvornom apsolutnom sinusnom kodiranju. Među najpoznatijim su RoPE (rotacijsko pozicijsko ugnježđivanje), koje poziciju ugrađuje putem rotacija u parovima koordinata, te ALiBi (*Attention with Linear Biases*), koji uvodi linearne pristranosti direktno u matricu pažnje.

### Efikasna implementacija 
Transformeri su implementirani u standardnim okvirima za duboko učenje kao što su TensorFlow i PyTorch, a biblioteka *Transformers* kompanije Hugging Face nudi arhitekture i unaprijed istrenirane modele zasnovane na transformatorima.

#### FlashAttention 
*FlashAttention* jest algoritam za efikasnu implementaciju pažnje na GPU-u, uz blokovske matrikske operacije i smanjeno kopiranje podataka između memorijskih nivoa. Kasnija verzija *FlashAttention-2* dodatno je poboljšala paralelizaciju i raspodjelu posla.

### Multimodalnost 
Transformeri se mogu prilagoditi i ulaznim ili izlaznim modalitetima koji nisu tekst, ako postoji način da se i ti podaci predstave kao tokene ili njima srodne diskretne jedinice.

## Primjene 
Transformer je postigao naročit uspjeh u obradi prirodnog jezika, gdje je postao osnovna arhitektura za savremene jezičke modele, sisteme za prevođenje, sažimanje, odgovaranje na pitanja i generiranje teksta.  U računarskom vidu razvijeni su vizuelni transformeri, a srodni modeli koriste se i za obradu govora, generiranje slike iz teksta i druge multimodalne zadatke.

## Također pogledaj 
* seq2seq
* Vision transformer
* Veliki jezički model
* BERT
* Generative pre-trained transformer
* T5 (jezički model)

## Reference 
## Literatura 
* Alexander Rush, *The Annotated Transformer* , Harvard NLP Group, 3. april 2018.
* 
* 

Kategorija:Duboko učenje
Kategorija:Umjetne neuronske mreže
Kategorija:Obrada prirodnog jezika
Kategorija:Mašinsko učenje