지나치게 관대한 AI 심사위원: 컴퓨터 에이전트의 허위 성공 측정
요약
본 문서는 컴퓨터 사용 에이전트의 성공 측정에 있어 '관대한 심사위원' 오류를 지적하며, 허위 양성(False Positive)으로 인한 성능 과대평가의 위험성을 경고합니다. 단순히 리더보드를 만드는 것이 아니라, 프로그램적인 판결을 내리는 정직한 벤치마크 구축 방법을 제시합니다.
핵심 포인트
- AI 심사위원의 '관대한' 판단은 허위 양성(False Positive)을 유발하여 성능을 과대평가할 수 있습니다.
- 정확한 평가를 위해 프로그램적인 판결이 가능한 정직한 벤치마크 구축이 필요합니다.
- 허위 양성률(FPR), 허위 발견율(FDR) 등 체계적인 메트릭 스크립트를 활용해야 합니다.
- 심사위원-실행기(judge-runner)를 통해 심사위원의 의견 불일치를 측정하는 것이 중요합니다.
너무 관대한 AI 심사위원: 컴퓨터 에이전트의 허위 성공 측정 | The Overly Generous AI Judge — Agent Lab Journal
Agent Lab Journal
Guides
Glossary
너무 관대한 AI 심사위원: 컴퓨터 에이전트의 허위 성공 측정
The overly generous AI judge: measuring false successes of a computer-use agent
레벨: 고급 · 예상 독서 시간: 50분 · 업데이트: 2026년 10월 10일
사용자 컴퓨터 사용 에이전트가 작업 성공률 70%를 보고했습니다. 이 수치는 최종 스크린샷을 확인한 모델 심사위원(model judge)이 "예"라고 말함으로써 나온 것입니다. 이제 실제 파일 시스템, 실제 데이터베이스, 실제 설정 파일을 열어 다시 세어보십시오. 만약 두 번째 숫자가 더 낮다면, 그 차이는 허위 양성(false positives), 즉 심사위원이 기꺼이 받아들인 미완료 작업으로 이루어져 있습니다. 이 격차는 단순히 대시보드를 꾸미는 것 이상의 의미를 가집니다. 만약 같은 심사위원이 파인튜닝을 위해 궤적(trajectories)을 필터링하거나 강화학습(RL)에 대한 보상을 제공한다면, 모든 허위 성공은 에이전트에게 '완료된 것처럼 보이게' 만드는 학습 예제가 됩니다.
본 문서는 리더보드가 아니라 프로토콜입니다. 이 글은 모든 에피소드가 프로그램적인 판결을 받는 작지만 정직한 벤치마크를 구축하는 방법과, 두 종류의 심사위원—심사위원으로 프롬프트된 범용 비전-언어 모델(VLM)과 전문화된 보상 모델(reward model)—이 그 판결에 위험한 방향으로 얼마나 자주 의견 불일치를 보이는지를 측정하는 방법을 보여줍니다. 저희는 이 글을 위해 비교를 수행하지 않았으며, 아래에는 측정한 수치가 없습니다. 결과가 담긴 모든 표는 사용자가 직접 실행하여 채워 넣어야 하는 템플릿이며, 작업 예시에서 나타나는 모든 숫자는 '장난감 산술(toy arithmetic)'로 표시되어 있습니다.
최종적으로 얻게 되는 것은 다음과 같습니다: 검증 가능한 레이블이 포함된 에이전트 에피소드 데이터셋, 동일한 증거를 각 심사위원에게 공급하는 심사위원-실행기(judge-runner), 허위 양성률(FPR), 허위 발견율(FDR), 성공률 인플레이션, 일치도 및 신뢰 구간을 갖춘 쌍별 유의성(paired significance)을 보고하는 메트릭 스크립트, 그리고 심사위원이 훈련 신호로 사용하기에 충분히 안전한지 결정하기 위한 체크리스트입니다.
1. '관대한' 심사위원이 노이즈가 아닌 체계적 오류인 이유
컴퓨터 사용 에이전트를 평가하는 심사위원은 이진 질문에 답합니다: 에이전트가 과제에서 명시된 목표를 달성했는가? 잘못될 수 있는 방법은 두 가지입니다:
-
위음성(False negative) — 과제가 수행되었으나, 심사위원이 그렇지 않다고 말하는 경우. 이는 재현율(recall)을 떨어뜨립니다: 좋은 궤적들이 버려지고, 측정된 성공이 과소평가됩니다.
-
위양성(False positive) — 과제가 수행되지 않았으나, 심사위원이 수행되었다고 말하는 경우. 이것이 바로 '관대한 심사위원' 오류입니다. 측정된 성공이 과대평가되며, 훈련 파이프라인에서 실패한 행동이 강화됩니다.
두 오류는 결과 면에서 대칭적이지 않습니다. 좋은 궤적을 버리는 것은 학습 속도를 늦춥니다. 나쁜 것을 수용하는 것은 능동적으로 학습을 잘못된 방향으로 이끕니다. 거절 샘플링(rejection sampling)이나 필터링된 행동 복제(filtered behaviour cloning)에서, 훈련 세트 내에 오염된 예시의 비율은 에이전트 출력 분포에 대한 심사위원의 위탐지율(false discovery rate)과 정확히 같습니다. 학습된 보상(learned reward)을 사용하는 강화학습(RL)에서, 위양성 사례는 리워드 해킹(reward hacking)의 원료가 됩니다: 정책은 작업 완료 여부와 상관없이 심사위원이 좋아하는 상태를 찾게 됩니다.
컴퓨터 사용 궤적에 대한 심사위원들이 '성공' 쪽으로 오류를 범할 것이라고 예상하는 구조적인 이유들이 있습니다:
-
증거는 시스템의 상태가 아니라 화면의 사진이다. '저장됨(Saved)'이라는 대화창이 보일 수는 있지만, 실제로 쓰기가 디스크에 도달했는지는 알 수 없다. 내용이 채워진 것처럼 보이는 양식이라도 제출된 적이 없을 수 있다.
-
아슬아슬한 실패가 성공처럼 보인다. 잘못된 프로필의 올바른 설정, 잘못된 셀의 올바른 값, 잘못된 폴더에 있는 올바른 이름의 파일 — 스크린샷 상에서 이들은 성공과 거의 구별이 불가능하다.
-
에이전트가 스스로 자신의 성공을 서술한다. 많은 에이전트가 '저는 작업을 완료했습니다(I have completed the task).'라는 문장으로 끝난다. 만약 그 텍스트가 심사위원에게 전달된다면, 이는 강력한 사전 정보(strong prior)로 작용한다. 이것은 평가되는 궤적에 대한 아첨(sycophancy)의 한 형태이다.
-
프롬프트 기반의 심사위원들은 드물게 보정되어 있다(rarely calibrated). 채팅 모델의 '예/아니오' 답변은 확률이 아니며, 그 오류율이 두 방향 사이에서 균형을 이루도록 강제하는 것은 아무것도 없다.
이들 중 어느 것도 특정 모델에 대한 주장은 아니다. 이것들은 이 벤치마크가 여러분의 심사위원, 여러분의 에이전트, 그리고 여러분의 작업 분포(task distribution)를 가지고 테스트하도록 설계된 가설들이다.
2. 염두에 둘 구체적인 사례
사무 자동화 스위트의 작업을 고려해 보자: '스프레드시트 q3_budget.ods에서 D14 셀을 4500으로 설정하고 파일을 저장하라.'
여기에 에이전트 실행의 네 가지 그럴듯한 종료 시나리오가 있다. 이 네 가지 모두 D14에 4500이 표시되는 최종 스크린샷을 생성할 수 있다.
Ending|What the screen shows|What the file contains|Ground truth
---|---|---|---
A. Done|D14 = 4500, no unsaved marker|D14 = 4500|success
...```
라이브러리를 사용하여 파일을 열고 D14를 읽는 프로그래밍적 검사는 네 가지 모두에 대해 모호하지 않은 판결을 내린다. 픽셀을 보는 심사위원은 제목 표시줄의 별표, 한 줄 오프셋(one-row offset), 또는 파일 이름 접미사를 알아차려야 한다. 종료 시나리오 B~D는 우리가 하드 네거티브(hard negatives)라고 부를 것들이다: 성공과 유사한 실패들. 이 기사의 핵심 측정 지표는 하드 네거티브에 대한 심사위원의 FPR(False Positive Rate, 위양성률)이며, 명백한 실패(에이전트가 충돌했거나, 잘못된 애플리케이션을 열었거나, 포기한 경우)에 대한 FPR과는 별도로 보고된다.
## 3. 벤치마크 설계
### 3.1 세 가지 축
Arm GT — 검증 가능한 정답(verifiable ground truth)
작업별로 최종 시스템 상태(파일, 데이터베이스 행, 설정, 브라우저 저장소, 프로세스 상태)를 검사하고 통과/실패 여부를 반환하는 결정론적 검증기 스크립트입니다. 이것이 기준 레이블(reference label)입니다. 이 검증기는 스크린샷이나 에이전트의 텍스트를 절대 볼 수 없습니다.
Arm V — 범용 VLM 심사위원(general VLM judge)
API를 통해 접근하거나 로컬에서 실행할 수 있는 범용 멀티모달 모델로, 루브릭(rubric)과 함께 프롬프트됩니다. 작업 텍스트와 시각적 증거를 받아 구조화된 판결을 반환합니다.
Arm R — 특수 보상 모델(specialised reward model)
GUI 또는 컴퓨터 사용 경로(outcome reward model, ORM)를 점수 매기도록 특별히 훈련된 모델입니다. 스칼라 점수 또는 성공 확률을 반환합니다. 실제로 접근할 수 있는 모델을 선택하면 됩니다. 이 프로토콜은 특정 모델에 의존하지 않습니다. 만약 해당 모델이 없다면, Arm V만 사용하거나 두 개의 다른 VLM으로도 벤치마크를 실행할 수 있습니다.
GT를 갖는다는 점의 핵심은 심사위원 V와 R이 또 다른 모델의 의견을 기준으로 평가되는 것이 아니라는 것입니다. 이것이 평가 하니스(evaluation harness)와 미인 대회 사이의 전체적인 차이점입니다.
### 3.2 작업 선택 규칙
다음 모든 조건이 충족될 때만 작업을 포함해야 합니다:
- 목표를 화면을 보지 않고 시스템 상태에서 확인할 수 있어야 합니다.
- 검증기가 결정론적이어야 합니다: 동일한 스냅샷에 대해 두 번 실행해도 같은 답변을 얻어야 합니다.
- 검증기는 최소한 하나 이상의 수동으로 만든 성공 상태와 최소한 하나 이상의 수동으로 만든 실패 상태(섹션 5.2)에서 테스트되어야 합니다.
- 성공 조건이 작업 텍스트 내에서 모호하지 않아야 합니다. '보고서를 더 보기 좋게 만드세요'는 제외하고, '제목 글꼴 크기를 18pt로 설정하세요'는 포함합니다.
검증 가능한 과제의 좋은 출처: 파일 작업(생성, 이름 변경, 이동, 내용 편집), 오피스 문서(셀 값, 파일에 저장된 스타일), 설정 파일에 저장된 애플리케이션 설정, 검사 가능한 데이터베이스를 가진 로컬 웹 앱, 브라우저 상태(북마크, 로컬 스토리지, 다운로드한 파일), 그리고 확인 가능한 출력을 가진 터미널 작업. 공개 컴퓨터 사용 벤치마크는 종종 이미 과제별 평가 스크립트를 제공합니다. 만약 하나를 재사용한다면, 신뢰하기 전에 검증기(verifiers)를 읽고 라이선스 약관을 보관하십시오.
첫 실행에 적절한 크기는 각 에피소드가 여러 개 포함된 60~150개의 과제입니다. 섹션 4.6에서는 필요한 신뢰 구간에 충분한지 결정하는 방법을 설명합니다.
### 3.3 충분한 실패 사례, 그리고 올바른 종류 얻기
FPR은 오직 실제 오류(ground-truth failures)를 기준으로 계산됩니다. 에이전트가 좋다면, 너무 적거나 어려운 오류가 부족할 수 있습니다. 세 가지 출처를 사용하고 각 에피소드를 해당 출처로 태그 지정하십시오:
- **자연스러운 에피소드 (Natural episodes).** 에이전트를 정상적으로 여러 번 실행하여 과제별로 다양한 시드(seeds)나 온도(temperatures)를 적용합니다. 이는 현실적인 분포를 제공하며, 헤드라인 수치로 보고해야 하는 내용입니다.
- **약화된 에이전트 에피소드 (Weakened-agent episodes).** 더 작은 모델을 실행하거나, 단계 예산(step budget)을 줄이거나, 도구를 제거합니다. 이는 오류를 직접 만들지 않고도 더 많은 자연스러운 실패 사례를 생성합니다.
- **교란된 에피소드 (Perturbed episodes).** 성공적인 에피소드를 가져와 샌드박스에서 어느 지점까지 재실행한 다음, 특정 결함(defect)을 주입합니다. 최종 '저장' 단계를 건너뛰거나, 대상 셀을 한 행 변경하거나, 형제 디렉터리(sibling directory)에 쓰거나, 대화 상자를 '확인' 대신 '취소'로 닫습니다. 결과 상태에 대해 검증기를 다시 실행하십시오. 교란이 실패를 발생시켰다고 절대 가정하지 마십시오.
교란된 에피소드는 대표적인 샘플이라기보다는 스트레스 테스트입니다. 이를 별도의 계층(stratum)에서 보고해야 합니다. 이를 헤드라인 FPR에 섞으면 얼마나 많이 만들었는지에 따라 그 값이 부풀려지거나 줄어들 수 있으며, 이는 측정치가 아니라 선택 문제입니다.
### 3.4 실패 분류법 (Failure taxonomy)
모든 실제 실패(ground-truth failure)는 정확히 하나의 주요 범주를 갖습니다. 가능한 경우 검증자(verifier)의 진단 출력에서 할당하고, 그렇지 않은 경우에는 수동으로 합니다.
CodeCategoryExampleExpected visual difficulty
F-ABORTAgent gave up or crashedError dialog, empty desktopLow
...
"Expected visual difficulty"는 가설(hypothesis) 열입니다. 실행 후에는 이를 측정된 범주별 FPR로 대체합니다.
### 3.5 심사위원이 보는 증거 통제하기
심사위원 비교는 한 명의 심사위원이 더 많은 것을 봤다면 의미가 없습니다. 증거 패키지(evidence packages)를 정의하고 모든 심사위원에게 각 조건에서 동일한 패키지를 제공해야 합니다:
ConditionContentsQuestion it answers
E1-finalTask text + final screenshot최소한의 증거로도 심사위원이 얼마나 좋은가?
...
E2-lastk와 E2+claim 사이의 FPR 차이는 에이전트의 서사에 대한 아첨(sycophancy)을 나타내는 직접적이고 해석 가능한 측정치입니다. 만약 특화된 보상 모델(specialised reward model)이 고정된 입력 형식(예를 들어, 최종 스크린샷과 지침만 허용하는 경우)을 갖는다면, 해당 모델이 지원하는 조건에서만 실행하고 결과에 그렇게 명시해야 합니다.
어떤 증거 패키지에도 검증자 출력, 검증자가 읽은 파일 내용, 에피소드의 출처 태그(natural/perturbed), 또는 실패 범주는 절대 포함해서는 안 됩니다. 이것들은 누출 채널(leakage channels)입니다.
## 4. 재현 가능한 설정
### 4.1 리포지토리 레이아웃
judge-bench/
├── config/
│ └── bench.yaml
...
### 4.2 샌드박스(Sandbox)
에이전트, 교란 요소(perturbations) 및 검증자는 모두 폐기 가능한 샌드박스 내부에서 실행됩니다: 가상 디스플레이를 가진 컨테이너 또는 VM입니다. 필수 속성은 작업별 재현 가능한 초기 상태와 에피소드가 끝난 후 다른 것이 건드리기 전에 최종 상태를 스냅샷할 수 있는 능력입니다. 최소한의 컨테이너 레시피는 다음과 같습니다:
Dockerfile (개요 — 실제로 테스트하는 버전을 고정하세요)
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y --no-install-recommends
...
docker build -t judge-bench-sandbox:0.1 .
docker run -d --name ep_0001 --network none judge-bench-sandbox:0.1
docker exec ep_0001 bash /tasks/sheet_set_cell_d14/setup.sh
...
--network none은 오프라인 작업에 합리적인 기본값입니다. 네트워크 접근 권한은 필요한 작업에만 부여하고, 실제 자격 증명(credentials)을 샌드박스 안에 절대 넣지 마십시오. 에이전트 하네스 자체(에이전트가 스크린샷을 받고 클릭을 내보내는 방식)는 여기서 범위를 벗어납니다. 어떤 하네스든 아래의 에피소드 파일을 작성하기만 한다면 작동합니다.
### 4.3 Episode schema (에피소드 스키마)
meta.json:
{
"episode_id": "ep_0001",
"task_id": "sheet_set_cell_d14",
...
actions.jsonl — 단계별 한 줄씩 작성:
{"step": 21, "action": "type", "text": "4500", "screen": "screens/021.png"}
{"step": 22, "action": "key", "keys": "Return", "screen": "screens/022.png"}
{"step": 23, "action": "key", "keys": "ctrl+s", "screen": "screens/023.png"}
gt.json — 검증자(verifier)가 작성하며, 수동으로 편집하지 않습니다:
{"episode_id": "ep_0001", "pass": true, "category": null,
"diagnostics": {"D14": 4500.0}, "verifier_sha256": "…"}
### 4.4 Writing a verifier (검증자 작성하기)
스프레드시트 케이스의 검증자는 화면이나 실행 중인 애플리케이션이 아닌 저장된 파일을 읽습니다.
tasks/sheet_set_cell_d14/verify.py
import json, sys
from odf.opendocument import load
...
의도적으로 보수적인 분류(categorisation)에 유의하십시오: 파일만으로는 검증자가
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기