0Pricing
AI Engineering Academy · Ders

Hakem Modellerini İnsanlara Göre Kalibre Etme

İnsanların tercih yargılarından oluşan bir gerçeğe dayalı veri kümesi toplayın, değerlendiricilerle insanlar arasındaki uyumu Cohen's Kappa ile ölçün ve sistematik yanlılıkları azaltmak için değerlendiriciyi istemlerle ayarlayın.

Hakem Modellerini İnsanlara Göre Kalibre Etme, CoddyKit'te ücretsiz bir AI Engineering Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Engineering Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Engineering Academy kursu toplamda 4 dersten oluşur.

Kalibrasyon Neden Vazgeçilmezdir

Kalibre edilmemiş bir LLM değerlendiricisi, çıktılara insanlardan sistematik olarak daha yüksek veya daha düşük puan verebilir, belirli bir yazım tarzını kayırabilir ya da ölçüt tablonuzun öngörmediği sınır durumlarında başarısız olabilir. Dağıtım kararları vermek için böyle bir değerlendirici kullanırsanız yanlı bir araca güvenmiş olursunuz. Kalibrasyon, değerlendiriciyi insanlara ait gerçek sonuçlarla doğrular ve üretimde ona güvenmeden önce puanlarına ne ölçüde güvenebileceğinizi nicel olarak belirler.

Kalibrasyon Veri Kümesi Oluşturma

İnsanlar tarafından puanlanmış 100-500 örnek yanıttan oluşan bir kalibrasyon kümesi oluşturun. Çeşitliliği hedefleyin: yüksek kaliteli (5 puan), orta kaliteli (3 puan) ve açıkça kötü (1 puan) yanıtları dahil edin. Değerlendiriciler arası uyumu ölçmek ve ortalama alarak ya da tepe değeri kullanarak uzlaşılan gerçek puanı hesaplamak için her örneği 3-5 bağımsız insan puanlayıcıya puanlatın.

# Calibration dataset structure:
# [
#   {
#     'question': 'What causes inflation?',
#     'response': '...',
#     'human_scores': [4, 4, 3, 5, 4],  # 5 raters
#     'human_consensus': 4,              # mean or mode
#     'rater_ids': ['r1', 'r2', 'r3', 'r4', 'r5']
#   },
#   ...
# ]

# Typical calibration set composition:
# 30% excellent responses (score 4-5)
# 40% adequate responses (score 2-4)
# 30% poor responses (score 1-2)
# Include adversarial / edge cases

Puanlayıcılar Arası Uyumu Ölçme

İnsan puanlarını gerçek doğru olarak kabul etmeden önce insan puanlayıcılarınızın birbiriyle uyuştuğunu doğrulayın. Cohen's Kappa, iki puanlayıcı arasındaki şansın ötesindeki uyumu ölçer: 0,6'nın üzeri kabul edilebilir, 0,8'in üzeri mükemmeldir. 5 puanlı ölçeklerde ağırlıklı kappa hesaplayın (doğrusal ağırlıklar). Puanlayıcılar arası düşük uyum, görevin belirsiz tanımlandığı anlamına gelir; puanları bir değerlendiriciyi kalibre etmek için kullanmadan önce puanlayıcı yönergelerini iyileştirin.

from sklearn.metrics import cohen_kappa_score
import numpy as np

def measure_inter_rater_agreement(rater1_scores: list, rater2_scores: list) -> dict:
    kappa = cohen_kappa_score(rater1_scores, rater2_scores, weights='linear')
    exact_agreement = sum(a == b for a, b in zip(rater1_scores, rater2_scores)) / len(rater1_scores)
    adjacent_agreement = sum(abs(a - b) <= 1 for a, b in zip(rater1_scores, rater2_scores)) / len(rater1_scores)
    return {
        'weighted_kappa': round(kappa, 3),
        'exact_agreement': round(exact_agreement, 3),
        'adjacent_agreement': round(adjacent_agreement, 3),
        'acceptable': kappa >= 0.6
    }

Kalibrasyon Verileri Üzerinde Değerlendiriciyi Çalıştırma

LLM değerlendiricinizi, üretimde kullanmayı planladığınız istemin aynısını kullanarak kalibrasyon kümesindeki her örnek üzerinde çalıştırın. Her örnek için değerlendiricinin puanını insan uzlaşı puanıyla birlikte toplayın. Öğeleri tek tek karşılaştırabilmek için bu iki listeyi hizalı tutun. Bu karşılaştırma, sistematik yanlılıkları ve puan aralığı farklarını ortaya çıkarır.

async def run_judge_on_calibration(calibration_set: list) -> list:
    pairs = []
    for item in calibration_set:
        judge_result = await async_judge(item['question'], item['response'])
        pairs.append({
            'question': item['question'],
            'human': item['human_consensus'],
            'judge': judge_result.correctness,
            'judge_rationale': judge_result.rationale
        })
    return pairs

Değerlendirici-İnsan Korelasyonunu Hesaplama

Değerlendirici puanları ile insan uzlaşı puanları arasındaki Pearson korelasyonunu hesaplayın. Bu, doğrusal uyumu ölçer: 1,0 korelasyon, değerlendiricinin insan sıralamalarını kusursuz biçimde izlediği anlamına gelir. Ortalama puan farkını anlamak için ortalama mutlak hatayı (MAE) da hesaplayın. 5 puanlı bir ölçekte 0,7'nin üzerindeki korelasyon ve 0,8 puanın altındaki MAE, genellikle üretimde kullanılabilecek kadar güvenilir bir değerlendiriciye işaret eder.

from scipy.stats import pearsonr, spearmanr
import numpy as np

def calibration_metrics(pairs: list) -> dict:
    humans = [p['human'] for p in pairs]
    judges = [p['judge'] for p in pairs]
    pearson_r, p_val = pearsonr(humans, judges)
    spearman_r, _ = spearmanr(humans, judges)
    mae = np.mean([abs(h - j) for h, j in zip(humans, judges)])
    return {
        'pearson_r': round(pearson_r, 3),
        'spearman_r': round(spearman_r, 3),
        'p_value': round(p_val, 5),
        'mae': round(mae, 3),
        'reliable': pearson_r >= 0.7 and mae <= 0.8
    }

Sistematik Yanlılıkları Belirleme

Korelasyonun ötesinde sistematik yanlılıkları araştırın: değerlendirici sürekli olarak fazla mı, yoksa az mı puan veriyor? Değerlendirici puanlarını insan puanlarına karşı çizin ve başlangıç noktasından geçmeyen bir regresyon doğrusu olup olmadığına bakın. Değerlendirici, insanların ortalama 3 verdiği durumlarda 4 veriyorsa puanları şişirme yanlılığı vardır. Bunu düzeltmek için ya ölçüt tablosunu ayarlayın ya da ham puanlara doğrusal bir kalibrasyon dönüşümü uygulayın.

import numpy as np
from scipy import stats

def detect_score_bias(pairs: list) -> dict:
    humans = np.array([p['human'] for p in pairs])
    judges = np.array([p['judge'] for p in pairs])
    slope, intercept, r, p, se = stats.linregress(judges, humans)
    bias = np.mean(judges - humans)  # positive = judge over-scores
    return {
        'mean_bias': round(bias, 3),  # > 0 means judge inflates
        'calibration_slope': round(slope, 3),
        'calibration_intercept': round(intercept, 3),
        # Corrected score = slope * judge_score + intercept
        'correction_formula': f'human_score ≈ {slope:.2f} * judge + {intercept:.2f}'
    }

Kalibrasyon Düzeltmesini Uygulama

Kalibrasyon regresyonunu (eğim ve kesişim) elde ettikten sonra ham değerlendirici puanlarını insan yargılarıyla daha iyi eşleşen kalibre edilmiş puanlara dönüştürmek için uygulayın. Bu doğrusal düzeltme basit ve etkilidir. Regresyondan kaynaklanan aralık dışı değerleri önlemek için düzeltilmiş puanı geçerli aralıkla (1-5) sınırlayın. Kalibrasyon verileri arttıkça geriye dönük karşılaştırma yapabilmek için hem ham hem de düzeltilmiş puanları saklayın.

def calibrate_score(raw_judge_score: float, slope: float, intercept: float,
                    min_score: int = 1, max_score: int = 5) -> float:
    corrected = slope * raw_judge_score + intercept
    return max(min_score, min(max_score, round(corrected, 1)))

# Example: if judge inflates by 0.5 points on average
# slope=0.85, intercept=0.3
# raw_score=4 -> corrected = 0.85*4 + 0.3 = 3.7

Sistematik Hata Örüntülerini Bulma

Örüntü oluşturan başarısızlıkları bulmak için kalibrasyon hatalarını soru türüne, yanıt uzunluğuna ve konu alanına göre gruplayın. Değerlendirici teknik kodlama sorularında güvenilmez, olgusal sorularda ise doğru olabilir. Çok uzun yanıtları fazla, kısa ve öz yanıtları ise düşük puanlayabilir. Bu örüntüler, kalibrasyonun en zayıf olduğu alanlar için hedefli ölçüt tablosu iyileştirmelerine veya konuya özel değerlendirici istemlerine yön verir.

from collections import defaultdict

def error_by_category(pairs: list) -> dict:
    by_cat = defaultdict(list)
    for p in pairs:
        error = abs(p['judge'] - p['human'])
        by_cat[p.get('category', 'unknown')].append(error)
    return {
        cat: {
            'mean_error': round(sum(errs)/len(errs), 2),
            'max_error': max(errs),
            'n': len(errs)
        }
        for cat, errs in by_cat.items()
    }

Veriler Arttıkça Yeniden Kalibrasyon

Kalibrasyon tek seferlik bir çalışma değildir. Daha fazla insan puanı topladıkça ve model güncellemeleri değerlendiricinin davranışını değiştirdikçe kalibrasyonu üç ayda bir yeniden çalıştırın. Kalibrasyon ölçümlerini zaman içinde izleyin; Pearson korelasyonu 0,7'nin altına düşerse bir model güncellemesinin değerlendiricinin puan dağılımını değiştirip değiştirmediğini araştırın. Kalibrasyon işlem hattını otomatikleştirin; böylece yeniden çalıştırmak, güncellenmiş bir düzeltme katsayısı üreten tek bir komut olur.

def run_calibration_pipeline(calibration_data: list) -> dict:
    # 1. Measure human inter-rater agreement
    ira = measure_inter_rater_agreement(
        [d['rater_1'] for d in calibration_data],
        [d['rater_2'] for d in calibration_data]
    )
    # 2. Run judge on all items
    pairs = run_judge_on_calibration(calibration_data)
    # 3. Compute correlation metrics
    metrics = calibration_metrics(pairs)
    # 4. Detect bias
    bias = detect_score_bias(pairs)
    return {'ira': ira, 'metrics': metrics, 'bias': bias}

Değerlendirici Yapılandırmanızı Belgeleme

Değerlendirici modelini, istem sürümünü, kalibrasyon veri kümesinin boyutunu ve tarihini, kalibrasyon ölçümlerini ve tüm düzeltme katsayılarını sürüm denetimine alınmış bir değerlendirici yapılandırma dosyasında belgeleyin. Bu, gelecekteki ekip üyelerinin puanların neden böyle göründüğünü anlamasını ve ölçüm değişikliklerinin değerlendiricinin yeniden yapılandırılmasından mı yoksa gerçek kalite değişikliklerinden mi kaynaklandığını saptamanızı sağlayan bir denetim izi oluşturur.

# judge_config.yaml
# judge_model: gpt-4o-2025-01-01
# judge_prompt_version: v3.2
# calibration_date: 2026-05-15
# calibration_set_size: 312
# calibration_metrics:
#   pearson_r: 0.81
#   spearman_r: 0.79
#   mae: 0.54
# bias_correction:
#   slope: 0.88
#   intercept: 0.45
# next_recalibration: 2026-08-15

Boyuta Özel Değerlendirici İstemleri

Aynı anda birden çok boyutu puanlayan tek bir değerlendirici istemi çoğu zaman birbiriyle ilişkili puanlar üretir; değerlendirici, ilk izlenimine saplanarak açıklığa yüksek puan verdiği için doğruluğa da yüksek puan verir. Boyuta özel istemler, her ölçütü ayrı bir API çağrısında bağımsız olarak değerlendirir. Bu yöntem daha maliyetlidir ancak gerçekten bağımsız ölçümler olan daha güvenilir puanlar üretir. Puanların birbirinden bağımsız değişmesini beklediğiniz boyutlar için ayrı istemler kullanın.

async def multi_dimension_judge(question: str, answer: str) -> dict:
    # Run each dimension as a separate judge call
    correctness, helpfulness, clarity = await asyncio.gather(
        judge_single_dimension(question, answer, 'correctness'),
        judge_single_dimension(question, answer, 'helpfulness'),
        judge_single_dimension(question, answer, 'clarity')
    )
    return {
        'correctness': correctness,
        'helpfulness': helpfulness,
        'clarity': clarity,
        'composite': 0.5 * correctness + 0.3 * helpfulness + 0.2 * clarity
    }

Hızlı Kontrol

LLM değerlendirici modellerini insan puanlarına göre kalibre etmeyi anlayıp anlamadığınızı sınayın.

Ders Özeti

Bu derste şunları öğrendiniz: insan uzlaşı puanlarına sahip kalibrasyon veri kümeleri, değerlendirici güvenilirliğini ölçmek için gerçek doğruyu sağlar; Pearson korelasyonu ve MAE, değerlendiricinin insan yargılarını ne kadar iyi izlediğini nicel olarak belirler; doğrusal yanlılık düzeltmesi, sistematik fazla veya az puanlamayı düzeltir. Sırada, CI/CD ile bütünleşik sürekli bir değerlendirme işlem hattı oluşturacağız.

Sıkça Sorulan Sorular

“Hakem Modellerini İnsanlara Göre Kalibre Etme” dersi ücretsiz mi?

Evet — “Hakem Modellerini İnsanlara Göre Kalibre Etme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Engineering Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Engineering Academy kursu toplamda 4 dersten oluşur.

“Hakem Modellerini İnsanlara Göre Kalibre Etme” dersinde ne öğreneceğim?

İnsanların tercih yargılarından oluşan bir gerçeğe dayalı veri kümesi toplayın, değerlendiricilerle insanlar arasındaki uyumu Cohen's Kappa ile ölçün ve sistematik yanlılıkları azaltmak için değerlen… AI Engineering Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Engineering Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Engineering Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Hakem Modellerini İnsanlara Göre Kalibre Etme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Engineering Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Engineering Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. LLM-Hakem Deseni
  2. Noktasal ve İkili Değerlendirme
  3. Hakem Modellerini İnsanlara Göre Kalibre Etme
  4. Sürekli Değerlendirme Hattı Oluşturma
← AI Engineering Academy Sayfasına Dön