36차시. 평가 실습
8. 실습 ⑤ — 트레이드오프 확인
출처: 원본 PDF 36차시_평가실습.pdf 16쪽 · 쪽 그림 16쪽
34차시 과제에서 예측했던 것을 실제로 측정합니다.
📝 eval/ablation.py
import config, importlib
VARIANTS = [
{"name": "기준선", "TOP_K": 5, "MIN_SCORE": 0.39},
{"name": "k=10", "TOP_K": 10, "MIN_SCORE": 0.39},
{"name": "임계값 0.55", "TOP_K": 5, "MIN_SCORE": 0.55},
{"name": "검증 제거", "TOP_K": 5, "MIN_SCORE": 0.39,
"SKIP_VERIFY": True},
]
for v in VARIANTS:
for key, val in v.items():
if key != "name":
setattr(config, key, val)
importlib.reload(graph) # 설정 반영
rows = run_eval()
m = summarize(rows)
print(f"[{v['name']}] Correct {m['correctness']*100:.1f}% · "
f"Faith {m['faithfulness']:.3f} · "
f"Abstain {m['abstention']*100:.0f}%")실행 결과 예시 (코드를 읽고 만든 예상 화면입니다. 실제 실행 결과, 특히 모델의 답은 다를 수 있습니다)
✓ Q001 [easy ] 2.8s 환불은 며칠 이내인가요?
✓ Q002 [easy ] 2.5s 교환은 며칠 이내에 신청해야 하나요?
✓ Q011 [medium] 3.6s 반품하려면 언제까지?
✗ Q014 [hard ] 6.9s 환불과 교환 차이는?
...
========================================================
■ 전체 평가 (n=35)
Correctness : 88.6%
Faithfulness : 0.963
Abstention : 100.0% (부재 질문 8건)
평균 응답 : 3.4초
P95 응답 : 8.2초
[기준선] Correct 88.6% · Faith 0.963 · Abstain 100%
... (질문 35개 진행 줄과 전체 평가 요약 반복)
[k=10] Correct 91.4% · Faith 0.921 · Abstain 88%
... (질문 35개 진행 줄과 전체 평가 요약 반복)
[임계값 0.55] Correct 80.0% · Faith 0.985 · Abstain 100%
... (질문 35개 진행 줄과 전체 평가 요약 반복)
[검증 제거] Correct 85.7% · Faith 0.874 · Abstain 75%| 설정 | Correctness | Faithfulness | Abstention | 응답 |
|---|---|---|---|---|
| 기준선 | 88.6% | 0.963 | 100% | 3.4초 |
| k=10 | 91.4% | 0.921 | 88% | 4.1초 |
| 임계값 0.55 | 80.0% | 0.985 | 100% | 3.1초 |
| 검증 제거 | 85.7% | 0.874 | 75% | 1.9초 |
📊 예측이 맞았는지 확인해보세요
k=10
Correctness ↑ (복합 질문이 잡힘)
Faithfulness ↓ · Abstention ↓ (노이즈로 환각 증가)
→ 정확도와 신뢰도의 트레이드오프
임계값 0.55
Faithfulness 최고, Correctness 최저
→ 확실한 것만 답하니 정확하지만 많이 포기합니다
검증 제거
응답 44% 빨라짐, 대신 Abstention 100→75%
→ 환각이 부활했습니다 (26차시의 가치 증명)
어느 설정도 "전부 좋지" 않습니다.