Dilleri Anlamak İçin Kelimeler Yeter mi?

Cross-entropy ve gzip ile dil ağaçları üzerine bir 3Blue1Brown videosu, ve dilleri yazıldıkları gibi ölçmenin neden yanlış katmanı ölçmek olabileceği.

#dilbilim #sıkıştırma #dil-modelleri #fonetik #yan-proje ideas

Bugün bir 3Blue1Brown videosu izledim: But what is cross-entropy?, Grant Sanderson’ın “Compression is Intelligence” serisinin ikinci bölümü. Aklımdan çıkmayan bir fikirle kaldım. Videonun asıl konusu olan büyük dil modellerinin nasıl eğitildiğiyle ilgili değil bu. Başında geçen, neredeyse yan cümle gibi bırakılmış bir örnekle ilgili.

Zip’leyerek dil ailesi ağacı çıkarmak

Video, 2002’den gerçekten tuhaf bir makaleyle açılıyor: Language Trees and Zipping. Kurgu şu: elinde farklı dillerde bir sürü metin belgesi var, ve bilgisayarında bir dosyayı küçültmek için kullandığın gzip’ten başka hiçbir şey kullanmadan, hangi dillerin birbirine yakın olduğunu otomatik olarak buluyorsun, hatta bir soy ağacı çıkaracak kadar. Dilbilim yok, sözlük yok. Sadece genel amaçlı bir sıkıştırıcı.

Yöntem şaşırtıcı derecede basit. İki belge al, A ve B. Önce A’yı tek başına sıkıştır, boyutuna bak. Sonra B’den küçük bir parça alıp A’nın sonuna ekle ve bunu sıkıştır. Eğer B’nin örüntüleri A’ya benziyorsa, dosya neredeyse hiç büyümez: zaten A’ya göre ayarlanmış olan sıkıştırıcı, B’yi de pek şaşırtıcı bulmaz. B çok farklıysa, dosya belirgin şekilde büyür. Bu fark, A ile B arasında bir mesafe ölçütü haline geliyor, ve bunu birçok dil çifti üzerinde uygulayınca gerçeğe yakın bir dil soy ağacı çıkarmaya yetiyor, hatta anonim bir belgenin kim tarafından yazıldığını bile tahmin edebiliyorlar.

Grant’in asıl amacı bu örneği çok daha kesin bir kavrama, cross-entropy’ye giriş yapmak. Bir dağılıma (Q) göre ayarlanmış optimal bir kod, gerçekte başka bir dağılımdan (P) gelen veri üzerinde çalıştırılırsa, sembol başına ortalama kaç bit harcanacağı Q’nun P’ye göre cross-entropy’sidir, ve bu, Q, P’ye eşit olduğunda minimuma iner. Gzip’in altındaki LZ77 algoritması optimal bir kod değil, ve bir metin belgesi de bir olasılık dağılımı değil, ama bu zip-farkı yöntemi kabaca aynı soruyu soruyor: A’ya göre ayarlanmış bir şey, B’yi ne kadar iyi açıklıyor?

Videonun ikinci yarısı, tam olarak bu formülün, cross-entropy’nin, büyük dil modellerinin pretraining loss’unun ta kendisi olduğunu gösteriyor: modelin tahmin ettiği dağılımın, eğitim verisinden gelen gerçek bir sonraki token’a göre, token başına ortalama şaşırma miktarı. Aynı matematik, iki farklı bağlam. Grant bunu matematiğin sana gizli bir bağlantı hakkında “göz kırpması” olarak nitelendiriyor.

Zip yönteminin göremediği şey

Ben burada takıldım, iyi anlamda. Gzip yöntemi tamamen dilin yazılı haliyle çalışıyor: hangi alfabeyi ya da yazım kuralını kullanıyorsa, karakter dizisiyle. Makalenin amacı için bu yeterli, ve Grant zaten bunun kaba bir yaklaşım olduğunu açıkça söylüyor. Ama bu şu anlama geliyor: ölçülen “mesafe” aslında dillerin kendisi arasında değil, yazı sistemleri ve imla kuralları arasında bir mesafe.

İki dil kulağa neredeyse aynı gelip kağıt üzerinde tamamen alakasız görünebilir: farklı alfabeler, farklı transliterasyon kuralları, aynı seslerin üzerine sonradan binmiş farklı imla reformları. Tam tersi de oluyor: aynı alfabeyi kullanan diller fonetik olarak birbirinden uzaklaşabiliyor ama yazımları yüzeysel olarak yakın kalıyor, ya da telaffuzda birbirine yaklaşıyorlar ama imla kuralları onları hâlâ ayrı gösteriyor. Ham metin üzerinden hesaplanan bir sıkıştırma mesafesi, gerçek anlamda yanlış katmanı ölçüyor. Gerçek bir yapıyı da yakalayabiliyor elbette (ortak kökler, ortak biçimbilim, alıntı kelime örüntüleri), ama bunlar tarihsel bir tesadüfle iç içe geçmiş durumda: bir toplumun hangi alfabede karar kıldığıyla.

Merak ettiğim şey, bu tesadüfü aradan çıkarırsan ne olacağı. Önce her şeyi tek, evrensel bir fonetik gösterime (Uluslararası Fonetik Alfabe (IPA), ya da tutarlı başka bir ses-düzeyi kodlamaya) çevirip sonra aynı sıkıştırma-mesafesi ya da cross-entropy analizini çalıştırırsan, aynı ağacı mı elde ediyorsun? Farklı bir ağaç mı? Metin-tabanlı versiyonun bulanıklaştırdığı sınırları netleştiriyor mu, yoksa netleştirdiklerini mi bulanıklaştırıyor?

Projenin kabaca şekli

Bunu henüz tam oturtmuş değilim, ama kafamda şöyle bir şekil almaya başladı:

Metin değil, fonetik veri. Language Trees and Zipping makalesi, paralel ve serbestçe erişilebilir olduğu için İnsan Hakları Evrensel Beyannamesi çevirilerini kullanmıştı. Bunun fonetik karşılığı gerekiyor: ya var olan IPA-transkripsiyonlu derlemler (WikiPron veya PHOIBLE gibi), ya da aynı paralel metin üzerinde çalıştırılan bir fonemleştirme aracı (espeak-ng gibi), otomatik fonemleştirmenin kendisinin de bir yaklaşım ve gürültü kaynağı olduğunu kabul ederek.

Mesafeyi fonem dizileri üzerinde yeniden tanımlamak. Aynı zip-farkı fikri (A’yı sıkıştır, A’nın sonuna B’den bir parça ekleyip sıkıştır, farka bak), ama artık A ve B ham karakter değil, fonem ya da fonetik özellik vektörü dizisi. Burada video ile gerçek anlamda örtüşmeye başlıyor: bir dilin fonotaktiğine (hangi ses dizilerine izin verildiğine ve ne sıklıkta) göre ayarlanmış bir sıkıştırıcının, başka bir dilin fonem akışıyla karşılaşması, iki dağılım arasındaki cross-entropy’nin oldukça doğrudan bir fonetik karşılığı.

Ortaya çıkan ağaçları karşılaştırmak. İki versiyonu da (metin-tabanlı ve fonetik-tabanlı) bilinen bir dilbilimsel soy ağacına (ya da birbirlerine) karşı çalıştırıp nerede örtüştüklerine, nerede ayrıştıklarına, ve bu ayrışmaların yorumlanabilir olup olmadığına bakmak: yazı sisteminin yol açtığı yanlış negatifler, ses değişiminin yol açtığı yanlış pozitifler gibi.

Ve eğer bu tutarsa: fonetik bir dil modeli. Bu kısımdan en az emin olduğum yer, ama beni en çok heyecanlandıran da bu. Metin üzerinde bir sonraki token’ı tahmin etmek, cross-entropy loss’unu bir LLM’in eğitim sinyali yapan şeyse, bir sonraki fonemi tahmin etmek neye benzer? Bir sonraki karakteri ya da alt-kelime token’ını değil, bir sonraki sesi tahmin eden bir model, prensipte belirli bir toplumun imla kurallarından ziyade dilin gerçek akustik-fonolojik yapısına daha yakın bir şey öğreniyor olurdu. Bunun meraktan öteye, faydalı bir şeye (belki daha iyi diller-arası aktarım, belki de “bu iki dil birbirine ne kadar yakın” sorusuna gerçekten fonetik bir cevap) dönüşüp dönüşmeyeceğini bilmiyorum henüz. Zaten bu yüzden önce daha küçük parçayı kurup ne söylediğine bakmak istiyorum, spekülasyonu ondan sonraya bırakarak.

Bunların hiçbiri henüz bir plan sayılmaz, daha çok bir fikrin ilk saati, ipini kaybetmeden önce yazıya dökülmüş hali. Zip yönteminin fonetik versiyonu ilginç bir şey söylerse, devamını yazarım.