|
|
||
|---|---|---|
| .. | ||
| README.md | ||
| TransformersPyTorch.ipynb | ||
| TransformersTF.ipynb | ||
| assignment.md | ||
README.md
Механизми пажње и Трансформери
Квиз пре предавања
Један од најважнијих проблема у области обраде природног језика (NLP) је машински превод, суштински задатак који је основа алата као што је Google Translate. У овом делу ћемо се фокусирати на машински превод, или, уопштеније, на било који задатак секвенца-у-секвенцу (који се такође назива трансдукција реченица).
Са РНМ-овима (RNNs), секвенца-у-секвенцу се имплементира помоћу две рекурентне мреже, где једна мрежа, енкодер, сабија улазну секвенцу у скривено стање, док друга мрежа, декодер, развија то скривено стање у преведени резултат. Постоји неколико проблема са овим приступом:
- Крајње стање енкодер мреже тешко памти почетак реченице, што доводи до слабијег квалитета модела за дуге реченице.
- Све речи у секвенци имају исти утицај на резултат. У стварности, међутим, одређене речи у улазној секвенци често имају већи утицај на излазну секвенцу од других.
Механизми пажње пружају начин за одређивање тежине контекстуалног утицаја сваког улазног вектора на сваку предикцију излазног РНМ-а. Ово се имплементира стварањем пречица између међустојања улазног РНМ-а и излазног РНМ-а. На овај начин, када генеришемо излазни симбол yt, узимамо у обзир сва улазна скривена стања hi, са различитим тежинским коефицијентима αt,i.
Енкодер-декодер модел са адитивним механизмом пажње у Bahdanau et al., 2015, цитиран из овог блога
Матрица пажње {αi,j} представља степен у којем одређене улазне речи утичу на генерисање одређене речи у излазној секвенци. Испод је пример такве матрице:
Фигура из Bahdanau et al., 2015 (Сл.3)
Механизми пажње су одговорни за велики део тренутног или скоро тренутног стања уметности у NLP-у. Међутим, додавање пажње значајно повећава број параметара модела, што је довело до проблема са скалирањем РНМ-ова. Кључно ограничење скалирања РНМ-ова је то што рекурентна природа модела отежава груписање и паралелизацију тренинга. У РНМ-у сваки елемент секвенце мора бити обрађен редоследно, што значи да се не може лако паралелизовати.
Фигура из Google-овог блога
Усвајање механизама пажње у комбинацији са овим ограничењем довело је до стварања садашњих трансформер модела, као што су BERT и Open-GPT3, који представљају стање уметности.
Трансформер модели
Једна од главних идеја иза трансформера је избегавање секвенцијалне природе РНМ-ова и стварање модела који је паралелизован током тренинга. Ово се постиже имплементацијом две идеје:
- позиционо кодирање
- коришћење механизма само-пажње за хватање образаца уместо РНМ-ова (или ЦНМ-ова) (због чега се рад који уводи трансформере зове Attention is all you need)
Позиционо кодирање/уграђивање
Идеја позиционог кодирања је следећа:
- Када користимо РНМ-ове, релативна позиција токена је представљена бројем корака и стога не мора бити експлицитно представљена.
- Међутим, када пређемо на пажњу, морамо знати релативне позиције токена унутар секвенце.
- Да бисмо добили позиционо кодирање, проширујемо нашу секвенцу токена са секвенцом позиција токена у секвенци (тј. секвенцом бројева 0, 1, ...).
- Затим мешамо позицију токена са вектором уграђивања токена. Да бисмо трансформисали позицију (цео број) у вектор, можемо користити различите приступе:
- Уграђивање које се тренира, слично уграђивању токена. Ово је приступ који овде разматрамо. Примењујемо слојеве уграђивања на токене и њихове позиције, што резултира векторима уграђивања истих димензија, које затим сабирамо.
- Фиксна функција позиционог кодирања, како је предложено у оригиналном раду.
Слика аутора
Резултат који добијамо са позиционим уграђивањем укључује и оригинални токен и његову позицију унутар секвенце.
Вишеглава само-пажња
Следеће, потребно је ухватити неке обрасце унутар наше секвенце. Да бисмо то урадили, трансформери користе механизам само-пажње, који је у суштини пажња примењена на исту секвенцу као улаз и излаз. Примена само-пажње омогућава нам да узмемо у обзир контекст унутар реченице и видимо које речи су међусобно повезане. На пример, омогућава нам да видимо на које речи се односе кореференце, као што је оно, и такође узмемо у обзир контекст:
Слика из Google блога
У трансформерима користимо вишеглаву пажњу како бисмо мрежи дали моћ да ухвати неколико различитих типова зависности, нпр. дугорочне наспрам краткорочних односа између речи, кореференце наспрам нечег другог итд.
TensorFlow Notebook садржи више детаља о имплементацији слојева трансформера.
Пажња између енкодера и декодера
У трансформерима, пажња се користи на два места:
- За хватање образаца унутар улазног текста помоћу само-пажње
- За извођење превођења секвенци - то је слој пажње између енкодера и декодера.
Пажња између енкодера и декодера је веома слична механизму пажње који се користи у РНМ-овима, како је описано на почетку овог дела. Ова анимирана дијаграм објашњава улогу пажње између енкодера и декодера.
Пошто се свака улазна позиција независно мапира на сваку излазну позицију, трансформери могу боље паралелизовати од РНМ-ова, што омогућава много веће и изражајније језичке моделе. Свака глава пажње може се користити за учење различитих односа између речи, што побољшава задатке обраде природног језика.
BERT
BERT (Bidirectional Encoder Representations from Transformers) је веома велика трансформер мрежа са више слојева, са 12 слојева за BERT-base и 24 за BERT-large. Модел се прво претходно тренира на великом корпусу текстуалних података (Wikipedia + књиге) користећи ненадгледано учење (предвиђање маскираних речи у реченици). Током претходног тренинга, модел апсорбује значајне нивое разумевања језика, који се затим могу искористити са другим скуповима података кроз фино подешавање. Овај процес се назива трансфер учење.
Слика извор
✍️ Вежбе: Трансформери
Наставите са учењем у следећим бележницама:
Закључак
У овој лекцији сте научили о трансформерима и механизмима пажње, свим суштинским алатима у NLP алатници. Постоји много варијација трансформер архитектура, укључујући BERT, DistilBERT, BigBird, OpenGPT3 и друге, које се могу фино подесити. Пакет HuggingFace пружа репозиторијум за тренирање многих од ових архитектура са PyTorch-ом и TensorFlow-ом.
🚀 Изазов
Квиз након предавања
Преглед и самостално учење
- Блог пост, који објашњава класичан рад Attention is all you need о трансформерима.
- Серија блог постова о трансформерима, која детаљно објашњава архитектуру.





