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.

🕑 8 daqiqa o‘qish 📄 719 so‘z 👁 3 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Encoder: BERT
  2. Endi o'zbekcha
  3. Ikki tomonga qarashning foydasi
  4. Decoder: GPT-2
  5. Qaysi oilani tanlash
  6. Xulosa

Transformer bitta arxitektura, lekin undan uch xil model oilasi chiqqan. Farq bitta narsada - niqobda (4-bo'lim).

OilaNiqobNimani ko'radiVakili
EncoderYo'qChap va o'ng - butun matnBERT
DecoderBorFaqat chapdagi so'zlarGPT
Encoder-decoderAralashKirish to'liq, chiqish chapgaT5

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.

Python
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())
Natija
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:

Natija
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.

Bu darslikning eng muhim amaliy xulosasi

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:

  1. Ma'lumot kamligi. Ko'p tilli modellar Vikipediya hajmiga proporsional o'qiydi. Inglizcha Vikipediya o'zbekchasidan o'nlab barobar katta.
  2. 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 ##on chiqadi.

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 #

Python
for nom, jumla in [("kontekst bor", "Bank [MASK] yaqinida joylashgan ."),
                   ("kontekst yo'q", "Bank [MASK] .")]:
    ...
Natija
  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.

Bitta arxitektura, ikki xil niqob Encoder (BERT) niqob yo'q - ikki tomonga qaraydi Men kitob [MASK] edim ikkala tomondagi so'zlar yordam beradi Nimaga yaxshi tasniflash, qidiruv, ma'no chiqarish Decoder (GPT) niqob bor - faqat orqaga qaraydi Men kitob ? yopiq faqat chapdagilar yordam beradi Nimaga yaxshi matn yozish, suhbat, davom ettirish Farq faqat niqobda - qolgan hamma narsa bir xil
Bir xil bloklardan ikki xil model; tanlov masalaga bog'liq

Decoder: GPT-2 #

Python
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)
Natija
  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:

Natija
  '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 #

MasalaOilaSabab
Sharh ijobiymi yoki salbiyEncoderButun matnni ko'rish kerak
Hujjatlardan qidirishEncoderMa'no vektori kerak (16-bo'lim)
Matn davom ettirish, suhbatDecoderKetma-ket yozish kerak
Kod yozishDecoderXuddi shu sabab
Tarjima, xulosa qilishEncoder-decoderKirish to'liq, chiqish ketma-ket
Nega bugun hamma decoder ishlatadi

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.

O'zbek tili uchun amaliy tavsiya

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).
Amaliy topshiriq
  1. Encoder va decoder o'rtasidagi asosiy farqni bir jumlada yozing.
  2. BERT ga inglizcha [MASK] jumlasi berib, natijani ko'ring.
  3. Xuddi shu jumlani o'zbekchada sinab, farqni yozing.
  4. Nima uchun o'zbekcha natija yomonroq ekanini ikki sabab bilan tushuntiring.
  5. [MASK] dan keyingi so'zni o'zgartirib, bashorat o'zgarishini kuzating.
  6. GPT-2 bilan inglizcha matn davom ettiring.
  7. GPT-2 ga o'zbekcha so'z berib, natijani izohlang.
  8. «Toshkent» GPT-2 tokenizatorida necha token ekanini tekshiring.
  9. Uchta oiladan har biri uchun bittadan masala o'ylab toping.
  10. 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, ##ston bo'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.

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.