“당신의 에이전트는 자신이 무엇을 모르는지 알고 있습니까?”라는 질문에는 답이 없습니다. 좌표가 있을 뿐입니다.
요약
AI 에이전트의 답변 가능성(Answerability) 문제를 해결하기 위해 질문과 근거 사이의 '절제 거리(excision distance)' 개념을 도입한 연구를 소개합니다. 기존 벤치마크의 불일치를 해소하기 위해 질문이 코퍼스 내 정보로부터 얼마나 떨어져 있는지를 측정하는 새로운 벤치마크 체계를 제안합니다.
핵심 포인트
- 기존 벤치마크는 답변 유보 능력을 측정할 때 질문과 정보 사이의 거리를 고려하지 않음
- 질문이 근거 데이터로부터 떨어진 정도를 '절제 거리'로 정의하여 정량화
- 단순한 답변 가능 여부가 아닌, 거리(distance)에 따른 성능 곡선 분석의 중요성 강조
- RE-call 오픈소스 프로젝트를 통해 관련 코드와 수치 공개
**The Answerability Problem (답변 가능성 문제)**의 세 번째 파트입니다. Part 1에서는 거절 (refusal) 테스트를 수행하는 질문들을 제외하는 표준 하네스 (harness)를 보여주었으며, 제 시스템이 해당 질문들에서 0.000점을 기록했음을 보여주었습니다. Part 2에서는 6가지 후보 신호 (signals)를 측정하였으나 단순 코사인 (cosine) 유사도를 능가하는 것은 없음을 확인했습니다. 이번 파트에서는 왜 두 사례 모두 답이 없는 질문을 던졌는지 설명합니다. 코드와 모든 수치는 다음에서 확인할 수 있습니다: RE-call (MIT).
두 개의 공개 벤치마크 (benchmarks)는 메모리 시스템 (memory systems)이 답변을 유보 (abstain)할 수 있는지에 대해 서로 상충되는 결과를 보여줍니다.
LOCOMO의 적대적 (adversarial) 카테고리에서 제 시스템은 446개 중 0.000점을 기록했으며, 제가 출시하는 모든 레버 (lever)는 정당한 질문의 60%를 거절해야만 사용 가능한 포착률 (catch rate)에 도달합니다. 반면 BEAM의 유보 (abstention) 카테고리에서 동일한 클래스의 시스템은 무언가를 수행하며, 기존 모델이 발표한 답변들은 70개 중 38번을 정확하게 유보합니다.
몇 주 동안 저는 이것을 하나의 능력에 대한 두 개의 데이터 포인트 (data points)로 취급하며 이를 일치시키려 노력했습니다. 하지만 이것은 두 개의 데이터 포인트가 아닙니다. 각각 스칼라 (scalar)로 보고된, 하나의 숨겨진 변수 (hidden variable)에 대한 두 개의 샘플 (samples)입니다.
그 변수의 이름을 정의하면 불일치는 해소됩니다.
변수는 질문이 코퍼스 (corpus)에 포함된 내용으로부터 얼마나 떨어져 있는가입니다
대화 로그 (conversation log)에 Caroline이 무엇을 깨달았는지 물어보십시오. 실제로는 Melanie가 무언가를 깨달았고 Caroline은 바로 옆에서 다른 주제를 논의하고 있는 상황입니다. 답은 불과 몇 인치 차이로 부재합니다. 이제 동일한 코퍼스에 식당 예약에 대해 물어보십시오. 코퍼스에는 관련 내용이 전혀 없습니다. 이 역시 답이 부재하지만, 이번에는 수 마일이나 떨어져 있습니다.
두 경우 모두 "답변 불가능 (unanswerable)"합니다. 이 두 가지에 대해 하나의 숫자로 보고하는 것은, 물체를 얼마나 멀리 두었는지 말하지 않은 채 "볼 수 있는가"에 대해 하나의 숫자로 보고하는 것과 같습니다.
그래서 우리는 x축이 그 거리(distance)인 벤치마크를 구축했습니다. 질문들은 정답 근거(gold evidence)로부터 통제된 **절제 거리 (excision distances)**에서 생성됩니다. r=0.00에서는 단 하나의 지원하는 턴(turn)만 제거되고, r=1.00에서는 주변 주제 전체가 사라지며, 그 사이에는 단계별 구간(rungs)이 존재합니다. 문서 ID(document-id) 목록은 공개된 매니페스트(manifest)에 고정되어 있으므로, 테스트 대상 시스템은 스스로 거리를 계산하지 않습니다. 시스템은 그저 답변할 뿐이며, 테스트 프레임워크(harness)가 이미 각 질문이 어디에 위치하는지 알고 있습니다.
결과는 곡선이며, 그 형태가 곧 발견이다
단계별(rung) 답변 가능 질문과 답변 불가능 질문 간의 식별력. AUC, 단계당 n=200:
| 단계 (rung) | r=0.00 | r=0.25 | r=0.50 | r=0.75 | r=1.00 |
|---|---|---|---|---|---|
| AUC | 0.567 | 0.784 | 0.841 | 0.921 | 0.968 |
가장 먼 단계에서는 거의 완벽합니다. 가장 가까운 단계에서는 무작위 확률(chance)을 간신히 상회하는 수준입니다.
따라서 "당신의 메모리가 자신이 모를 때를 아는가?"라는 질문에는 답이 없습니다. 정직한 답변은 역질문입니다. 얼마나 멀리 떨어져 있는가?
사용 가능한 게이트(gate)가 되려면 대략 0.90 정도의 수치가 필요한데, 이 시스템은 r=0.50과 r=0.75 사이에서 그 수치를 통과합니다. 즉, 주제의 절반에서 4분의 3 정도가 삭제되었을 때에야 비로소 통과한다는 뜻입니다.
이 곡선은 또한 벤치마크 간의 불일치를 설명해 줍니다. LOCOMO의 적대적 예제(adversarials)는 잘못된 귀속(misattribution), 즉 사건은 맞지만 화자가 틀린 방식으로 구축되었기 때문에 r=0.00 근처에 위치합니다. BEAM의 예제들 역시 적대적으로 구성되었으며 역시 0 근처에 위치합니다. BEAM의 답변 불가능한 질문들은 실제로 답변 가능한 질문들보다 유사도(similarity) 점수가 더 높게 나옵니다. 기권(abstention)이 "작동하는" 것처럼 보이는 코퍼스(corpora), 즉 놓친 부분이 완전히 다른 주제인 제한된 기술 문서들은 가장 먼 끝단에 위치합니다. 아무도 틀리지 않았습니다. 모두가 하나의 지점만을 보고하면서 그것을 하나의 능력(capability)이라고 불렀을 뿐입니다.
메커니즘, 그리고 이것은 임계값(threshold)의 문제가 아니다
여기가 제가 예상하지 못했던 부분이며, 이것이 더 이상 튜닝(tuning)만으로는 해결될 수 없다고 생각하는 이유입니다.
답변 가능한 각 질문을 가져와서, 그 질문의 정답 근거(gold evidence)를 삭제한 뒤, 최상위 검색 점수(top retrieval score)가 얼마나 멀어지는지 측정합니다. 동일한 질문을 쌍으로 구성, n=200. 평균 변화량: −0.0111.
평균값은 핵심이 아닙니다. 분포는 다음과 같습니다:
- 200개 질문 중 130개: 변화가 정확히 0임. 정답을 삭제해도 점수가 전혀 움직이지 않았습니다.
- 64개는 감소했습니다.
- 6개는 증가했습니다. 근거를 제거했더니 코퍼스(corpus)가 더 관련성 있게 보였습니다.
이 질문들의 약 3분의 2에 대해서는, 애초에 최상위 히트(top hit)가 정답 근거가 아니었습니다. 임계값(threshold)이 걸러내는 숫자는 정답을 읽고 있었던 것이 아닙니다. 정답 근처의 다른 무언가를 읽고 있었으며, 정답이 사라진 후에도 그것을 계속 읽고 있었습니다.
임계값 설정만으로는 이 문제를 해결할 수 없습니다. 임계값은 점수에 대한 단조 규칙(monotone rule)이며, 그 점수는 당신이 결정하고자 하는 대상에 대한 측정값이 아니기 때문입니다. 이것이 Part 2의 여섯 가지 신호가 군집을 이루며 모두 실패한 이유입니다. 그것들은 동일한 잘못된 수치를 읽는 여섯 가지 방식이었을 뿐입니다.
그다음, 이것이 인위적인 결과물(artifact)인지 확인했습니다
하나의 임베더(embedder)에서 측정된 곡선은 다른 증거가 나타나기 전까지는 해당 임베더의 속성입니다. 따라서 전체 과정을 gte-base로 다시 실행했습니다: 모델 패밀리가 다르고, 384 차원 대신 768 차원을 사용하며, 코사인 유사도 범위가 첫 번째 모델과 전혀 겹치지 않습니다 (0.4945–0.8238 대비 0.7620–0.9332).
| 단계(rung) | r=0.00 | r=0.25 | r=0.50 | r=0.75 | r=1.00 |
|---|---|---|---|---|---|
| bge-small, 384d | 0.567 | 0.784 | 0.841 | 0.921 | 0.968 |
| gte-base, 768d | 0.570 | 0.794 | 0.841 | 0.925 | 0.976 |
모든 단계(rung)에서 0.010 이내의 차이를 보이며, r=0.50에서 동일하고, 0.90 교차점 또한 양쪽 모두 동일한 구간에서 나타납니다. 이 _형태 (shape)_는 모델 계열, 크기, 규모의 변화에도 유지됩니다. 하지만 크기 (magnitudes)는 유지되지 않습니다: 답변 불가능한 범위 내의 차이(within-unanswerable deltas)는 gte-base에서 약 2.1배 더 작게 나타납니다. 이것이 바로 예측이 크기(size)가 아닌 부호(sign), 단조성(monotonicity), 그리고 순서(ordering)를 기준으로 등록된 정확한 이유입니다. 만약 사전 등록(pre-registration)에 "-0.1100을 재현한다"라고 명시했다면, 실제 효과가 나타났음에도 실패로 간주되었을 것입니다.
보고하지는 않았지만 확인한 세부 사항이 하나 있습니다: 두 실험군 모두 200개 질문 중 173개가 단조적(monotone)이었는데, 이 동일한 수치는 우연입니다. 두 세트는 동일한 질문이 아니며, 156개가 중복됩니다. 실질적인 의미는 한 임베더 (embedder)에서 단조적인 질문의 90%가 다른 임베더에서도 단조적이라는 점이며, 이는 총합이 아닌 질문별 일치(agreement per question)를 의미합니다.
유용한 부분인 두 가지 인정 사항
이 벤치마크의 첫 번째 버전은 통과했지만, 그 통과는 쓰레기였습니다. v1은 전반적으로 완벽한 +1.000의 변별력 (discrimination)을 보고했으며, 저는 이를 거의 출판할 뻔했습니다. 가장 큰 절단(excision) 작업에서 해당 제거 작업이 대화 전체를 삭제해 버렸고, 테스트 대상인 슬라이스(slice) 자체가 그 대화였기 때문에 인덱스(index)가 비어 있게 되었습니다. 즉, 아무것도 없다는 사실을 감지하는 능력이 완벽하게 나타난 것입니다. 해당 실험군에서 비어 있지 않은 모든 대조(contrast)는 최대 +0.003 수준으로 평탄했습니다.
그리고 저는 잘못된 형태를 예측했습니다. 제가 등록한 예측은 계단형(step)이었습니다. 즉, 시스템이 확신에서 불확실성으로 전환되는 특정 거리가 있을 것이라고 보았습니다. 하지만 실제로는 매끄럽고 단조로운 경사(gradient) 형태이며, 출시된 이진 기권 결정 (binary abstention decision)은 이 경사의 모든 세부 사항을 인지하지 못합니다.
세 번째 인정은 저 개인이 아닌 사전 등록(pre-registration)에 속하는 것이며, 이는 전체적인 양상(arm)에 대한 정직한 해석입니다. 실행 전, 다음과 같이 기록되었습니다: 만약 경사(gradient)가 유지된다면, 가장 가능성 있는 해석은 평범하다는 것이다. 왜냐하면 관련 문서를 삭제함에 따라 어떤 밀집 검색기(dense retriever)의 top-1 유사도도 하락하기 때문이다. 실제로 그런 일이 일어났습니다. 이 메커니즘은 제 시스템의 특성이라기보다 밀집 검색(dense retrieval)에 거의 확실히 일반적인 특성입니다. 흥미로운 내용은 경사가 존재한다는 사실이 아닙니다. 그것을 표현할 수 없는 이진 결정(binary decision) 아래에 단계적인 신호(graded signal)가 자리 잡고 있다는 점, 그리고 경계 지점 그 자체에서는 그 신호의 가치가 거의 없다는 점입니다.
작동할 수 없는 가드 (The guard that cannot fire)
위 사항을 측정하는 동안, 출시된 기권 하한선(abstention floor)은 비활성 상태임이 드러났습니다.
기본 상수는 코사인 유사도 0.50입니다. bge-small에서 관찰된 점수는 [0.4945, 0.8238] 범위에 걸쳐 있으므로, 1200개 중 1개의 응답이 이보다 낮게 나타납니다. gte-base에서는 전체 분포가 0.76 위에 위치하며, 답은 1200개 중 0개입니다.
답변을 보류하는 역할을 하는 제 라이브러리에 포함된 가드는 두 임베더(embedder) 모두에서 작동(fire)할 수 없었습니다.
- 품질 비교가 아닙니다. 여기서 어느 한 임베더(embedder)가 다른 임베더보다 더 잘 검색한다는 내용은 없습니다. 오직 거리 응답(distance response)의 형태만을 측정했습니다.
- 두 계열(families)은 "임베더 독립적"인 것이 아닙니다. 이는 신뢰도를 높여줄 뿐, 동일한 상수가 반대 방향으로 실패하는 API 임베더들에 대해서는 아무것도 말해주지 않습니다.
- 단일 변수 변경이 아닙니다. 계열, 크기, 차원(dimensionality)이 함께 움직였으므로, 이 일치성을 어느 한 요소의 결과로 돌릴 수 없습니다.
- 동일한 코퍼스(corpus), 판정자 없음. 공유 코퍼스 아티팩트(shared-corpus artifact)는 여기서 포착되기보다는 재현될 것이며, 전체 과정에서 '정답(correctness)' 여부는 측정되지 않았습니다.
내가 논쟁하고 싶은 점
내가 가장 확신하지 못하는 주장은 매우 강력한 내용입니다. 즉, 기권(abstention)은 메모리 시스템이 가진 속성이 아니라, 축(axis)에 대해 측정되어야 하는 거리의 함수이며, 따라서 단일 숫자로 표현된 기권 점수는 범주 오류(category error)라는 주장입니다. 여기에는 제가 이 시리즈의 앞부분에서 발표했던 것들도 포함됩니다.
만약 이 주장이 맞다면, "자신이 무엇을 모르는지 아는가?"라는 질문은 그만두어야 하며, 하나의 기권 수치를 보고하는 모든 벤치마크는 대신 곡선(curve)을 보고해야 합니다.
만약 이 주장이 틀렸다면, 저에게 이를 보여줄 가장 저렴한 방법은 r=0.00에서 분리되는 신호를 보여주는 것입니다. 저의 결과는 두 개의 독립적인 임베더 계열에서 0.567에 위치합니다. 명세(manifest)는 동결되어 공개되어 있으며, 테스트 하네스(harness)는 명령어 하나로 실행 가능하고, 실행 비용도 들지 않습니다.
Part 4는 장부입니다: 이 아키텍처가 얻는 것, 비용이 드는 것, 그리고 의도적으로 손해를 보는 지점에 대한 내용입니다.
사다리(The ladder), 사전 등록 사항 및 모든 아티팩트: RE-call, benchmarks/ladder/ 및 results/ladder/. 철회된 v1을 포함한 모든 판결은 요약되지 않고 그대로 커밋(committed)되어 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기