Geri Dön
gzip bir dil modeli olabilir mi? DEFLATE üzerine kurulu metin üreteci
SiTech AI Team2 წთ. საკითხავი

gzip bir dil modeli olabilir mi? DEFLATE üzerine kurulu metin üreteci

nathan.rs'teki bir yazı, gzip sıkıştırma aracının metin üretip üretemeyeceğini test ediyor. gzipt deneyi sıkıştırılmış bayt dizileri üzerinde huzme araması kullanıyor: sinir ağı yok, öğrenme yok.

nathan.rs'te yayımlanan bir blog yazısı, şaka gibi görünen bir soru soruyor: neredeyse her işletim sistemiyle gelen sıkıştırma aracı gzip, bir dil modeli olarak çalışabilir mi? Yazar, metni yalnızca sıkıştırıcıyı kullanarak üreten gzipt adlı küçük bir deney geliştirdi: sinir ağı yok, öğrenilmiş parametre yok.

Sıkıştırma tahmindir

Başlangıç noktası, "Language Modeling is Compression" (arXiv 2309.10668) adlı makale. Makale, sıkıştırma ile tahmin arasındaki denkliği ortaya koyuyor: her tahmin modeli aynı zamanda bir sıkıştırıcıdır ve her sıkıştırma algoritması bir tahmin modelidir. Sezgi bilgi kuramından gelir: bir simgenin kodlanması için gereken bit sayısı −log₂ p'dir; burada p, modelin o simgeye verdiği olasılıktır. Yüksek olasılık kısa kod demektir.

gzip, DEFLATE algoritmasını kullanır ve 32 KiB'lik kayan bir pencere üzerinde çalışır. Sonraki baytlar pencerede zaten bulunan bir dizi tekrarlarsa DEFLATE bunları ucuz bir geri başvuru olarak kodlar. Puanlama buradan doğar: bağlam ile aday devam birlikte sıkıştırılır ve sonucun uzunluğu ölçülür. Sonuç ne kadar kısaysa aday o kadar "tahmin edilmiş" sayılır. Bir korpusla ön hazırlık, o korpusu gzip'in penceresine yerleştirir.

Puanlamadan üretime

Puanlama üretim değildir. En iyi sıkışan tek sonraki baytı seçmek başarısız olur, çünkü gzip tam sayı bayt uzunluğu döndürür — kesir yoktur. Tek bayt eklemek uzunluğu çoğu zaman hiç değiştirmez; böylece birçok aday aynı puanı alır ve sinyal nicemleme gürültüsünde kaybolur. gzipt bunu huzme araması (beam search) ile aşar: en sıkıştırılabilir beam_width kısmi devamı tutar, her birini korpusta geçen her baytla genişletir, sonuçları sıkıştırılmış uzunluğa göre puanlar ve yeniden budar. Bu işlem, en iyi aralık seçilmeden önce horizon bayt boyunca tekrarlanır.

Önemli bir ayrıntı: puanlama bağlamında üretilen metnin yalnızca son baytları kalır. DEFLATE yakın eşleşmeleri uzak olanlardan daha ucuza kodlar; tüm geçmişi görebilen bir model en ucuza kendi ürettiği metni kelimesi kelimesine tekrarlayan döngülere girerdi.

Pratikte ne çıkıyor

tiny Shakespeare korpusuyla hazırlanan araç, "MENENIUS:" isteminden sonra Menenius, Marcius ve Lartius'a atfedilen satırlar döndürdü: tutarlı değil, ama kaynağın etkisi açık. Kod, yalnızca standart kütüphaneyi (zlib) kullanan tek bir Python dosyası. Dipnotlarda yazar, makale yazarlarının benzer bir şeyi denediğini ve sonuçların zayıf olduğunu, huzme aramasının eklenmesinin üretim kalitesini belirgin biçimde artırdığını belirtiyor.

Sonuç dar ama gerçek: genel amaçlı bir sıkıştırıcı, metnin kullanılabilir örtük bir modelini taşıyabilir. Sinirsel bir dil modeline çok uzak ve yazar bunu kendisi söylüyor. Yine de bu, tahmin ile sıkıştırmanın aynı problemin iki yüzü olduğunun temiz bir gösterimi.

SSiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.