신뢰도(Confidence)는 모델이 스스로 입증할 수 없는 유일한 신호입니다
요약
LLM을 활용한 이메일 분류 시스템에서 모델의 자체 신뢰도(confidence) 점수가 가진 구조적 한계를 분석합니다. 모델이 확신을 가지고 틀린 판단을 내릴 경우(confidently wrong) 발생하는 위험성과 이를 보완하기 위한 외부 입증자(corroborator)의 필요성을 다룹니다.
핵심 포인트
- 모델의 자체 신뢰도는 외부 근거가 없는 주관적 지표임
- 정교한 사칭 이메일은 높은 신뢰도와 함께 오판을 유도할 수 있음
- 신뢰도 점수만으로는 '확신에 찬 거짓말'을 걸러내기 어려움
- 안전한 시스템을 위해 모델 외부의 입증자(corroborator)가 필수적임
이 시리즈는 저렴한 모델을 자랑하려는 의도로 시작되었으나, 게시물보다 더 좋은 댓글들이 계속 달리고 있습니다. 세 명의 독자 — @nazar_boyko, @txdesk, @jugeni — 가 독립적으로 동일한 지점에 수렴했으며, @jugeni 님은 제가 더 개선할 수 없을 정도로 완벽하게 한 문장으로 정리해 주었습니다:
AUTO는 모델이 스스로 작성할 수 있는 신뢰도(confidence)가 아니라, 모델이 스스로 작성할 수 없는 입증자(corroborator)를 원한다.
이것이 무엇을 의미하는지, 그리고 왜 이것이 이 설계가 받은 가장 날카로운 비판인지 설명하겠습니다.
네 가지 신호, 하지만 같은 종류는 아니다
이전 게시물을 빠르게 요약하자면: LLM은 이메일당 네 가지 특징(feature) — confidence(신뢰도), senderTrust(발신자 신뢰도), reversibility(가역성), urgency(긴급성) — 을 점수화하며, 결정론적 규칙(deterministic rule)이 이를 티어(tier)로 매핑합니다. 모델은 인지하고, 제가 읽을 수 있는 규칙이 결정합니다.
하지만 이 네 가지는 같은 _종류_의 것이 아닙니다. 그중 세 가지는 세상을 설명합니다:
- **
senderTrust**는 관찰된 이력에 근거할 수 있습니다 — 실제로 이 사람과 연락한 적이 있는지, 얼마나 자주 했는지 말입니다. 이메일 외부에 소스가 존재합니다. - **
reversibility**는 메시지가 아니라 시스템이 취할 _행동_의 속성입니다. 캘린더 초대를 수락하는 것은 수락하는 행위 자체가 가역적이기 때문에 가역적인 것이지, 이메일이 그렇게 말했기 때문이 아닙니다. - **
urgency**는 시계에 응답합니다. 실제 마감 기한은 존재하거나 존재하지 않거나 둘 중 하나입니다.
**confidence**는 성격이 다릅니다. 이것은 모델이 자신의 작업에 점수를 매기는 것입니다 — "나머지 세 가지에 대해 내가 얼마나 확신하는가?" 모델 자신의 의견 외에는 외부 소스가 존재하지 않습니다. 그리고 저의 규칙에서, AUTO 분기(branch)는 (다른 요소들과 함께) confidence >= 0.85일 때 통과됩니다.
그 지점이 뼈아픈 이유
위험한 이메일은 모델이 확신하지 못하는 이메일이 아닙니다. 낮은 신뢰도(low-confidence) 하한선이 이미 그런 이메일들을 대기열(queue)로 분류하기 때문입니다. 진짜 위험한 것은 모델이 확신을 가지고 틀린(confidently wrong) 이메일입니다. 신뢰할 수 있는 발신자로 읽히는 정교한 사칭(impersonation)은 정확히 높은 신뢰도(high-confidence), 높은 senderTrust, 그리고 되돌릴 수 있어 보이는(reversible-looking) 이메일의 특성을 가집니다. 이는 모델이 스스로에 대해 작성한 단 하나의 특징을 통해 AUTO 분기(branch)로 걸어 들어오며, 스스로 채점한 신뢰도는 구조적으로 확신에 찬 거짓말을 잡아낼 수 없는 관문(gate)이 됩니다.
현재 실제로 이를 막고 있는 것
영향 범위(blast radius)에 대해 정확히 짚고 넘어가고 싶습니다. 왜냐하면 그 범위는 앞선 문단에서 들리는 것보다 작기 때문입니다.
현재 빌드에서 AUTO는 분류(classify-only) 전용입니다. 즉, AUTO 분류는 등급을 설정할 뿐 아무런 동작을 트리거하지 않습니다. 실행이 이루어질 때도 AUTO는 오직 되돌릴 수 있는 내부 동작(보관(archive), 읽음 표시(mark-read))으로만 매핑됩니다. 그리고 세 가지 되돌릴 수 없는 동작 — 보내기(send), 영구 삭제(hard-delete), 외부 전달(forward-external) — 은 모든 점수를 무시하는 결정론적 하한선(deterministic floor) 뒤에 위치합니다. 따라서 AUTO에 도달한 확신에 찬 사칭 이메일은 되돌릴 수 있는 방식으로 조용히 처리될 뿐, 결코 되돌릴 수 없는 상황을 만들지는 않습니다.
틈새(seam)는 분명히 존재합니다. 다만 현재로서는 되돌릴 수 없는 어떤 것에도 도달할 수 없을 뿐입니다. 하지만 "하한선에 의해 제한되어 있다"는 것이 "올바르게 설계되었다"는 것과 같은 의미는 아닙니다. 모델이 스스로 작성한 숫자에 의존하여 AUTO가 스스로 되돌릴 수 있는 동작이라도 수행하기 시작하는 날, 그것은 잘못된 관문이 될 것입니다.
해결책은 프레이밍(framing)에 있습니다
@jugeni의 한 마디가 바로 사양(spec)입니다: 모델이 스스로 작성할 수 없는 상호 확인(corroboration)을 기준으로 관문을 설정하십시오.
- 이력이 존재하는 경우,
senderTrust를 **관찰된 이력으로부터 도출된 결정론적 하한선 (deterministic floor)**으로 만드십시오. 즉, 프롬프트에서 모델에게 단순히 제안하는 것이 아니라,manualOverrides >= N조건이 이를 고정(pin)하도록 합니다. reversibility(가역성)는 모델이 이메일을 읽고 판단하는 것이 아니라, 해당 티어(tier)가 트리거할 동작을 조회(lookup)하여 가져오십시오 (이는 @txdesk의 지적이며, 이미 되돌릴 수 없는 하한선(irreversible floor)이 작동하는 방식입니다. 다만 아직 AUTO 게이트에는 적용되지 않았을 뿐입니다).confidence(신뢰도)는 동점자 처리(tiebreaker) 용도로만 유지하며, 그 자체로 AUTO로 승격시키는 요소로 사용해서는 안 됩니다.
이 패턴은 이메일을 넘어 일반화될 수 있습니다. 모델이 의사결정을 위해 특징(feature) 점수를 매기도록 허용할 때마다, 해당 특징의 출처가 모델의 자기 평가(self-assessment)와 독립적인지 여부에 따라 특징을 정렬하십시오. 독립적인 특징들을 기준으로 게이트(gate)를 설정하십시오. 자기 평가(self-graded) 항목은 풍경(scenery)과 같습니다. 유용한 문맥(context)일 뿐, 결코 권한 부여(authorization)가 될 수 없습니다.
솔직한 고백
저는 아직 이것을 실행하지 않았습니다. 현재 confidence는 여전히 AUTO의 게이트 역할을 하고 있으며, 이를 안전하게 만드는 것은 게이트 자체가 아니라 그 아래에 깔린 하한선(floor)입니다. 제가 해야 할 일은 적대적 평가(adversarial eval)입니다. 즉, 고신뢰도의 정교한 사칭(impersonation)을 만들어 그것이 실제로 AUTO에 도달하는지 측정함으로써, "하한선이 우리를 구해줄 것이라고 믿는다"라는 믿음을 숫자로 바꾸는 작업입니다. 이것이 다음 단계이며, 제가 사례를 작성하기 전에 직접 작성하고 싶다면 평가 세트(eval set)는 공개되어 있습니다.
세 번째 포스트를 작성하면서 깨닫는 교훈은 항상 같은 형태입니다. 모델을 인지 계층(perception layer)에 머물게 하고, 모든 결정이 모델이 몰래 작성할 수 없는 무언가에 책임을 지도록 만드십시오. AGPLv3 라이선스, 전체 프로젝트는 다음과 같습니다: github.com/k08200/klorn.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기