Perplexity
Perplexity, bir modelin metin üzerindeki çapraz entropisinin üstel değeridir. Nasıl hesaplanacağını, modellerin adil biçimde nasıl karşılaştırılacağını ve puanlama dışındaki kullanım alanlarını incele.
Perplexity, olasılıksal bir modelin bir diziyi ne kadar iyi tahmin ettiğini ölçen metriktir. Modelin gerçek sıradaki her token için atadığı negatif log olabilirliğin ortalamasının üstel değeri olarak hesaplanır. Düşük değerler daha iyidir. Perplexity değerinin 10 olması, modelin her adımda 10 seçenek arasından eşit olasılıkla seçim yapıyormuş gibi ortalama belirsizliğe sahip olduğu anlamına gelir; bu nedenle bu sayı çoğu zaman etkin dallanma faktörü olarak yorumlanır. Frederick Jelinek, Robert Mercer, Lalit Bahl ve James Baker, konuşma tanıma görevlerinin konuşma tanıma zorluğunu ölçmek için metriği 1977'de IBM'de ortaya koydu. Perplexity, dil modellemede temel içsel metrik olmayı sürdürüyor. Örneğin OpenAI'nin 1,5 milyar parametreli GPT-2 modeli, 2019'da WikiText-103 kıyaslamasında üzerinde eğitilmediği halde 17,48 perplexity değerine ulaştı.
Bu sözcük, birbiriyle ilgisiz iki başka şeyi de adlandırır. Perplexity AI bir AI arama motoru şirketidir; t-SNE'deki perplexity hiperparametresi ise t-SNE yüksek boyutlu verilerin 2 boyutlu haritasını oluştururken her noktanın yaklaşık kaç komşuyu dikkate alacağını belirler.
Şaşırtıcılığı Hesaplama#
N token'lık bir dizi için perplexity = exp(-(1/N) x log p(token_i | önceki tüm token'lar) toplamı). Üstelin içindeki nicelik, metin ile modelin tahminleri arasındaki çapraz entropidir; büyük dil modellerini (LLM) eğitmek için kullanılan aynı kayıp işlevi. Doğal logaritmalarda taban e, taban-2 logaritmalarında 2'dir; ikisi de aynı perplexity değerini verir. PyTorch'un çapraz entropi kaybı, varsayılan olarak doğal logaritmalar kullanır ve token'lar üzerinden ortalama alır. Bu nedenle bir dil modelinin perplexity değeri, basitçe exp(loss) olur.
import math
# Probability the model assigned to each correct next token
token_probs = [0.50, 0.25, 0.80, 0.40]
# Cross-entropy is the average negative log-likelihood, in nats
cross_entropy = -sum(math.log(p) for p in token_probs) / len(token_probs)
print(f"Cross-entropy: {cross_entropy:.3f}, perplexity: {math.exp(cross_entropy):.2f}")
# A model that spreads probability evenly over 10 tokens has perplexity 10
uniform = -sum(math.log(0.1) for _ in token_probs) / len(token_probs)
print(f"Uniform perplexity: {math.exp(uniform):.2f}")Dört olasılığın çapraz entropisi 0.805 nat, şaşırtıcılığı ise 2.24'tür; yani model her adımda yaklaşık eşit olasılıklı iki belirteç arasından seçim yapıyormuş gibi davranır. Düzgün dağılım durumu, dallanma faktörü yorumunu doğrular: doğru her belirtece 0.1 olasılık verilmesi tam olarak 10 sonucunu verir.
Uzun belgelerde dikkatli olmak gerekir. Sabit bir bağlam penceresine sahip model metni parçalara ayırarak puanlar. Örtüşmeyen bir parçanın başındaki token'lar neredeyse hiç bağlam görmez; bu da perplexity değerini yükseltir. Kayar pencere değerlendirmesi, her token'ın modelin izin verdiği kadar önceki bağlamı görmesini sağlamak için parçaları üst üste bindirir; bunun bedeli daha fazla hesaplamadır.
Modelleri Adil Biçimde Karşılaştırma#
Şaşırtıcılık, yalnızca aynı metin ve aynı belirteçleştirme kullanılarak değerlendirilen modeller arasında karşılaştırılabilir. Söz varlığı daha geniş bir model, metni tahmin edilmesi daha zor ve sayıca daha az belirtece böler; bu nedenle belirteç başına şaşırtıcılığı, daha küçük belirteçler kullanan bir modelinkiyle doğrudan karşılaştırılamaz. Toplam log-olabilirliği bayt veya karakter sayısına göre normalleştirip bayt başına bit ya da karakter başına bit olarak raporlamak bu bağımlılığı ortadan kaldırır.
Test verileri, eğitim verilerinde de bulunmamalıdır. Bir metni daha önce görmüş model, o metne olağandışı derecede yüksek olasılık atar. Bu tür veri sızıntısı, perplexity değerini gerçek performanstan daha iyi gösterir. Aynı etki, perplexity değeri şüpheli ölçüde düşük olan metinleri eğitim verisi olma ihtimali yüksek diye işaretleyen üyelik çıkarımı saldırılarının temelini oluşturur.
Perplexity, sabit bir metinde sıradaki token'ı tahmin etmeyi puanlar. Sohbet modelleri, isteklere uymak ve insan tercihlerini yansıtmak için talimat ince ayarından ve insan geri bildiriminden pekiştirmeli öğrenmeden (RLHF) geçer. Bu nedenle görev kıyaslamaları ve insan tercih puanlarıyla karşılaştırılırlar.
Model Karşılaştırmasının Ötesindeki Kullanım Alanları#
Önemli bir kullanım alanı veri düzenlemedir. Facebook AI araştırmacılarının 2019'da yayımladığı CCNet işlem hattı, Wikipedia üzerinde eğitilmiş bir dil modeliyle Common Crawl sayfalarını puanladı ve perplexity değerlerine göre sayfaları üst, orta ve alt üçte birlik dilimlere ayırdı. Düşük perplexity değerine sahip üst dilim en kaliteli metin olarak değerlendirildi. Birçok ön eğitim işlem hattı web verilerini benzer biçimde filtreler; bu, web ölçeğinde bir veri temizleme adımıdır. GPTZero gibi AI metni algılayıcıları da perplexity puanlar; çünkü bir dil modelinden örneklenen metin, insan yazısına kıyasla daha öngörülebilirdir.
Formül, çapraz entropiyle eğitilmiş her model için geçerlidir. Ultralytics YOLO26 sınıflandırma modelleri, ortalama çapraz entropi kaybıyla eğitilir; bu nedenle exp(doğrulama kaybı), gerçek sınıf etiketleri üzerindeki şaşırtıcılıktır. 0.35 doğrulama kaybı yaklaşık 1.42 şaşırtıcılığa karşılık gelir; yani ortalama bir görüntüde model, güvenini yaklaşık 1.4 sınıf arasında tereddüt ediyormuş gibi dağıtır.










