블랙박스 LLM 응답의 정답 확률을 단일 패스로 추정하는 외부 캘리브레이터 Pinocchio
Pinocchio: Fast Uncertainty Estimates for Black-Box Language Models
무엇인가
고위험 의사결정에 LLM을 쓰는 실무자는 정확한 답변만이 아니라 그 답변이 틀렸을 가능성을 함께 알아야 한다. 그런데 기존 불확실성 추정법은 모델이 출력하는 로그확률에 접근하거나 파인튜닝 권한을 요구한다. GPT 같은 폐쇄형 API 모델은 로그확률을 반환하지 않고 파인튜닝도 허용하지 않는 경우가 많다. 블랙박스 대안으로 제시된 verbalized confidence는 캘리브레이션이 나쁘고, self-evaluation은 모델 자신의 맹점을 그대로 물려받으며, semantic entropy는 추론 비용을 5~10배로 늘린다. 논문은 이 지점, 즉 블랙박스 API 모델에 대해 빠르고 정확한 불확실성 추정이 아직 열린 문제라고 규정한다.
어떻게 동작하나
Pinocchio는 대상 모델 자체에서 불확실성을 뽑아내는 대신, 별도의 작은 캘리브레이터 f(Q, A, M)를 학습시켜 응답의 정답 여부를 확률로 출력한다. Q는 질문과 딸린 이미지, A는 대상 모델이 낸 후보 응답(API가 노출하는 chain-of-thought나 추론 토큰 포함), M은 선택적인 모델 식별 태그다. 학습 데이터는 (Q, A, M, y) 쌍으로 구성되고 y는 0 또는 1이며, 모델은 P(y=1 | Q, A, M)을 예측한다. 구현은 Qwen3-VL-8B-Instruct를 LoRA(rank 32, alpha 64)로 모든 linear layer에 파인튜닝하는 방식이다. 텍스트 전용 벤치마크에는 시각 신호가 없는 균일 회색 이미지를 채워 넣어 텍스트와 비전-언어 입력 형식을 하나로 유지한다. 입력은 질문, 응답, 선택적 벤치마크 및 모델 식별 메타데이터를 담은 채팅 형식 프롬프트이고, 모델은 마지막 토큰 하나만 i(오답) 또는 ii(정답)로 예측한다. 정답 확률은 두 로짓에 대한 softmax, 즉 P(correct) = exp(z_ii) / (exp(z_i) + exp(z_ii))로 계산하며, 손실은 이 마지막 토큰에만 cross-entropy를 건다.
무엇과 다른가
학습의 핵심 난제는 강한 모델이 인기 벤치마크를 포화시켜 오류 예시가 희귀하다는 점이다. 저자들은 20~80% 정확도 구간의 벤치마크를 우선 선택하고, 모델이 상대적으로 약한 비전-언어 데이터를 포함하며, 여러 대상 모델의 응답을 풀링해 이 부족을 메운다. 학습 혼합에는 Claude Fable 5, Claude Opus 5, GPT-5.6, Kimi 3과 저성능 소스인 GPT-5-mini, GPT-5.2, Qwen3.5-397B의 응답이 20개 벤치마크에 걸쳐 들어간다. 도메인은 7개, 형식은 객관식·개방형·이진형, 모달리티는 텍스트 전용과 비전-언어를 아우른다. 거부 응답과 빈 응답도 오답으로 라벨링해 남긴다. 채점은 15개 벤치마크에서 exact 또는 fuzzy matching, 루브릭 채점이 필요한 5개에서 GPT-5-mini judge를 쓴다. 제로샷 전이 실험에 쓰인 13개 모델은 학습 혼합에 전혀 등장하지 않는다.
어떻게 쓰나
동일 모델의 held-out 응답에서 0.862 AUROC를 기록했고, 1,953개 응답 매칭 테스트셋에서는 0.863을 냈다. 같은 조건에서 가장 강한 단일 패스 블랙박스 베이스라인은 0.649였다. 학습에 없던 13개 대상 모델, 8개 기관으로의 제로샷 전이 평균 AUROC는 0.814로, 학습에 쓴 모델에서의 0.862 대비 완만한 하락에 그친다. 0.8B 체크포인트가 가장 큰 모델 AUROC의 99%를 유지한다. 벤치마크와 모델 식별 메타데이터를 빼면 AUROC가 0.863에서 0.813으로 떨어진다. 각 5개 벤치마크를 학습에서 제외하는 4개 fold에서 제외 벤치마크 AUROC 평균 0.875, 포함 벤치마크 0.877로 미학습 벤치마크 일반화도 확인된다. 개방형 대상에서 직접 돌린 semantic entropy, self-consistency, Lin 등의 그래프 이론 측도, SPUQ, Su 등의 conformal 추정기는 어려운 추론 스위트에서 chance 근처에 머물렀고, 샘플 수를 늘려도 격차가 좁혀지지 않았다.
전제와 한계
저자들은 캘리브레이터가 무엇을 읽는지도 분리해 검증한다. 학습에 쓴 모델들이 서로 불일치한 397개 테스트 질문(같은 질문에 정답과 오답이 섞여 있어 질문 난이도가 통제됨)에서도 Pinocchio는 정답을 오답 위로 랭킹했다. 질문을 제거해도 신호 대부분이 남아 응답 내용 자체를 읽는다는 점이 확인되지만, 질문도 기여하므로 두 단서를 함께 쓴다. 표면적 hedge 단어에 반응하는지도 확인했는데, 모든 응답에서 hedge를 제거하면 AUROC가 +0.0015, 주입하면 -0.0185만큼만 움직인다. 스케일링에서는 학습 데이터 양이 캘리브레이터 크기보다 훨씬 큰 영향을 주고, 성능은 데이터가 늘수록 로그 선형으로 개선된다. 비전-언어 데이터는 어려운 텍스트 예시가 부족할 때 텍스트 캘리브레이션을 끌어올리는 학습 신호 보강으로 작동한다.
실무 통합은 가볍다. pip install pinocchio-uq로 설치한 뒤 Pinocchio 객체를 한 번 로드하고, 기존 API 호출의 응답과 메시지를 judge.score(response, messages=messages)에 넘기면 정답 확률이 나온다. 대상 모델의 로짓, 가중치, 내부 상태에 접근할 필요가 없고 단일 forward pass면 충분하므로, 샘플링 기반 방법처럼 API 비용을 몇 배로 늘리지 않는다. 새 API나 새 데이터 분포에 적용할 때는 릴리스된 체크포인트를 배포 대상의 라벨링된 샘플로 먼저 평가해야 한다. 응답 랭킹은 전이되지만 확률이 밀려 있으면 라벨링된 캘리브레이션 셋에 Platt 또는 isotonic 회귀를 적합하고, 랭킹 성능까지 떨어지면 파인튜닝이 적절하다고 저자들은 권한다.
한계도 분명하다. 정답 여부를 아는 라벨링된 학습 데이터가 필요하므로 자동 채점이 가능한 과제로 적용 범위가 제한된다. 모델 패밀리를 넘는 전이는 같은 패밀리 내 전이보다 성능이 떨어진다. 벤치마크와 모델 식별 메타데이터가 AUROC를 0.813에서 0.863으로 끌어올린다는 사실은 그 메타데이터를 모르는 환경에서 성능이 제한될 수 있음을 뜻한다. 학습 데이터는 영어 전용이다. 가장 어려운 벤치마크에서 성능이 가장 약한데, 이 구간에서는 정답 응답도 hedge하고 조건을 다는 경우가 많고 그 표지가 오답의 표지와 겹치기 때문이다. 저자들은 새 데이터 분포에서 Pinocchio가 miscalibrated일 수 있다는 경고를 명시적으로 달아 둔다.