10-bo‘lim
Encoder, decoder va uchinchi oila
BERT va GPT ning niqob farqi, qaysi masalaga qaysi oila mos kelishi va ko'p tilli modellarning o'zbek tilidagi haqiqiy holati.
Ushbu bo‘lim mundarijasi
Transformer bitta arxitektura, lekin undan uch xil model oilasi chiqqan. Farq bitta narsada - niqobda (4-bo'lim).
| Oila | Niqob | Nimani ko'radi | Vakili |
|---|---|---|---|
| Encoder | Yo'q | Chap va o'ng - butun matn | BERT |
| Decoder | Bor | Faqat chapdagi so'zlar | GPT |
| Encoder-decoder | Aralash | Kirish to'liq, chiqish chapga | T5 |
Encoder: BERT #
Niqobsiz bo'lgani uchun BERT butun jumlani ko'radi. Uni o'qitish uchun
boshqa masala o'ylab topilgan: jumladagi ba'zi so'zlar [MASK] bilan
yashiriladi va model ularni topishi kerak.
import torch
from transformers import AutoTokenizer, AutoModelForMaskedLM
tok = AutoTokenizer.from_pretrained("bert-base-multilingual-cased")
bert = AutoModelForMaskedLM.from_pretrained("bert-base-multilingual-cased")
bert.eval()
def top5(jumla):
e = tok(jumla, return_tensors="pt")
p = (e["input_ids"][0] == tok.mask_token_id).nonzero()[0].item()
with torch.no_grad():
t = torch.topk(bert(**e).logits[0, p], 5)
return ", ".join(tok.decode([i]) for i in t.indices.tolist())
INGLIZCHA:
The capital of France is [MASK] .
-> Paris, Rome, Metz, d, Strasbourg
I am reading a [MASK] .
-> book, word, question, novel, reading
The weather is very [MASK] .
-> hot, mild, cold, weather, warm
Model ishlayapti: Fransiya poytaxti - Paris, o'qiyotgan narsa - book, ob-havo - hot yoki cold.
Endi o'zbekcha #
Xuddi shu model, xuddi shu masala:
O'ZBEKCHA:
Toshkent - O'zbekiston [MASK] .
-> ##on, sh, ##ston, ., front
Men kitob [MASK] .
-> ##o, ##ok, ##s, ##od, ##la
Bugun havo juda [MASK] .
-> ##v, red, :, ket, ne
Bitta ham haqiqiy so'z yo'q. Model ##on, ##ston, ##o kabi so'z
bo'laklarini qaytaryapti.
bert-base-multilingual-cased 104 tilda o'qitilgan va o'zbek tili ham
o'sha ro'yxatda bor. Lekin natija ko'rinib turibdi.
Sabab ikkita:
- Ma'lumot kamligi. Ko'p tilli modellar Vikipediya hajmiga proporsional o'qiydi. Inglizcha Vikipediya o'zbekchasidan o'nlab barobar katta.
- Tokenizatsiya. 2-bo'limda ko'rgan edik: o'zbekcha so'z 3-4
bo'lakka sochiladi. Model to'liq so'zni emas, bo'lakni bashorat
qilishga urinadi - shuning uchun
##onchiqadi.
Xulosa: tayyor ko'p tilli modelni o'zbekcha matnga sinab ko'rmasdan ishonmang. Inglizcha namoyishda ajoyib ishlagan model sizning masalangizda umuman ishlamasligi mumkin.
Yechim bor - 13 va 14-bo'limlarda o'z ma'lumotingizda sozlashni ko'ramiz. Tayyor model nolinchi nuqta bo'ladi, yakuniy javob emas.
Ikki tomonga qarashning foydasi #
for nom, jumla in [("kontekst bor", "Bank [MASK] yaqinida joylashgan ."),
("kontekst yo'q", "Bank [MASK] .")]:
...
kontekst bor -> ##ning, ##ing, bank
kontekst yo'q -> ##er, ##ing, ##en
Natija o'zbekchada kuchsiz, lekin tamoyil ko'rinadi: [MASK] dan
keyingi so'zlar bashoratga ta'sir qildi. Decoder buni qila olmaydi -
u o'ngga qaray olmaydi.
Decoder: GPT-2 #
from transformers import AutoModelForCausalLM
gtok = AutoTokenizer.from_pretrained("gpt2")
gpt = AutoModelForCausalLM.from_pretrained("gpt2")
gpt.eval()
enc = gtok("The capital of France is", return_tensors="pt")
out = gpt.generate(**enc, max_new_tokens=12, do_sample=False,
pad_token_id=gtok.eos_token_id)
parametrlar: 124,439,808
natija: 'The capital of France is the capital of the French Republic, and the capital of the'
Ikki narsa ko'rinadi. Model matnni davom ettiryapti (BERT esa
bo'shliqni to'ldirgandi). Va u o'zini takrorlayapti - «the capital
of» uch marta. Bu do_sample=False, ya'ni greedy tanlash oqibati
(9-bo'lim).
O'zbekcha bilan sinasak:
'Toshkent' necha token: 4 ['T', 'osh', 'k', 'ent']
natija: 'Toshkent\'s "The Last of Us" is a great example of how to make'
GPT-2 faqat ingliz tilida o'qitilgan. «Toshkent» so'zi u uchun 4 ta ma'nosiz bo'lak va davomi ham ingliz tilida chiqdi.
Qaysi oilani tanlash #
| Masala | Oila | Sabab |
|---|---|---|
| Sharh ijobiymi yoki salbiy | Encoder | Butun matnni ko'rish kerak |
| Hujjatlardan qidirish | Encoder | Ma'no vektori kerak (16-bo'lim) |
| Matn davom ettirish, suhbat | Decoder | Ketma-ket yozish kerak |
| Kod yozish | Decoder | Xuddi shu sabab |
| Tarjima, xulosa qilish | Encoder-decoder | Kirish to'liq, chiqish ketma-ket |
So'nggi yillarda decoder modellar ustun keldi - hatto tasniflash uchun ham.
Sabab: decoderni har qanday masalaga moslash mumkin. «Bu sharh ijobiymi?» degan savolni matn sifatida berib, javobni matn sifatida olish mumkin. Bitta model - hamma masala.
Lekin bu encoder o'lgani degani emas. Tasniflash va qidiruv uchun kichik encoder model ko'pincha arzonroq va tezroq bo'ladi. 16-bo'limda aynan shuni ishlatamiz.
Yuqoridagi natijalarga asoslanib:
- Tayyor modelni avval o'z matningizda sinang, e'lon qilingan ko'rsatkichlarga emas.
- Ko'p tilli model (mBERT, XLM-R) o'zbekcha uchun boshlang'ich nuqta - lekin sozlash shart.
- Faqat inglizcha model (GPT-2 kabi) o'zbekchada ishlatilmaydi.
- Eng yaxshi natija - o'z ma'lumotingizda fine-tuning (13-bo'lim).
- Encoder va decoder o'rtasidagi asosiy farqni bir jumlada yozing.
- BERT ga inglizcha
[MASK]jumlasi berib, natijani ko'ring. - Xuddi shu jumlani o'zbekchada sinab, farqni yozing.
- Nima uchun o'zbekcha natija yomonroq ekanini ikki sabab bilan tushuntiring.
[MASK]dan keyingi so'zni o'zgartirib, bashorat o'zgarishini kuzating.- GPT-2 bilan inglizcha matn davom ettiring.
- GPT-2 ga o'zbekcha so'z berib, natijani izohlang.
- «Toshkent» GPT-2 tokenizatorida necha token ekanini tekshiring.
- Uchta oiladan har biri uchun bittadan masala o'ylab toping.
- O'z loyihangiz uchun qaysi oila mos kelishini asoslab yozing.
Xulosa #
- Transformerdan uch oila chiqqan va farq faqat niqobda.
- Encoder (BERT) niqobsiz - chap va o'ngga qaraydi.
- U
[MASK]bilan o'qitiladi: yashirilgan so'zni topish. - Decoder (GPT) niqobli - faqat chapga qaraydi va matn davom ettiradi.
- Encoder-decoder (T5) ikkalasini birlashtiradi - tarjima uchun qulay.
- mBERT inglizchada ishonarli javob berdi: «The capital of France is» -> Paris.
- O'zbekchada esa u haqiqiy so'z ham qaytarmadi - faqat
##on,##stonbo'laklari. - Sabab: o'zbekcha ma'lumot kamligi va so'zning bo'laklarga sochilishi.
- GPT-2 faqat inglizcha - «Toshkent» uni 4 ta ma'nosiz bo'lakka ajratadi.
- Amaliy qoida: tayyor modelni o'z matningizda sinamasdan ishonmang.
Keyingi bo'limda transformers kutubxonasi bilan yaqindan tanishamiz va
tayyor modellarni qanday ishlatishni o'rganamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.