İçeriğe geç

12.4 · Seviye 3 · Dil Modelleri

Dil modeli ne yapar?

sonraki tokenı tahmin etmek

Yapay Zekâ Akademisi — M12, Metin Sayıya Dönüşür · 2.564 kelime · 3 saha durumu · ≈ 12 dk okuma · 17 dk dinleme

Saha durumlarındaki kişiler ve kurumlar kurgusaldır; kaynaklar gerçektir. Belirli ürün ve modeller hakkındaki gözlemler yazıldıkları tarihte geçerlidir ve «Tarihli gözlem» etiketiyle yılı belirtilerek verilir. Yapay zekâ çıktıları doğrulanmadan karar dayanağı yapılmaz; dersler hukuki, tıbbi ya da mali danışmanlığın yerini tutmaz.

Açılış

Asistanın cevabı üç cümleydi ve son cümlede bir saat vardı.

Sınama tablosuna o sabah eklenen başvuru kısaydı: "Kahramanlar'da sabahtan beri su yok, ne zaman gelecek?" Asistan özür dilemiş, arıza ekiplerinin sahada olduğunu yazmış ve şöyle bitirmişti: "Suyunuzun saat on sekize kadar gelmesi beklenmektedir." Onur yönergeyi açtı, çözülmüş örnekleri açtı, asistana o gün verilen duyuru listesini açtı. Hiçbirinde on sekiz yoktu.

Cevdet Bey'i aradı. Nöbetçi amir lafı uzatmadı. "Biz saat vermedik. Vatandaş akşam altıda musluğu açacak, su akmayacak, sonra bizi arayacak."

Onur telefonu kapatıp Burcu'ya yazmaya başladı. Klavyenin üstünde üç kelime belirdi; ortadaki tam yazacağı kelimeydi. Burcu ekrana baktı, kendi telefonunu aldı, boş bir mesaja "Su" yazdı ve ortadaki öneriye art arda dokundu. Cümle kendi kendine uzadı: "Su kesintisi nedeniyle yarın sabah saat dokuzdan itibaren..." Burcu telefonu Onur'a çevirdi. "Bak, bu da saat veriyor. Kimse ona sormadı."

Onur iki ekrana baktı. Birinde tek kelime öneren bir klavye, ötekinde belediye adına üç cümle kuran bir asistan vardı. Biri ötekinin büyümüş hâli miydi?

Tek fikir

Bir dil modeli, verilen metinden sonra hangi tokenın geleceğine olasılık dağıtır; uzun bir cevap, bu tahminin seçilen tokenı metne ekleyerek yüzlerce kez yinelenmesidir. Model doğru devamı değil, eğitim metnine göre olası devamı üretir.

Nasıl çalışır

Klavye tek bir soruya cevap arar: buraya kadar yazılanlardan sonra ne gelir? Asistanın işi de, ölçeği çok farklı olsa da, aynı sorudan kurulur.

Ders 2.6'da büyük dil modelinin "sonraki kelimeyi tahmin etmek" üzere eğitildiğini söylemiştik. Bu ders o cümlenin içini açıyor. Önce eski bir soru: insan sonraki harfi ne kadar iyi tahmin eder?

İnsan bu işi dil bilgisinden ve konunun gidişinden yapar; bir model saymakla başlayabilir. Belediye arşivinden kişi bilgisi taşımayan altı kısa başvuru başlığı alalım: "su kesildi", "su kesildi", "su kesildi mi", "su faturası geldi", "elektrik kesildi", "elektrik faturası geldi". Her başlığın önüne bir başlangıç işareti, sonuna bir bitiş işareti koyalım ve yalnız bir önceki kelimeye bakan en basit modeli kuralım. Gerçek modeller Ders 12.1'deki tokenlarla çalışır; burada okunsun diye kelime kullanıyoruz.

Sayım şöyle çıkar. Altı başlığın dördü "su" ile, ikisi "elektrik" ile başlar; başlangıçtan sonra "su" gelme olasılığı altıda dört, yani üçte ikidir. "Su" dört kez geçer, üçünde arkasından "kesildi", birinde "faturası" gelir: dörtte üç ve dörtte bir. "Kesildi" dört kez geçer, üçünde başlık biter, birinde "mi" gelir. "Faturası"nın arkasından her seferinde "geldi" gelir. Her olasılık, bir kelime çiftinin sayısının ilk kelimenin toplam sayısına bölümüdür.

Bir cümlenin olasılığı bu adımların çarpımıdır. "Su kesildi" için başlangıçtan "su"ya üçte iki, "su"dan "kesildi"ye dörtte üç, "kesildi"den bitişe dörtte üç: çarpım sekizde üç, yüzde otuz yedi buçuk. "Elektrik kesildi mi" için üçte bir, ikide bir, dörtte bir ve bir: yirmi dörtte bir.

O sıfıra dikkat. "Su geldi" sıradan, hatta sevindirici bir cümledir; ama altı başlıkta "su"dan sonra hiç "geldi" gelmemiştir. Sayım modeline göre bu cümlenin olasılığı sıfırdır.

Büyük bir dil modeli sayım tablosu tutmaz. Ders 12.2'de anlattığımız gömmelerle girdiyi sayılara çevirir, katmanlarından geçirir ve sonunda kelime dağarcığındaki her token için bir puan üretir. Ders 10.2'deki softmax bu puanları toplamı bir olan olasılıklara çevirir. Softmax hiçbir puanı tam sıfıra indirmez; görülmemiş bir devam düşük ama sıfır olmayan bir olasılık alır. Sayım modelinin "su geldi" çıkmazı böylece yumuşar, ortadan kalkmaz.

Ders 1.4'teki ayrımla söylersek, eğitim bu tahmin hatasını milyarlarca örnek üzerinde küçültmektir. Ders 10.2'de çapraz entropi diye andığımız kayıp burada da kullanılır: doğru tokena verilen olasılığın logaritmasının eksisi.

Peki tek kelime tahmini, üç cümlelik bir cevaba nasıl dönüşür? Çıkarım sırasında model bir dağılım üretir, dağılımdan bir token seçilir, seçilen token metnin sonuna eklenir ve uzamış metin yeniden modele verilir.

Altı başlıklı modelle çalıştıralım. Her adımda en olası kelimeyi seçersek başlangıçtan "su", ardından "kesildi", ardından bitiş gelir: "su kesildi". Seçimi olasılıklara göre kurayla yaparsak model altı farklı başlık üretebilir. Beşi arşivdekilerin aynısıdır. Altıncısı, "elektrik kesildi mi", arşivde hiç yoktur; model iki ayrı başlığın parçalarını birleştirip yeni ve akıcı bir cümle kurmuştur. Seçimin nasıl yapıldığı ayrı bir ayardır; her adımda olasılıklardan birinin seçildiğini bilmek şimdilik yeter.

Burcu'nun klavyesi bu döngünün en kısa hâliydi: her dokunuş bir seçim, her seçim yeni bir girdi. Asistan aynı döngüyü başvurunun ardından yüzlerce adım döndürdü; bir başvurunun arkasına cevap yazmak da metni olası biçimde sürdürmektir.

Son olarak bir modelin bir metni ne kadar iyi tahmin ettiğini ölçmek gerekir. Cümle olasılığı bu işe yaramaz, çünkü uzun cümle hep küçük olasılık alır.

"Su kesildi"nin olasılığı sekizde üçtü ve bitiş işaretiyle birlikte üç adımdı. Sekizde üçün tersi sekiz bölü üç, yaklaşık iki virgül altmış yedi; bunun küp kökü yaklaşık bir virgül otuz dokuz. Model bu cümlede her adımda kabaca bir buçuktan az seçenek arasında kalmıştır. "Elektrik kesildi mi" için yirmi dörtün dördüncü kökü alınır: yaklaşık iki virgül yirmi bir. Her adımda iki seçeneği eşit gören bir model tam iki verirdi. Aynı sayı Ders 10.2'deki kayıpla da bulunur: token başına ortalama kaybın üsteli şaşkınlığa eşittir. "Su geldi" içinse hesap yapılamaz; sıfıra bölünemez.

Sahada

Nerede yanılır

Bir dil modelinin hedefi, eğitim metninde gerçekte gelen tokena yüksek olasılık vermektir. Gerçekte gelen token, metni yazan kişinin yazdığıdır; dünyada doğru olan değil. Sık söylenen bir yanlış, az söylenen bir doğrudan daha yüksek olasılık alabilir. "Enerji santrali" cümlesinin kazanması bundandır.

Boşluk doldurma ikinci tehlikedir. Belediye cevaplarının çoğu bir saatle ya da bir tarihle biter; böyle metinlerle eğitilmiş bir model, saat bilgisi verilmediğinde bile cevabın sonuna bir saat koymayı olası bulur. "Saat on sekiz" bir bilgi değil, cümle kalıbının en olası doldurulmasıdır. Model "bilmiyorum" demeye ancak bu söz eğitim metninde o yerde olası olduğu ölçüde yatkındır.

Üçüncüsü üretimin kendi döngüsünden gelir. Seçilen her token bir sonraki adımın girdisidir. Erken bir adımda yanlış bir sayı seçilirse, model sonraki cümleleri o sayıyla tutarlı olacak biçimde sürdürür; hata düzelmez, gerekçelenir. Radford ve arkadaşlarının özetlerinde kaza ayrıntılarının karışması bu türdendir: cümleler akıcıydı, ayrıntılar metne bağlı değildi.

Dördüncüsü ölçüyle ilgilidir. Şaşkınlık modelin metni ne kadar iyi tahmin ettiğini söyler, cevaplarının doğru olup olmadığını söylemez. Jurafsky ve Martin de şaşkınlıktaki iyileşmenin gerçek bir işte iyileşmeyi garanti etmediğini, gerçek işte ayrıca sınanması gerektiğini yazar. Kendi raporlarında düşük şaşkınlık veren bir model, o raporların dilini iyi taklit ediyor demektir; rapordaki hasar tutarını doğru özetlediği anlamına gelmez.

Uygulama

Altı cümlelik bir derlemden kendi dil modelini sayarak kuracak, bir cümlenin olasılığını ve şaşkınlığını hesaplayacak, sonra modele cümle ürettireceksin.

  1. Cümleleri kâğıda yaz: "otobüs geldi", "otobüs gecikti", "otobüs yine gecikti", "tramvay geldi", "otobüs geldi", "tramvay yine geldi". Her cümlenin başına bir başlangıç, sonuna bir bitiş işareti koy.
  2. Her kelime çiftini say ve bir tablo kur: satırda önceki kelime, sütunda sonraki kelime. Başlangıç işaretinden sonra gelenleri de say.
  3. Her satırı kendi toplamına bölerek olasılığa çevir.
  4. "otobüs geldi" cümlesinin olasılığını hesapla: başlangıçtan "otobüs"e, "otobüs"ten "geldi"ye, "geldi"den bitişe olan üç olasılığı çarp.
  5. Bu cümlenin şaşkınlığını bul: olasılığın tersini al, adım sayısı üç olduğu için küp kökünü hesap makinesiyle bul.
  6. "tramvay gecikti" cümlesinin olasılığını hesapla ve sonucun neden çıktığını tek cümleyle yaz.
  7. Başlangıçtan başlayarak her adımda en olası kelimeyi seç ve bitişe ulaşana kadar sürdür.
  8. Modelin üretebileceği bütün cümleleri listele; derlemde geçmeyenlerin altını çiz.

Başlangıçtan sonra "otobüs" altıda dört, yani üçte iki, "tramvay" üçte bir gelir. "Otobüs"ten sonra "geldi" ikide bir, "gecikti" ve "yine" dörtte birer. "Geldi" ve "gecikti" her seferinde bitişe gider; "yine"den sonra "gecikti" ile "geldi" yarı yarıyadır. "Otobüs geldi" cümlesinin olasılığı üçte iki çarpı ikide bir çarpı birdir: üçte bir. Tersi üç, küp kökü yaklaşık bir virgül kırk dört. "Tramvay gecikti" sıfır olasılık alır, çünkü derlemde "tramvay"dan hemen sonra hiç "gecikti" gelmemiştir; oysa "tramvay yine gecikti" on ikide bir olasılıkla üretilebilir. En olası seçimle model "otobüs geldi" yazar. Üretilebilen yedi cümlenin ikisi, "otobüs yine geldi" ve "tramvay yine gecikti", derlemde yoktur.

Defter: "Sayan model" sayfasına olasılık tablonu ve yedi cümlenin listesini yaz. Altına iki satır ekle: modelin sıfır verdiği ama senin doğru bulduğun bir cümle ve modelin rahatça ürettiği ama bugün yanlış olabilecek bir cümle, örneğin otobüs gerçekten gecikmişken en olası seçimin yazdığı "otobüs geldi".

Hata köşesi

Yaygın yanlış"Asistan cevabı bir veritabanından bulup getiriyor; saat yazdıysa bir yerde o saat kayıtlı."
Doğrusu

Dil modeli, kendisine ayrıca bir belge verilmedikçe hiçbir kayda bakmaz. Her adımda bir sonraki token için olasılık hesaplar ve birini seçer. Saat, kayıttan değil, benzer cümlelerin nasıl bittiğinden gelir. Modele belge vermenin yolları ilerideki modüllerde anlatılıyor; orada bile modelin o belgeye bağlı kaldığı ayrıca sınanır.

Yaygın yanlış"Şaşkınlığı düşük model daha doğru söyler."
Doğrusu

Şaşkınlık metnin ne kadar tahmin edilebildiğini ölçer. Sık tekrarlanan bir yanlışı iyi tahmin eden model düşük şaşkınlık alır. Üstelik farklı tokenleştirici kullanan iki modelin şaşkınlığı birbiriyle karşılaştırılamaz, çünkü biri aynı metni daha çok ve daha küçük parçaya böler. Doğruluk, işin kendisinde ve kaynakla karşılaştırarak ölçülür.

Sorumluluk

Vatandaşa saat veren belediyedir, model değil. Onur ile Cevdet Bey ertesi gün bir kural yazdı: asistanın cevabındaki her saat, tarih ve tutar o günün duyuru listesinden alınacak; listede yoksa cevap "bu konuda duyurulmuş bir saat yok" diyecek ve başvuruyu nöbetçi memura aktaracak. Onur her hafta sınama başvurularında, cevaptaki sayıların duyuru listesiyle eşleşip eşleşmediğini ayrı bir sütunda doğrulayacak. Kuralın onayı ve listeyi güncel tutmanın sorumluluğu Su ve Kanalizasyon'da kaldı. Olası ama yanlış bir saatin zararı, evde suyu bekleyen, belki ilacını o suyla alacak bir vatandaşa düşer; asistanın akıcılığı onu daha inandırıcı yapar.

Kapanış

  1. Dil modeli, verilen metinden sonra gelebilecek her tokena bir olasılık dağıtır; eğitimi, metinde gerçekten gelen tokena yüksek olasılık vermeyi öğrenmektir.
  2. Uzun bir cevap, seçilen her tokenın metne eklenip yeniden girdi olduğu bir döngüyle üretilir; model eğitim metninde hiç geçmemiş akıcı cümleler de kurabilir.
  3. Model olası devamı üretir, doğru devamı değil; şaşkınlık tahmin başarısını ölçer, doğruluğu ölçmez, ve cevaptaki saat, doz, tutar gibi her bilgi kaynağıyla doğrulanır.

Üç soru

  1. Altı başvuru başlığından kurulan modelde "su kesildi" cümlesinin olasılığı nasıl hesaplanır ve kaç çıkar?
  2. Model "elektrik kesildi mi" başlığını arşivde hiç görmediği hâlde nasıl üretebilir?
  3. Bir firma kendi modelinin şaşkınlığını sekiz, rakibininkini on iki diye bildiriyor. Bu karşılaştırmaya güvenmeden önce neyi sorarsın?

Yanıtlar

  1. Başlangıçtan sonra "su" gelme olasılığı altıda dört, yani üçte ikidir. "Su"dan sonra "kesildi" dörtte üç, "kesildi"den sonra bitiş dörtte üçtür. Üçünün çarpımı sekizde üçtür, yani yüzde otuz yedi buçuk.
  2. Model yalnız bir önceki kelimeye bakar. "Elektrik"ten sonra "kesildi" gelebilir, çünkü "elektrik kesildi" arşivde vardır; "kesildi"den sonra "mi" gelebilir, çünkü "su kesildi mi" arşivdedir. Model bu iki adımı art arda seçince arşivde olmayan bir başlık doğar. Akıcılık, cümlenin daha önce görülmüş olduğunu göstermez.
  3. İki model aynı tokenleştiriciyi ve aynı kelime dağarcığını mı kullanıyor, aynı sınama metninde mi ölçüldü ve o metin eğitimde görülmüş müydü? Bunlardan biri farklıysa sayılar karşılaştırılamaz. Ayrıca şaşkınlık tahmin başarısıdır; özetlerin doğruluğu aynı raporlarla ve insan puanıyla ayrıca sınanmalıdır.

Sonraki derse köprü

Altı başlıklı model yalnız bir önceki kelimeyi görüyordu; Shannon'ın deneği yüz harfi görünce çok daha iyi tahmin ediyordu. Asistan ise bir başvurunun tamamını, yönergeyi ve örnekleri birlikte okuyor. Ders 12.5, Bağlam penceresi, bu sınırı soruyor: bir dil modeli bir anda ne kadar metni görebilir ve o pencerenin dışında kalana ne olur?

Anlamadığın bir yer mi var?

Mentor yalnız bu dersin metnine dayanarak cevap verir. Metinde geçmeyen bir şey sorarsan uydurmaz, geçmediğini söyler.