BPE: LLM'lerin Kelimelere Bakma Şekli
1994'te dosya sıkıştırma için bulunan bir algoritma, 2015'te dil işlemenin standart tokenizasyon yöntemi oldu.

Bilgisayar kelimeyi nasıl görür?
Bir LLM'ye "merhaba" yazdığınızda model harfleri değil, token'ları görür. Token, modelin "atomik birim" olarak işlediği parça. Kelime olabilir, harf olabilir, ikisinin arasında bir şey olabilir.
Üç ana strateji vardı:
- Kelime tabanlı: Her kelime bir token. Sözlük 100K+ kelime → büyük embedding tablosu. Bilinmeyen kelime felaket: "tokenizasyon" yok → UNK.
- Karakter tabanlı: Her harf bir token. Sözlük küçük (~100). Ama dizi uzunluğu çok artar; uzun bağlam ezilir.
- Subword tabanlı: İkisinin arasında. Kelimeleri alt parçalara böl. İşte BPE bu.
Sıkıştırma algoritmasından NLP'ye
Byte Pair Encoding 1994'te Philip Gage tarafından veri sıkıştırma için icat edildi. Fikir: en sık görülen byte çiftini tek bir byte ile değiştir, tekrar et.
2015'te Rico Sennrich, Barry Haddow ve Alexandra Birch onu makine çevirisi için adapte etti. 2018'de GPT-2'de kullanılması ile tüm dil modeli ekosisteminde standardize oldu.
Algoritma — adım adım
Bir eğitim metni var. Hedef: 50.000 token kelime dağarcığı (vocabulary) oluştur.
- Başla: Her kelimeyi harf dizisine böl. Mesela "düşük" →
d ü ş ü k. Her harfin sonuna özel bitiş işareti koy:d ü ş ü k</w>. - Çift sayımı: Tüm metinde komşu harf çiftlerini say. Mesela
ü ş1000 kez,d ü800 kez geçiyor. - En sıkı birleştir: En sık çiftı tek bir token olarak ekle.
ü ş→üş. - Metni güncelle:
d ü ş ü k</w>→d üş ü k</w>. - Tekrar: Vocabulary boyutu hedefe ulaşana kadar 2-4'ü tekrarla.
Sonuçta sık geçen ek/kökler bir tek token olur. Mesela "-leme", "-ler", "tek-", "ko-" gibi. Nadir kelimeler birkaç alt parçaya böler.
Örnek
GPT-4 tokenizer'ı şöyle parçalar:
- "hello world" →
hello+world(2 token) - "merhaba dünya" →
mer+haba+d+ünya(4 token — Türkçe için her zaman daha uzun) - "antidisestablishmentarianism" →
ant+idis+establishment+arian+ism(5 token)
Türkçe gibi sondan eklemeli dillerde token sayısı genellikle İngilizceden 2-3x fazla. Bu doğrudan API maliyetine yansır.
Modern varyantlar
SentencePiece (Google, 2018)
BPE'nin uluslararası varyantı. Boşluğa özel davranır (boşlukları açıkça ▁ ile temsil eder). Llama, Mistral kullanır.
Tiktoken (OpenAI, 2022)
Bayt seviyesinde BPE. UTF-8 byte dizilerine doğrudan uygulanır; her dil için aynı tokenizer. GPT-3.5, GPT-4 standart.
WordPiece (Google BERT)
BPE'ye benzer ama "en sık çift" yerine "olasılığı en çok artıran çift" seçer. BERT ailesi kullanır.
Unigram LM (SentencePiece varyantı)
Aşağıdan yukarı değil, yukarıdan aşağı — büyük bir vocab ile başla, en az kullanışlı tokeni at. mT5, XLM-R kullanır.
Tokenizer kalitesi neden önemli
LLM'in gücü kelime başına token sayısıyla dolaylı orantılıdır. Eğer Türkçe için kelime başına 3 token harcıyorsanız:
- Aynı içerik 3x token = 3x maliyet
- Bağlam 3x daha hızlı dolar
- Eğitim sırasında 3x daha az içerik sığar
Bu yüzden modern LLM'ler tokenizer'ı titizlikle ayarlar. Llama 3 vocabulary'sini 32K'dan 128K'ya çıkardı — Türkçe gibi diller için %30 azalma sağladı.
Tokenizer garipliği
LLM hataları sık sık tokenizer'dan gelir:
- Sayım: "strawberry" kelimesinde kaç 'r' var? Model söyleyemiyor çünkü
straw+berryolarak görüyor, içindeki harfleri ayrı ayrı bilmiyor. - Rhyme: Hece anlayışı zayıf;
hellotek token, dile heceler görünmüyor. - Aritmetik: "12345 + 67890" — sayılar
123+45gibi parçalanırsa toplama zorlaşır. Llama 3 her rakamı ayrı token yaparak bunu çözdü.
Sade ders
BPE hikâyesinden iki şey:
- Eski sıkıştırma algoritmaları yeni alanda doğabilir. 1994 dosya sıkıştırma fikri, 30 yıl sonra trilyon dolarlık AI ekosisteminin temel altyapısı oldu.
- Dil eşitsizliği matematiktedir. Tokenizer İngilizce için optimize edildiyse, Türkçe konuşan kullanıcı her etkileşimde fazla öder. Bu sadece fiyat değil, model kalitesi de etkilenir.
Bağlam
LLM mimarisi için: [[transformer-attention-is-all-you-need]], [[gpt-mimarisi-decoder-only-transformer]]. Embedding için: [[word2vec-kelime-vektörleri]] (varsa). Bağlam uzunluğu maliyeti için: [[kv-cache-llm-belleginin-sessiz-darbogazi]]. Türkçe NLP için: [[turkce-dil-isleme-zorluklari]].
Etiketler
Kendinizi Test Edin
Cevaplarınız profilinizde istatistik olarak saklanır.
1. BPE'nin orijinal amacı neydi?
2. BPE'nin dil modellemedeki temel fikri nedir?
3. Türkçe için token sayısı neden İngilizceden fazla?
4. Llama 3'ün vocabulary değişikliği nedir?
5. "strawberry kelimesinde kaç 'r' var?" sorusunu model neden zor cevaplıyor?
İlgili Yazılar
Patates Paradoksu: 100 Kilo Patates Biraz Kuruyunca Neden 50 Kiloya Düşer?
100 kilo patatesiniz var ve %99’u sudan oluşuyor. Biraz beklettiniz, su oranı %98’e düştü. Şimdi patatesler kaç kilo? Sezginiz "neredeyse 100" diyor. Doğru cevap ise tam 50 kilo — ve bu, oranların ne kadar aldatıcı olduğunu gösteriyor.
MatematikLanchester’ın Savaş Yasaları: Bir Ordunun Gücü Neden Asker Sayısının Karesiyle Artar?
İki ordu çarpışırken sonucu ne belirler? Sezgi "daha kalabalık olan kazanır" der. Ama bir mühendis, modern savaşta sayısal üstünlüğün etkisinin doğrusal değil, asker sayısının karesiyle orantılı olduğunu gösterdi. Bu, neden "böl ve yönet" işe yaradığını açıklar.
Matematik"Yüzde 30 Yağmur İhtimali" Tam Olarak Ne Demek? Çoğu Kişi Yanlış Anlıyor
Hava durumu "bugün yüzde 30 yağmur ihtimali" dediğinde ne anlıyorsunuz? Gökyüzünün yüzde 30’u mu kapanacak? Günün yüzde 30’unda mı yağacak? Aslında ikisi de değil — ve gerçek anlamı, olasılığın ne kadar incelikli olduğunu gösteriyor.