Tüm yazılar
Matematik24 Haziran 2025

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.

Matematik Karavanı 6 dk okuma 5 soru
Scrabble harfleri — kelimelerin alt parçalara bölünmesi

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ı:

  1. Kelime tabanlı: Her kelime bir token. Sözlük 100K+ kelime → büyük embedding tablosu. Bilinmeyen kelime felaket: "tokenizasyon" yok → UNK.
  2. Karakter tabanlı: Her harf bir token. Sözlük küçük (~100). Ama dizi uzunluğu çok artar; uzun bağlam ezilir.
  3. 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.

  1. Başla: Her kelimeyi harf dizisine böl. Mesela "düşük" → d ü ş ü k. Her harfin sonuna özel bitiş işareti koy: d ü ş ü k</w>.
  2. Çift sayımı: Tüm metinde komşu harf çiftlerini say. Mesela ü ş 1000 kez, d ü 800 kez geçiyor.
  3. En sıkı birleştir: En sık çiftı tek bir token olarak ekle. ü şüş.
  4. Metni güncelle: d ü ş ü k</w>d üş ü k</w>.
  5. 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 + berry olarak görüyor, içindeki harfleri ayrı ayrı bilmiyor.
  • Rhyme: Hece anlayışı zayıf; hello tek token, dile heceler görünmüyor.
  • Aritmetik: "12345 + 67890" — sayılar 123 + 45 gibi parçalanırsa toplama zorlaşır. Llama 3 her rakamı ayrı token yaparak bunu çözdü.

Sade ders

BPE hikâyesinden iki şey:

  1. 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.
  2. 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

BPEtokenizationNLPGPTsubword

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?