12.1 · Seviye 3 · Dil Modelleri
Token
metnin parçalara bölünmesi; Türkçenin eklemeli yapısı ve token sayısı
Yapay Zekâ Akademisi — M12, Metin Sayıya Dönüşür · 2.439 kelime · 3 saha durumu · ≈ 11 dk okuma · 16 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ış
Kenan Bey faturayı Elif'in masasına bıraktı ve toplamın altını kalemle çizdi.
Şirket kendi özet modelini eğitmeye karar vermeden önce hazır bir dil modeli hizmetiyle üç aylık bir deneme başlatmıştı. Her eksper raporu hizmete gidiyor, hizmet dosya için yarım sayfalık bir özet yazıyordu. Fiyat kelimeyle değil, "token başına" belirlenmişti. Teklifi hazırlayan firma maliyeti şöyle tahmin etmişti: raporların ortalama kelime sayısı çarpı bir virgül üç. İlk ayın faturası bu tahminin iki buçuk katından fazlaydı.
"Kelime saydılar, token faturaladılar," dedi Kenan Bey. "Token ne? Neye para ödüyoruz?"
Elif cevap vermeden önce bir rapor açtı. Reasürans şirketine giden dosyaların özeti İngilizce de yazılıyordu; aynı paragrafın iki dili elindeydi. Türkçesi elli sekiz kelimeydi, İngilizcesi doksan yedi. Melis iki paragrafı hizmetin sayacına ayrı ayrı yapıştırdı. Türkçe paragraf yüz doksan dört token tuttu, İngilizcesi yüz sekiz.
Kenan Bey ekrana eğildi. "Türkçesi daha kısa. Harfi de mi az?"
Melis saydı: Türkçe paragraf dört yüz seksen karakter, İngilizcesi beş yüz doksan altı. Daha az kelime, daha az harf, neredeyse iki kat token. Kenan Bey kalemi masaya koydu. "O zaman bu sayıyı kim, neye göre koyuyor?"
Tek fikir
Bir dil modeli metni kelime ya da harf olarak değil, tokenleştiricinin önceden öğrendiği parçalar olarak görür. Parçalar en çok görülen metinden öğrenildiği için aynı içerik, dile göre farklı sayıda tokena bölünür; fatura ve sınırlar bu sayıyla ölçülür.
Nasıl çalışır
Ders 3.2'de bilgisayarın her harfi bir sayı olarak sakladığını görmüştük. Ders 2.6'da tanımladığımız büyük dil modeli de sayılarla çalışır, ama ona giden sayılar harflerin sayıları değildir. Metin önce parçalara bölünür, her parçanın yerine bir sıra numarası konur ve model bu numaraların dizisini alır. Ders 9.5 ve 9.6'da eğitim verisini "kelime parçası" diye saymıştık; o parçanın adı tokendır.
Neden kelimenin kendisi değil? Türkçe eklemeli bir dildir. Ders 11.3'te "İlacı bırakmamasını söyledim" cümlesinin üç kelimeyle, İngilizcesinin sekiz kelimeyle söylendiğini görmüştük. "Ev" kökü "evler", "evde", "evlerimizden" diye uzar; her biri ayrı bir kelime sayılsa liste hiç bitmezdi ve model eğitimde görmediği bir çekimle karşılaştığında elinde hiçbir şey olmazdı. Harfler ise ters uçtur: liste kısa kalır ama her metin çok uzun bir diziye dönüşür. Kelime parçası ikisinin arasında durur.
Melis'in hazırladığı küçük bir derlemle izleyelim. Derlemde beş kelime var: "evler" üç kez, "evde" iki kez, "evden" üç kez, "ellerde" üç kez, "evle" bir kez. Toplam on iki kelime, altmış üç harf. Başlangıç listesi bu kelimelerde geçen altı harftir: e, v, l, r, d, n.
Birinci adımda her kelimedeki yan yana harf çiftleri, kelimenin kaç kez geçtiğiyle çarpılarak sayılır. "e" ile "v" çifti "evler"de, "evde"de, "evden"de ve "evle"de bulunur: üç artı iki artı üç artı bir, dokuz. "d" ile "e" sekiz, "l" ile "e" yedi kez geçer. Kazanan "ev" olur ve listeye yedinci parça olarak eklenir. İkinci adımda en sık çift sekizle "de"dir. Üçüncü adımda yediyle "le". Dördüncü adımda yeni parça "le" ile "r" altı kez yan yanadır, "evler"de ve "ellerde"de: "ler" doğar. Beşinci adımda "ev" ile "de" beş kez birleşir, "evde" tek parça olur.
Beş birleştirmeden sonra liste on bir parçadır. Altmış üç harflik derlem yirmi sekiz tokena iner: "evler" iki parça, "evde" bir, "evden" iki, "ellerde" dört, "evle" iki. Asıl ilginç olan, derlemde hiç geçmeyen kelimelere ne olduğudur. Tokenleştirici yeni bir kelimeyi harflerine ayırır ve öğrendiği birleştirmeleri aynı sırayla uygular. "Evlerde" üç parça olur: ev, ler, de. "Evlerimizden" ise sekiz parçaya dağılır, çünkü "imiz" derlemde hiç görülmemiştir: ev, ler, i, m, i, z, de, n. Sennrich ve arkadaşları her kelimenin sonuna bir bitiş işareti de ekler; örneği sade tutmak için onu atladık.
İki şeye dikkat. Birincisi, "ler" ve "de" Türkçe eklere benzedi ama algoritma ek bilmez; yalnız sayar. Aynı sayım "evde"yi tek parça yaptı, "evlerde"deki "de"yi ayrı bıraktı. Parça sınırları sıklığı izler, dilbilgisini değil. İkincisi, seyrek çekimler daha çok parçaya bölünür. Gerçek bir tokenleştirici aynı işi milyarlarca kelimelik bir derlemde on binlerce kez yapar ve derlemde hangi dil çoksa onun sık parçaları önce birleşir. Ders 2.6'da bir dil modelinin eğitim metninin kelime sayısıyla yüzde doksan üçünün İngilizce olduğunu görmüştük. Böyle bir derlemde "the", "claim", "closed" tek parçaya ulaşır; Türkçe kelimelerin her çekimi daha seyrek geçtiği için parçalı kalır.
Bayt çifti kodlamasının yaygın bir sürümü harften değil bayttan başlar. Ders 3.2'deki karakter numaraları bilgisayarda bir ila dört bayt olarak yazılır. Bir bayt iki yüz elli altı değer alabildiği için başlangıç listesi iki yüz elli altı parçadır ve hiçbir karakter bilinmez kalmaz.
Kenan Bey'in sorusunun cevabı buradadır. Firma kelime başına bir virgül üç token oranını İngilizce belgelerde görmüştü. Açılıştaki Türkçe paragrafta oran üçün üstündeydi: yüz doksan dört bölü elli sekiz.
Sahada
Nerede yanılır
İlk yanılgı, kelimeyle tokenı birbirine çevirmektir. Kelime başına token oranı dile, alana ve tokenleştiriciye göre değişir. Firmanın oranı İngilizce belgelerde doğruydu, Türkçe eksper raporlarında iki buçuk kat yanlış çıktı. Aynı hata maliyet tahmininde, cevap uzunluğu sınırında ve bir modele bir anda ne kadar metin verilebileceği hesabında tekrarlanır. Oran ancak kurumun kendi metinlerinde ölçülerek bilinir.
İkincisi, modelin harfleri gördüğünü varsaymaktır. Model parçaların numaralarını görür; bir parçanın içinde hangi harflerin olduğunu ancak eğitimde dolaylı olarak öğrenebilir. Harf saymak, kafiye bulmak, hece bölmek, bir kodu hane hane kopyalamak bu yüzden beklenmedik biçimde kırılgandır. Akıcı bir paragraf yazan aynı sistem bir kelimenin harflerini yanlış sayabilir; ikisi farklı işlerdir.
Üçüncüsü, yazım farklarının görünmez sanılmasıdır. Türkçe harfleri kullanmadan yazılmış bir ihbar ile yazım hatası taşıyan bir ihbar, okur için aynı kelimelerdir; tokenleştirici için başka parça dizileridir. Seyrek dizi daha çok parçaya bölünür, model o parçaları eğitimde daha az görmüştür. Ağız özellikleri, özel adlar, ilaç ve parça kodları aynı yerde durur. Hatanın en sık düştüğü metinler, en az görülen biçimde yazılmış olanlardır.
Dördüncüsü, iki sistemin token sayılarını birbiriyle karşılaştırmaktır. Açılıştaki paragraf bir tokenleştiricide yüz doksan dört, ötekinde yüz otuz üç tokendır. Fiyat, sınır ve hız ancak aynı tokenleştirici içinde karşılaştırılabilir.
Uygulama
Kâğıt kalemle bir tokenleştirici eğitip görmediği bir kelimeye uygulayacaksın.
- Derlem: "yollar" bir kez, "yolda" iki kez, "kollar" bir kez, "kolda" iki kez, "yolcu" iki kez. Her kelimeyi harflerine ayırarak yaz ve başlangıç listesini çıkar.
- Her kelimedeki yan yana harf çiftlerini, kelimenin tekrar sayısıyla çarparak say. En sık çifti birleştir ve listeye ekle.
- Kelimeleri yeni parçayla yeniden yaz, saymayı tekrarla. Dört birleştirme yapana kadar sürdür.
- Derlemin toplam harf sayısını ve dört birleştirmeden sonraki toplam token sayısını yaz.
- Öğrendiğin dört birleştirmeyi aynı sırayla "yollarda" ve "yoldaşlar" kelimelerine uygula. Kaç parça çıktı?
- "Yoldaşlar" kelimesinde listede olmayan bir harf var mı? Bayttan başlayan bir tokenleştirici bu durumda ne yapardı?
Başlangıç listesi dokuz harftir: a, c, d, k, l, o, r, u, y. Birleştirmeler sırasıyla "ol" sekiz, "yol" beş, "da" dört, "kol" üç sayımla gelir. Kırk iki harflik derlem yirmi iki tokena iner ve liste on üç parça olur. "Yollarda" beş parçaya ayrılır: yol, l, a, r, da; derlemde "lar" hiç birleşmediği için ek dağılır. "Yoldaşlar"da "ş" listede yoktur; harften başlayan bu küçük tokenleştirici onu tanımaz, bayttan başlayan bir tokenleştirici ise iki baytına ayırır; harften başlayan sürümde kelime altı parça olur, yol, da, ş, l, a, r. Ayrıca "yoldaş" bir kelimedir ama sayım onu "yol" ve "da" diye böler; anlamı bilmeyen bir algoritmanın sınırıdır bu.
Defter: "Parçalar" adlı sayfaya dört birleştirmeyi sırasıyla ve sayımlarıyla yaz. Altına iki kelimenin parçalarını, sonra bir cümleyle şunu not et: bu küçük tokenleştirici hangi kelimelere ucuz, hangilerine pahalı davranıyor ve neden?
Hata köşesi
Yaygın yanlış"Bir token bir kelimedir, ya da en azından bir hecedir."
Token, tokenleştiricinin listesindeki bir parçadır. İngilizcede sık kelimelerin çoğu tek tokendır, bu yüzden kural İngilizcede neredeyse tutar. Türkçede bir kelime birkaç parçaya bölünebilir ve parça sınırı heceye de eke de denk gelmeyebilir; "kapatıldı" bir ölçümde beş parça çıktı.
Yaygın yanlış"Türkçe daha çok token tutuyor, çünkü Türkçe verimsiz bir dil."
Petrov ve arkadaşlarının iki bin cümlesinde Türkçe, İngilizceyle neredeyse aynı sayıda karakterle aynı içeriği taşıdı. Çok dilli metinle eğitilmiş bir tokenleştiricide token primi bire çok yaklaştı. Fark dilin değil, parça listesini çıkaran derlemin bileşimidir.
Sorumluluk
Elif, Kenan Bey'e bir sayfalık bir not yazdı. Fatura hatası değildi; tahmin yanlış ölçü birimiyle yapılmıştı. Önerisi şuydu: sözleşmenin ikinci ayı rapor başına fiyatlanacak ya da fiyat, şirketin kendi Türkçe raporlarından rastgele seçilmiş yüz dosyada ölçülmüş token sayısına bağlanacak; hizmet tokenleştiricisini değiştirirse ölçüm yeniden yapılacak. Kararı Kenan Bey verir, ölçümün doğrulanması Elif'tedir. Bedelin bir kısmı kurumun bütçesine, bir kısmı sessizce müşteriye düşer: aynı token sınırıyla Türkçe yazan müşteri daha kısa cevap alır, yazım hatası ya da yerel ağız taşıyan ihbarlar hem daha pahalı işlenir hem daha az görülmüş parçalarla anlaşılmaya çalışılır. Bunu sınamada ayrıca saymak kurumun sorumluluğudur.
Kapanış
- Dil modeli metni tokenlara böler; token, tokenleştiricinin kelime dağarcığındaki bir parçadır ve her token bir sıra numarasıyla modele girer.
- Bayt çifti kodlaması derlemde yan yana en sık geçen iki parçayı adım adım birleştirir; parça sınırları sıklığı izler, eki ya da heceyi değil, ve derlemde az görülen dil ile biçim daha çok parçaya bölünür.
- Aynı içerik dile ve tokenleştiriciye göre farklı sayıda token tutar; fiyat, cevap sınırı ve kapasite kurumun kendi metinlerinde, aynı tokenleştiriciyle ölçülerek hesaplanır.
Üç soru
- Melis'in derleminde "evler" üç, "evde" iki, "evden" üç, "ellerde" üç, "evle" bir kez geçiyor. İlk birleştirme neden "ev" olur ve sayımı kaç çıkar?
- Açılıştaki Türkçe paragraf İngilizcesinden daha az karakter taşıdığı hâlde neden daha çok token tuttu?
- Bir hizmetin fiyatını kelime başına sabit bir oranla tahmin etmek neden Türkçe metinde yanıltır, ve doğru tahmin nasıl yapılır?
Yanıtlar
- "e" ile "v" çifti "evler"de üç, "evde"de iki, "evden"de üç, "evle"de bir kez geçer: toplam dokuz. "d" ile "e" sekizde, "l" ile "e" yedide kalır. En sık çift birleştiği için "ev" listeye ilk eklenen parça olur.
- Token sayısı karakterden değil, tokenleştiricinin parça listesinden gelir. Liste İngilizcenin ağır bastığı bir derlemden çıkarıldığı için İngilizce kelimeler çoğunlukla tek parçadır; Türkçe kelimelerin çekimleri daha seyrek görüldüğü için birkaç parçaya, bazen tek tek harflere bölünür.
- Oran dile ve tokenleştiriciye bağlıdır; İngilizcede bir virgül üç olan oran açılıştaki Türkçe paragrafta üçün üstündeydi. Doğru tahmin, kurumun kendi metinlerinden bir örneği aynı hizmetin tokenleştiricisinden geçirip ortalamayı ölçerek ve tokenleştirici değiştiğinde ölçümü yenileyerek yapılır.
Sonraki derse köprü
Kelime dağarcığındaki sıra numarası bir parçayı ötekinden ayırmaya yeter, ama "hasar" ile "zarar"ın birbirine benzediğini taşımaz. Ders 12.2, Gömme, her tokena bir sayı listesi verip benzer bağlamlarda geçen kelimeleri birbirine yakın düşürmeyi anlatıyor; harf harf eşleşen bir aramanın göremediği akrabalıklar böyle görünür hâle gelir. O yakınlık neyin izidir, anlamın mı, kullanımın mı?
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.