C.W.K.
Stream
Lesson 02 of 06 · published

Consistency 와 Calibration

~18 min · safety, consistency, calibration

Level 0Guesser
0 XP0/55 lessons0/10 achievements
0/150 XP to next level150 XP to go0% complete

Correctness 뒤에 사는 두 reliability axis

"Model 이 대부분 시간 correct" 가 두 distinct 문제 숨길 수 있음:

  • Consistency — 질문 rephrase 할 때 같은 답 줘?
  • Calibration — 표현된 confidence 가 실제 accuracy 와 match?

둘 다 중요. Inconsistent model 이 user trust erode ("같은 거 두 번 물었는데 다른 답 둘 받음"). Uncalibrated model 이 confident 하게 lie — "I'm 95% sure" 하면서 60% 만 right.

Consistency 측정

같은 질문의 N rephrasing 가져. 다 돌려. 답의 의미 similarity (BERTScore 또는 embedding cosine) score. 평균이 그 case 의 consistency score. Case 에 걸친 평균이 system 의 consistency metric.

Calibration 측정

Model 이 confidence 진술하게 ("I'm X% sure"). Stated confidence 로 prediction bin. 각 bin 에 대해 actual accuracy 계산. 잘 calibrated 된 model 은 각 bin 에 actual accuracy ≈ stated confidence. Deviation plot — 그게 calibration curve.

원칙: Confidently wrong model 이 tentatively wrong model 보다 더 위험. Calibration 은 vanity metric 이 아니라 safety property.

왜 frontier model 이 여전히 poorly calibrated

RLHF training 이 over-confidence 경향. Model 이 confident 답이 더 높은 인간 rating 받는 거 배워서 warranted 보다 더 confident 가 됨. 2025-2026 generation 이 약간 더 나아졌지만 여전히 "I'm sure" tail 에서 보통 over-confident.

Code

Rephrasing 통한 consistency test·python
from sentence_transformers import SentenceTransformer
import numpy as np

emb = SentenceTransformer("all-mpnet-base-v2")

def consistency(question_variants, model):
    answers = [model.complete(q) for q in question_variants]
    vecs = emb.encode(answers)
    # Pairwise cosine similarity, averaged
    n = len(vecs)
    sims = []
    for i in range(n):
        for j in range(i + 1, n):
            sims.append(np.dot(vecs[i], vecs[j]) / (np.linalg.norm(vecs[i]) * np.linalg.norm(vecs[j])))
    return float(np.mean(sims))

variants = [
    "What is the capital of France?",
    "Which city is France's capital?",
    "France's capital city is what?",
    "Name the capital of France.",
]
print(consistency(variants, my_model))  # ~0.95 for a calibrated factual QA
Calibration curve·python
from collections import defaultdict

def calibration_curve(predictions, n_bins=10):
    """predictions: list of (stated_confidence, was_correct)."""
    bins = defaultdict(lambda: [0, 0])  # (correct, total)
    for conf, correct in predictions:
        bin_idx = min(int(conf * n_bins), n_bins - 1)
        bins[bin_idx][0] += int(correct)
        bins[bin_idx][1] += 1
    curve = []
    for i in range(n_bins):
        c, t = bins[i]
        if t > 0:
            curve.append((i / n_bins, c / t, t))
    return curve

# Output: [(stated_conf_bin, actual_accuracy, n_samples), ...]
# A calibrated model has actual_accuracy ≈ bin midpoint.

External links

Exercise

가장 factual 한 기능에 20 질문의 rephrasing 5개 작성. Consistency 측정. 그 다음 각 답에 대해 model 한테 confidence 진술하게; calibration 측정. 둘 다 user-trust signal — 배울 값이 보통 가정한 것보다 낮아.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.