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
Sekreter Problemi: Hayatın En İyi Seçimini Yapmak için "%37 Kuralı"
Bir işe alma görüşmesi, bir ev arama süreci, hatta hayat arkadaşı seçimi… Hepsinin altında aynı klasik matematik problemi yatar. Cevap şaşırtıcı biçimde tek bir sayıya bağlıdır: %37.
MatematikPisagor Teoremi ve Saklı Bir Sır: İrrasyonel Sayılar Nasıl Keşfedildi?
Dik üçgenlerle ilgili o ünlü kural, aynı zamanda matematik tarihinin en sarsıcı keşfine yol açtı: kesir olarak yazılamayan sayılar. Üstelik bu keşif, bir bilim topluluğunu temellerinden sarstı.
MatematikFibonacci Dizisi ve Altın Oran: Tavşanlardan Ayçiçeklerine Uzanan Örüntü
Bir tavşan üretme bilmecesiyle başlayan basit bir sayı dizisi, ayçiçeği tohumlarından çam kozalaklarına, deniz kabuklarından galaksilere kadar doğanın her yerinde nasıl karşımıza çıkıyor?