01Bir kelimenin içinde kaç parça var?#
“Kediler” yazdığında sen tek bir kelime görürsün. Bir dil modelinin önündeyse bir seçim vardır: bunu tek parça olarak mı, “kedi” ve “ler” olarak mı, yoksa harf harf mi temsil etmeli? Bu karar, modelin okuyacağı dizinin uzunluğunu değiştirir.
Her kelimeye ayrı bir yer ayırmak, yeni kelimelerle karşılaşınca zorlaşır. Her şeyi harflere ayırmak ise sık kullanılan ifadeleri bile uzun dizilere dönüştürür. Alt kelime tokenizasyonu, parçaların tekrar kullanılabildiği bir ara yol sunar. BPE, bu parçaları oluşturmanın yöntemlerinden biridir.
Önce token ile embedding arasındaki farkı görmek istersen kısa bir girişimiz var. Burada daha dar bir sorunun peşindeyiz: parçaların sınırları nasıl öğrenilir?
02Sık görülen komşuları birleştir#
Karakter tabanlı basit bir BPE eğitimi, kelimeleri tek tek karakterlere ayırarak başlar. Bütün eğitim verisindeki komşu çiftler sayılır. En sık çift birleştirilir; oluşan yeni parçalarla sayım tekrarlanır. Böylece sıralı bir birleştirme listesi oluşur. Bu, yeni metne uygulanacak kural listesidir. Hugging Face’in BPE anlatımı bu iki aşamayı birlikte açıklar.
Bizim küçük veri kümemizde “kedi” 12, “kediler” 8 ve “kedim” 4 kez geçiyor. Bu yüzden ilk turda k + e çifti 24 kez sayılıyor. Aynı sıklıktaki çiftlerde, veri içinde önce karşılaşılanı seçiyoruz. İlk birleşme “ke”; sonraki turlarda bu yeni parça da başka bir parçayla birleşebilir.
Bu tercih “kedi”nin bir hayvan olduğunu bilmeye dayanmaz. Algoritma burada anlam çözümlemesi yapmaz; tekrar eden komşulukları sayar.
03Şimdi kuralları kendi metninde çalıştır#
“kediler kedim” ile başla. Sonraki adım düğmesine bastıkça, öğrenilmiş bir kuralın metinde bulduğu çiftler birleşecek. Aynı adımda birden çok eşleşme değişebilir. Alttaki ayrıntıyı açıp kuralın eğitim verisinde ne kadar sık görüldüğünü de inceleyebilirsin.
BPE: küçük parçalar birleşiyor
Metnin yalnızca tarayıcında işlenir. Büyük ve küçük harfler farklıdır.
Her adım, sıradaki uygun kuralın eşleşen çiftlerini soldan sağa birleştirir. Boşluklar ve noktalama sınırları aşılmaz. Mavi parçalar son birleşmenin sonucudur.
Bu kurallar nereden geliyor?
Her turda eğitim verisindeki en sık komşu çift seçilir, birleştirilir ve çiftler yeniden sayılır. Eşitlikte aşağıdaki veri sırası belirleyicidir. Deney 10 kural öğrendikten sonra durur.
| Sıra | Çift → parça | O turdaki sıklık |
|---|---|---|
| 1 | k + e → ke | 24 |
| 2 | ke + d → ked | 24 |
| 3 | ked + i → kedi | 24 |
| 4 | l + e → le | 16 |
| 5 | le + r → ler | 16 |
| 6 | k + ö → kö | 11 |
| 7 | kö + p → köp | 11 |
| 8 | köp + e → köpe | 11 |
| 9 | köpe + k → köpek | 11 |
| 10 | kedi + ler → kediler | 8 |
Yeni metinde sıklıklar yeniden öğrenilmez. Kurallar bu sırayla uygulanır; eşleşmeyen kurallar görsel adımlarda atlanır. Sözcük sonu işareti ve Unicode normalizasyonu bu basit örneğe dahil değildir.
Sonra “Kedi, kedi! 🐈” örneğine geç. Büyük K, küçük k ile aynı işaret olmadığı için iki yazım aynı biçimde birleşmez. Virgül, boşluk ve emoji de kaybolmaz. Bu deney, eğitimde görmediği işaretleri tek tek korur; dolayısıyla sonuç tam bir model sözlüğüne ait token kimlikleri içermez.
04Öğrenmek ile uygulamak farklı işlerdir#
Yeni cümlede en sık çifti yeniden seçmiyoruz. Eğitimde elde edilmiş sıraya bakıyor, eşleşen kuralları uyguluyoruz. Yoksa aynı sözcüğün parçaları, yanına yazdığın cümlelere göre gelişigüzel değişirdi.
Laboratuvardaki adım numarası ile kural numarası bu yüzden farklı olabilir. Örneğin ilk dört kural bir metne uymuyorsa, görünen ilk birleşme beşinci kuralla gerçekleşebilir. Görsel, hiçbir şeyi değiştirmeyen kuralları atlar; öğrenilmiş önceliği değiştirmez.
Tokenizerın eğitimi ile Transformer’ın eğitimi de aynı işlem değildir. Bu deney birleştirme kuralları çıkarır. Dil modelinin eğitimi ise, bu tokenlarla yapılan tahminlerin hatasına göre model parametrelerini günceller.
05Parçalar, dilbilgisi kuralları değildir#
BPE bazen bir kökü veya eki andıran parçalar bulabilir. Her zaman bulması gerekmez: sıklıkla seçilen bir çiftin dilbilimsel anlam taşıması şart değildir. Farklı eğitim verisi, normalizasyon veya kural sayısı farklı sınırlar oluşturabilir.
Alt kelime birimlerinin az görülen sözcükleri temsil etmedeki rolü, Sennrich, Haddow ve Birch’in makinesel çeviri çalışmasında ayrıntılı olarak incelenir. BPE’nin bir NLP uygulamasındaki motivasyonunu anlamak için iyi bir başlangıçtır.
- Neural Machine Translation of Rare Words with Subword Units — Sennrich ve diğerleri, 2016: alt kelime birimleri ve BPE uyarlaması.
- Byte-Pair Encoding tokenization — Hugging Face: eğitim, kural uygulama ve byte tabanlı yaklaşımın farkı.
Parçalar hazır. Transformer anlatımında şimdi bu tokenların sayısal temsillere dönüşmesini, ardından attention ile birbirinden bilgi almasını izleyebilirsin.
Bu yazıyı bitirdiğinde:
- BPE’nin sık görülen komşu parçaları nasıl birleştirdiğini anlatabilirsin.
- Kuralları öğrenmek ile yeni metne uygulamak arasındaki farkı açıklayabilirsin.
- Token sınırlarının dilbilgisi kuralları olmadığını bir örnekle gösterebilirsin.
Cümlelerden birini kendi sözlerinle anlatamıyorsan, ilgili bölüme dön ve demoyu yeniden dene.
Bir dağılımdan kelime seçmenin yolları
Orta · 8 dk okuma