AI modelinin güven skoru: 0,9 ne demek? basal mini ile kalibrasyon
0,9 güven skoru, modelin her zaman doğru olduğu anlamına gelmez. Kalibrasyonu, ECE’yi ve otomasyon eşiğini gerçek sonuçlarla inceleyin.
👁 117 okunma
0,9 güven skoru bir vaat gibi görünür: Modelin on yanıttan dokuzunda doğru olması beklenir. Ancak bu sayı tek başına hiçbir şeyi kanıtlamaz. Skoru, uygulamanızda karşılaşılacak türden verilerdeki doğru yanıtlarla karşılaştırmanız gerekir. Aşağıda kalibrasyonun ne olduğunu açıklıyor, üç modelin kaydedilmiş sonuçları üzerinden hesaplamaları gösteriyor ve basit bir Python betiği paylaşıyorum. En önemli nokta şu: Güven eşiği ile kabul edilebilir hata oranı aynı şey değildir.
Kısaca (19.10.2026)
- Kalibrasyon, modelin açıkladığı güven düzeyiyle doğru yanıt verme sıklığının ne kadar örtüştüğünü ölçer.
- Kaydedilmiş testte basal mini, güven skoru en az 0,9 olan yanıtların 40’ında 35 kez doğru çıktı.
- Veri kümesinde yalnızca 50 başvuru var. Bu sonuç bir örnektir, otomasyon eşiği için sertifika değildir.
- Eşiği verilerin bir bölümünde belirleyin, ardından daha önce ayırdığınız bağımsız bir örneklemde kontrol edin.
0,9 güven skoru gerçekte ne anlama gelir?
Kalibrasyon, birden fazla tahminin özelliğidir. Güven skoru 0,9 civarında olan yanıtları bir araya getirdiğinizde, iyi kalibre edilmiş bir modelin bunların yaklaşık %90’ında doğru olması beklenir. Bu, tek bir yanıtın doğrulandığı anlamına gelmez. Modelin doğruluk oranı düşük olsa bile kalibrasyonu iyi olabilir: Sık sık hata yaptığını dürüstçe belli edebilir.
Guo ve çalışma arkadaşları, 2017 tarihli sinir ağlarının kalibrasyonuyla ilgili çalışmalarında bu farkı ele alıyor. Doğruluk oranının artması, olasılıkların güvenilir hâle gelmesi için tek başına yeterli değildir. Bir uygulama için hem doğru yanıtın seçilmesi hem de güven skorunun kontrol gerektiren durumları belirlemeye yardımcı olması önemlidir.
Chatbotlar bu sayıyı neden genellikle göstermez?
Karar modellerinde yanıtlar sınırlı ve belirli seçeneklerden oluşur. Model seçenekler için bir olasılık dağılımı döndürebilir; seçilen yanıtın güven skoru da genellikle o yanıtın olasılığıdır. Böylece yanıt anahtarıyla karşılaştırılabilecek somut bir sonuç elde edilir.
Dil modelleri de olasılıklarla çalışır. Ancak bazı arayüzlerde sunulan logprobs, tüm cümlenin doğru olup olmadığını değil, belirteçlerin olasılıklarını açıklar. Structured output, örneğin kategori adını içeren bir JSON gibi yanıt biçimini belirler. Biçimin kendisi, güven skorunun kalibre edildiğini göstermez. Chatbotun yanıtına confidence alanı eklemesi de doğrulama gerektirir. Dolayısıyla chatbotların güven skoru veremeyeceği doğru değildir; önemli olan bu skorun ne anlama geldiği ve nasıl ölçüldüğüdür.
Gerçek sonuçlarla kalibrasyon grafiği
19.10.2026 tarihinde üç sonuç dosyasındaki kat alanını gold_kat ile karşılaştırdım ve ortalama conf değerini hesapladım. Basal-omni-1.0-mini Q8_0, 19.10 tarihinde yerel olarak; Jev 1.13 ve Perplexity Decider v1.1 27B ise 13.10 tarihinde API üzerinden test edildi. Burada her model, zor örnekler elenmeden 50 başvurunun tamamında değerlendirildi; araç seçimine ilişkin ayrı görevler hesaba katılmadı. Bu değerlendirme, başvuru belirsiz olsa bile kaydedilmiş yanıt anahtarını temel alıyor.
| Model | Güven aralığı | Ortalama güven | Doğruluk |
|---|---|---|---|
| basal mini | 0,5-0,7 | %60,9 | 2/2 = %100 |
| basal mini | 0,7-0,9 | %83,3 | 5/8 = %62,5 |
| basal mini | 0,9-1 | %97,7 | 35/40 = %87,5 |
| Jev 1.13 | 0,5-0,7 | %61,5 | 0/2 = %0 |
| Jev 1.13 | 0,7-0,9 | %79,2 | 4/9 = %44,4 |
| Jev 1.13 | 0,9-1 | %99,4 | 37/39 = %94,9 |
| Decider v1.1 | 0-0,5 | %47,3 | 1/1 = %100 |
| Decider v1.1 | 0,5-0,7 | %62,9 | 2/3 = %66,7 |
| Decider v1.1 | 0,7-0,9 | %81,5 | 2/5 = %40 |
| Decider v1.1 | 0,9-1 | %99,0 | 39/41 = %95,1 |
Aralıklarda alt sınır dâhil, üst sınır hariçtir; son aralıkta 1 de yer alır. Boş aralıklar gösterilmemiştir. Toplam doğruluk oranları sırasıyla 42/50, 41/50 ve 44/50’dir. Bu paydaları, basal’ın yerel testinde açıklanan 47 başvuruluk sonuçlarla karıştırmayın.
Kalibrasyon grafiğinde yatay eksen grubun ortalama güvenini, dikey eksen ise doğruluk oranını gösterir. İdeal noktalar çapraz çizgi üzerinde yer alır. Çizginin altındaki bir nokta aşırı güveni, üstündeki bir nokta ise yetersiz güveni gösterir. basal mini’nin en yüksek güven aralığındaki noktasının koordinatları %97,7 ve %87,5’tir: çapraz çizgiden belirgin biçimde uzaktadır.
ECE: Yanıt sayısına göre ağırlıklandırılmış sapma
ECE, gruplardaki doğruluk ile güven arasındaki mutlak farkların grup büyüklüklerine göre ağırlıklandırılmış ortalamasıdır. basal’ın 40 yanıt içeren grubunun ağırlığı 40/50’dir. Bu gruptaki fark yaklaşık 10,17 yüzde puanıdır; dolayısıyla ECE’ye yaklaşık 8,14 puan katkıda bulunur. Diğer gruplar da eklendiğinde sonuç 0,1302, yani 13,02 yüzde puanı olur.
Aynı aralık sınırlarıyla Jev’in ECE değeri 0,1224, Decider’ınki ise 0,0861’dir. Daha düşük sonuç, ölçülen sapmanın daha az olduğunu gösterir; ancak başka verilerde daha iyi performansın kanıtı değildir. ECE, grupların nasıl bölündüğüne bağlıdır ve tekil gözlemler istikrarsız olabilir. Ayrıca bu değer, hata oranı ya da başka bir benchmark’taki Calibration sonucu değildir.
Otomasyon eşiğini ayrıca test edin
Önce otomatik olarak kabul edilen kararlarda izin verilebilir hata oranını belirleyin; örneğin %5 ya da %1. Sonra eşiği ayar verilerinde seçin ve bağımsız bir veri kümesinde değerlendirmeden önce sabitleyin. İki ölçümü takip edin: kabul edilen kararlar arasındaki hata oranı ve otomatik işlenen tüm vakaların payı olan kapsama oranı.
0,9 eşiğinde basal, 50 başvurunun 40’ını kabul ediyor; ancak bunların 5’inde hata yapıyor. Bu, 5/40, yani %12,5 hata oranı demek. Decider ise 50 başvurunun 41’ini kabul ediyor ve 41’de 2 hata yapıyor: yaklaşık %4,88. İkinci sonuç, küçük bir örneklemde gözlemlenen değer olarak %5 eşiğini karşılıyor. Hedeflenen riskin istatistiksel olarak doğrulandığı anlamına gelmiyor.
- Aynı örneğin farklı biçimlerinin ayar ve test verilerine dağılmaması için birbiriyle ilişkili vakaların tamamını ayrı tutun.
- Önemli kategorileri ayrı ayrı kontrol edin. Genel olarak iyi bir sonuç, nadir bir sınıftaki düşük performansı gizleyebilir.
- Modeli, talimatları, nicemlemeyi ya da veri türünü değiştirdiğinizde ölçümü tekrarlayın.
Kaç örnek yeterli olur?
50 örnek bir sorunu fark etmeye yardımcı olabilir, ancak %1 hata oranını doğrulamaya yetmez. Önceden belirlenmiş bir eşik, bağımsız gözlemler ve sıfır hata varsayımıyla, %95 güven düzeyindeki tek taraflı üst hata sınırı 1 - 0.05**(1/n) formülüyle hesaplanır. %5 sınırına ulaşmak için en az 59, %1 içinse 299 kabul edilmiş karar gerekir. Burada kastedilen toplanan tüm örnekler değil, kabul edilen kararlardır; hatalar örneklem ihtiyacını artırır.
basal belgeleri de ayarlama ve değerlendirme aşamalarını birbirinden ayırıyor ve istatistiksel belirsizliği hesaba katıyor. Belirli bir aracın nasıl kullanılacağını basal-calibrate kılavuzunda bulabilirsiniz. Buradaki ilke tüm modeller için geçerlidir: Sonrasında performansını kanıtlamak için kullanacağınız yanıtlarla aynı verilerde eşik belirlemeyin.
Python ile dosyadaki kalibrasyonu hesaplayın
Aşağıdaki kodu kalibrasyon_hesapla.py adıyla kaydedin. Yalnızca standart kütüphaneyi ve açıklanan sonuç dosyalarındaki biçimi kullanır. python kalibrasyon_hesapla.py sonuclar.json 0.9 komutu grupları, ECE’yi, kapsama oranını ve gözlemlenen hata oranını gösterir. Betik kalibrasyon yapmaz ve bir eşiği sertifikalandırmaz.
import json
import math
import sys
with open(sys.argv[1], encoding="utf-8") as f:
rows = json.load(f)["wyniki"]
rows = [r for r in rows if r.get("typ") == "zgl"]
if not rows:
raise ValueError("Başvuru bulunamadı")
for r in rows:
c = r["conf"]
if not math.isfinite(c) or not 0 <= c <= 1:
raise ValueError("Güven skoru aralık dışında")
r["ok"] = r["kat"] == r["gold_kat"]
edges = [0, 0.5, 0.7, 0.9, 1]
ece = 0
for lo, hi in zip(edges, edges[1:]):
group = [r for r in rows
if lo <= r["conf"] < hi
or hi == 1 and r["conf"] == 1]
n = len(group)
if not n:
continue
conf = sum(r["conf"] for r in group) / n
acc = sum(r["ok"] for r in group) / n
ece += n / len(rows) * abs(conf - acc)
print(lo, hi, n, round(conf, 4), round(acc, 4))
print("ECE:", round(ece, 4))
threshold = float(sys.argv[2])
if not 0 <= threshold <= 1:
raise ValueError("Eşik aralık dışında")
accepted = [r for r in rows
if r["conf"] >= threshold]
print("Kapsama:", len(accepted) / len(rows))
if accepted:
errors = sum(not r["ok"] for r in accepted)
print("Hata:", errors / len(accepted))
else:
print("Hata: kabul edilen karar yok")
Önce her gruptaki örnek sayılarına bakın. İki yanıt üzerinden elde edilen %100 sonucu çok az şey anlatır. Modelin verdiği sayının karar almak için gerçekten uygun olup olmadığını ancak yeni ve bağımsız örnekler gösterebilir.
Hesaplamaların kaynağı: Yerel wyniki_basal_mini_q8.json, wyniki_jev113.json ve wyniki_decider11.json dosyaları; yeniden hesaplama tarihi 19.10.2026.


