- Büyük dil modellerinin (LLM) örnekleme yöntemlerini yeni başlayanların da anlayabileceği şekilde anlatan kapsamlı bir rehber
- Token’ın ne olduğu, neden kelime yerine kullanıldığı ve modelin metni nasıl ürettiği ayrıntılı biçimde ele alınıyor
- Örnekleme, çıktının çeşitliliğini ve doğallığını ayarlama sürecidir; Temperature, Top-K, Top-P, DRY gibi çeşitli örnekleme algoritmaları tanıtılıyor
- Her örnekleme tekniği, kavramsal açıklamaların yanı sıra matematiksel ve algoritmik çalışma prensipleriyle birlikte açıklanıyor; tekrarın önlenmesi, yaratıcılığın artırılması, tutarlılığın ayarlanması gibi etkiler karşılaştırılıyor
- Örnekleyiciler arasındaki birleştirme sırası, etkileşimler ve çakışma örnekleri de derlenmiş; bu da metin üretim kalitesini hassas biçimde kontrol etmek isteyen geliştiriciler için çok faydalı bir kaynak haline getiriyor
Intro Knowledge
Short Glossary
- Logits, her token için skoru ifade eden normalize edilmemiş değerlerdir
- Softmax, logits değerlerini normalize edilmiş bir olasılık dağılımına dönüştüren fonksiyondur
- Entropy, tahmin belirsizliğini ifade eder; ne kadar yüksekse bir sonraki token hakkındaki belirsizlik de o kadar yüksektir
- Perplexity, düşük olduğunda modelin güveninin yüksek olduğunu gösteren bir metriktir
- n-gram, art arda gelen n adet token dizisini ifade eder
- Context window, modelin tek seferde işleyebileceği azami token sayısıdır
Why tokens?
Why not letters?
- Harf düzeyinde tokenizasyon, diziyi fazla uzatarak hesaplama maliyetini artırır ve bilgi bağlantılarını kurmayı zorlaştırır
Why not whole words?
- Kelime tabanlı yaklaşımda sözlük boyutunun patlaması ve yeni ya da nadir kelimeleri ifade etme zorluğu gibi sorunlar vardır
- Sub-word tabanlı yaklaşım, önek, kök ve sonekleri ayırarak işleyebildiği için biçimbirimsel anlayış ve çok dilli transfer öğrenmesi açısından etkilidir
How are the sub-words chosen?
- Sözlük, eğitim verisinin temsilî örnekleri üzerinden en sık geçen alt kelimelerin (sub-word) bulunmasıyla oluşturulur
How does the model generate text?
- Eğitim sırasında büyük miktarda metin üzerinden bir sonraki token’ın olasılık dağılımı öğrenilir
- Çıkarım sırasında ise tüm olası token’lar için olasılık hesaplanır ve örnekleme tekniğine göre bir sonraki token seçilir
From Tokens to Text
- Tahmin aşaması: Tüm aday token’lar için olasılık dağılımının hesaplanması
- Seçim aşaması: Belirli bir örnekleme stratejisine göre token seçimi
- Yalnızca olasılığı en yüksek token’ı seçmek sıkıcı veya tekrarlı metinler üretebileceğinden, örnekleme teknikleri önemlidir
Sampling
Temperature
- Düşük değerler daha tutucu ve tekrarlı, yüksek değerler ise daha yaratıcı sonuçlara yol açar; ancak hata olasılığını da artırır
- Olasılık dağılımının keskinliğini (yoğunluğunu) ayarlamak için logits değerleri sıcaklık değerine bölünür
Presence Penalty
- En az bir kez görünen token’ın yeniden görünme olasılığını düşürür
- Yalnızca kullanılmış olup olmadığına bakar; kaç kez geçtiğini dikkate almaz
Frequency Penalty
- Görünme sayısıyla orantılı olarak puan düşürülür
- Sık kullanılan kelimeler daha büyük cezaya uğrayarak çeşitliliği artırmaya katkı sağlar
Repetition Penalty
- Daha önce görülen token’lara pozitif/negatif logit için asimetrik ceza uygular
- Döngüsel tekrarları önlemede etkilidir, ancak bağlam tutarlılığına zarar verebilir
DRY (Don't Repeat Yourself)
- n-gram örüntülerindeki tekrarları algılayarak tekrarı öngören token’ların olasılığını düşürür
- Daha uzun ve daha yakın zamanda tekrar edilmiş ifadeler daha güçlü biçimde bastırılır
- Yaratıcı metinlerde doğallığı korurken tekrarı azaltmada son derece başarılıdır
Top-K
- Yalnızca en üstteki K aday bırakılır, diğer token’lar elenir
- Aşırı uç örnekleri ayıklarken belli bir rastgelelik düzeyini korur
Top-P (Nucleus Sampling)
- Kümülatif olasılık P değerine ulaşana kadar olan token’lar bırakılır, geri kalanı elenir
- Modelin güven düzeyine göre aday kümesinin boyutu değiştiği için uyarlanabilirdir
Min-P
- En yüksek olasılıklı token temel alınarak, onun belirli bir oranından düşük olmayan token’lar bırakılır
- Filtreleme, modelin özgüvenine göre dinamik olarak ayarlanır
Top-A
- Adaylar, en yüksek olasılıklı token’ın olasılığının karesiyle orantılı bir eşik üzerinden filtrelenir
- Güven arttıkça daha sıkı filtreleme uygulanır
XTC
- Belirli bir olasılıkla en yüksek olasılıklı adayları kasıtlı olarak çıkarır ve daha az kesin seçimlere yönlendirir
- Alışılmadık veya yaratıcı yanıtlar üretmek için kullanılan bir tekniktir
Top-N-Sigma
- Olasılık dağılımının standart sapmasına göre geçerli token’ları seçer
- İstatistiksel özelliklere dayalı filtreleme sayesinde farklı durumlara esnek biçimde uyum sağlar
Tail-Free Sampling (TFS)
- Olasılık eğiminin ikinci türevi (eğrilik) üzerinden anlamlı adaylarla long-tail adayları ayırır
- Doğal bir kesim noktası bularak filtreleme yapar
Eta Cutoff
- Dağılımın entropisine (belirsizliğine) göre filtreleme ölçütünü dinamik biçimde ayarlar
- Güven arttıkça daha fazla token elenir, güven azaldıkça daha esnek davranır
Epsilon Cutoff
- Sabit bir olasılık eşiği kullanarak düşük olasılıklı token’ları eler
- Basittir ama öngörülebilirdir ve gereksiz long-tail adayları temizlemede kullanışlıdır
Locally Typical Sampling
- Beklenen surprisal’a (tahminle farkına) ortalamaya yakın olan token’ları tercih eder
- En olası token’ı ya da en tuhaf token’ı değil, "tipik" bir seçimi teşvik eder
1 yorum
Hacker News yorumları
Sampler'ların modelin iç durumuna erişemediğinden bahsetmiyor
Ollama/llama.cpp için bir örnekleme kılavuzu yazdım
LLM'in "fikirler" üretmesini sağlamaya çalıştığınızda, logit vektörü seçiminin o özgün fikri bozması gerekir
Her şey sade biçimde açıklanmış; bu da yeni şeyler denemek için alan açıyor
LLM modeli örtük olarak tokenizasyon yapabilir mi?
Bununla bağlantılı olarak, min_p makalemiz ICLR'de 12.000 başvuru arasında 18. oldu
Örneklemenin gerçekten modelin sınırlarını çözüp çözmediğini, yoksa daha derin bir sorunu gizleyip gizlemediğini merak ediyorum
"Sampling" beklediğimden çok daha fazla şeyi kapsıyor
Çok faydalı bir doküman; açıklamalar net ve birçok şeyi kapsıyor
Başlangıç softmax sıcaklığı seçiminden sonra bu kadar çok oynama yapıldığını fark etmemiştim