Simurg Okulu #8 — Temperature ve sampling: aynı soruya neden farklı cevap gelir
Aynı soruyu iki kez sorduğumda iki farklı cevap aldım. Çırak akşam bölümünde modelin bir sonraki token'ı nasıl "seçtiğini", temperature ve top-p ayarlarının ne işe yaradığını ve hangi işte hangisinin seçileceğini öğreniyor.

Yol günlüğü
Talep vadisinde akşam oldu. Öğle bölümünde modelin bilmediği yerde bile "en olası görünen" devamı ürettiğini yazmıştım. Akşam küçük bir deney yaptım: aynı soruyu aynı asistana iki kez sordum, iki farklı cevap aldım. Parametreler sabitse bu fark nereden geliyor? Bugün bunun peşindeyim.
Bugün öğrendim
Nedir?
Model her adımda tek bir kelime değil, olası bütün token'lar için bir olasılık listesi üretiyor. Sampling (örnekleme), bu listeden bir sonraki token'ın nasıl seçileceğine dair kural. Temperature ise bu seçimin ne kadar "cesur" olacağını belirleyen ayar. Düşük temperature'da model en olası seçeneklere yapışıyor; yüksek temperature'da daha az olası seçeneklere de şans veriyor.
Nasıl çalışıyor?
İlk bölümde öğrendiğim "bir sonraki token tahmini" aslında iki adım: önce olasılıkları hesaplamak, sonra birini seçmek. Her seferinde en yüksek olasılıklı token'ı seçmek (greedy) mümkün, ama bu metni tekdüze ve tekrarcı yapabiliyor. Bu yüzden çoğu sistem olasılıklara göre zar atıyor; aynı soruya farklı cevap gelmesinin sebebi bu zar.
Temperature, zar atmadan önce olasılık dağılımını sıkıştırıyor ya da yayıyor. Değer düştükçe güçlü aday daha da güçleniyor, zayıflar silikleşiyor; değer yükseldikçe dağılım düzleşiyor. Top-p (nucleus sampling) başka bir kapı: olasılıkları büyükten küçüğe dizip toplamı belirli bir eşiğe ulaşan en küçük aday grubundan seçim yapıyor, kuyruktaki tuhaf seçenekleri baştan eliyor. Yöntem, Holtzman ve arkadaşlarının The Curious Case of Neural Text Degeneration makalesinden geliyor; makale, yalnızca en olası yolu izlemenin metni tekrara ve donukluğa sürüklediğini gösteriyor.
Bir şeyi yanlış biliyormuşum: temperature'ı sıfıra çekmek her zaman birebir aynı cevabı garanti etmiyor. Anthropic'in API dokümantasyonu temperature 0'da bile sonuçların tam deterministik olmayacağını açıkça yazıyor. Ayrıca değer aralığı sağlayıcıdan sağlayıcıya değişiyor; aynı sayı iki farklı API'de aynı davranışı vermeyebilir. Bazı yeni modellerde bu ayarların bir kısmı hiç açık olmayabiliyor; kullanacağım modelin dokümanına bakmak şart.
Ne yapılabilir?
- Tutarlılık gereken işler: Sınıflandırma, veri çıkarma, log özetleme, kod düzeltme gibi işlerde düşük temperature tercih ediliyor; aynı girdiye benzer çıktı istenir.
- Fikir gereken işler: Başlık önerisi, beyin fırtınası, alternatif metinler gibi işlerde daha yüksek değer çeşitliliği artırıyor.
- Ölçümde dikkat: Bir prompt'u test ederken tek cevaba bakmak yanıltıcı; aynı soruyu birkaç kez çalıştırıp çıktıların ne kadar dağıldığına bakmak gerekiyor.
- Sohbet arayüzlerinde: Hazır asistanlarda bu ayar çoğunlukla kullanıcıya açık değil; kontrol API ya da geliştirici araçları üzerinden geliyor.
Tüyü yaktım
Elimdeki tek deneme, yol günlüğündeki o sohbet arayüzü denemesiydi ve orada temperature'ı ben ayarlayamıyordum; yani iki farklı cevabı gördüm ama hangi ayarla üretildiğini bilmiyorum. Dürüst sonuç bu: farkın var olduğunu gördüm, sebebini dokümandan öğrendim, ölçmedim. Bir sonraki adımım aynı metin isteğini düşük ve yüksek temperature ile beşer kez çalıştırıp cevapların ne kadar dağıldığını ve yüksek değerde ürün özelliklerinin abartılıp abartılmadığını not etmek; çeşitlilik ile halüsinasyon riski arasında bir bağ olup olmadığını kendi gözümle görmek istiyorum.
Heybeme koyduğum
Model ne söyleyeceğini olasılıkla bilir, hangisini söyleyeceğini ise zar belirler; zarın ne kadar cesur olacağını ben seçerim.
Kafama takılan
Bugün okuduğum Next-Concept Modeling makalesi haberi metni token token değil paralel üreten yöntemlerden söz ediyor. Böyle bir modelde "bir sonraki token'ı seçmek" yoksa temperature neyi ayarlıyor?
Son söz
Sıradaki durak: system prompt. Modele "sen kimsin, nasıl davranacaksın" dediğimiz o görünmez ilk mesaj gerçekte ne yapıyor, ne yapamıyor?