Dvikryptis transformacinio kodavimo būdas  (angl. Bidirectional Encoder Representations from Transformers (sutrump. BERT)) mašininio mokymo metodika, pasižyminti pažangiausiais rezultatais sprendžiant daugumą NLP uždavinių. Šis straipsnis susitelkia į BERT metodiką teksto klasifikavimo uždaviniui.[1]

BERT metodiką galima skirstyti į dvi dalis:

  • Vektorizacija: BERT žodžių įterpinių tipas, kaip įvestis, gali paimti vieną arba du sakinius bei naudoją specialų ženklą (angl. Token) [SEP], jog juos atskirtų. [CLS] ženklas visada padedamas teksto pradžioje[2]. Kadangi BERT žodynas yra fiksuotas, (apie 30 tūkst. ženklų) kai kuriuos (sudėtingesnius) žodžius BERT reprezentuoja kaip žodžių dalis bei simbolius. Žodžiai, kurių nėra BERT žodyne yra atskiriami dalimis naudojant „##” simbolį. BERT modelis pasižymi savo dvikryptiškumu, kas padeda šiam modeliui suprasti žodžio reikšmę iš abiejų pusių, t. y. tiek iš kairės, tiek iš dešinės pusės, padidinant šio modelio konteksto supratimą[3]. BERT modelis iš kitų giliojo mokymo metodų labiausiai išsiskiria tuo, jog naudoja užšifruotos kalbos modeliavimo (angl. Masked language modelling (MLM)) funkciją, padedančią pasiekti minėtą dvikryptiškumą. Ši funkcija paimant sakinį atsitiktinai „užšifruoja“ 15% žodžių kiekvienoje žodžių sekoje, po to kiekvienam užšifruotam sakiniui bandoma nuspėti kokie turi būti užšifruoti žodžiai. Kita funkcija, kuri BERT modelį išskiria iš kitų modelių yra kito sakinio numatymas (angl. Next sentence prediction (NSP)). Modelis susieja du užšifruotus sakinius kaip įvestis prieš mokymą, o po to turi nustatyti, šie du sakiniai yra susiję ar ne. Vienas didžiausių BERT žodžių įterpinių tipo privalumų yra tas, jog skirtingai nei pavyzdžiui, FastText, jie atsižvelgia į kontekstą, todėl net vienodai rašomus, bet skirtingą prasmę turinčius žodžius geba vektorizuoti skirtingai.
  • Klasifikatorius: BERT modelio koregavimo metu (angl. Fine-tuning) yra paimami iš anksto apmokyto modelio svoriai bei šiam modeliui yra duodamas spręsti klasifikavimo uždavinys. Tuomet, su turimais mokymo pavyzdžiais išmokstamas viršutinis sluoksnis (užkeltas klasifikavimo uždavinio sluoksnis) kartu pakoreguojant ir kitas viso transformatorių modelio reikšmes. Tai įmanoma padaryti [CLS] ženklo pagalba. Sprendžiant klasifikavimo uždavinius, kiekvieno sakinio pradžioje nurodomas specialus [CLS] ženklas. Kadangi BERT susideda iš 12 transformatorių sluoksnių, kiekvienas transformatorius paima ženklų įterpinius bei išvestyje sukuria tokį pat įterpinių skaičių (su jau pakoreguotais svoriais). Galutinio (12-ojo) transformatoriaus išvestyje klasifikatorius naudoja tik pirmąjį įterpinį (atitinkantį [CLS] ženklą). Taip pat naudojamas [PAD] ženklas paminkštinimui (angl. Padding) atlikti bei „Attention mask“ masyvas sudarytas iš 1 ir 0 nurodantis kurie ženklai dalyvaus paminkštinime[4].

Išnašos redaguoti

  1. https://hdl.handle.net/20.500.12259/131786[neveikianti nuoroda]
  2. Dhami D. “Understanding BERT - Word Embeddings”. https://medium.com/@dhartidhami/understanding-BERT-word-embeddings-7dc4d2ea54ca. Peržiūrėta 2021 04 02.
  3. Devlin J., Chang M.-W., Lee K., Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers), 2019, pp. 4171-4186.
  4. McCormick C., Ryan N. “BERT Fine-Tuning Tutorial with PyTorch.” https://mccormickml.com/2019/07/22/BERT-fine-tuning/. Peržiūrėta 2021 04 17.