Skip to content

에이전트 평가 3/4 — 검증기 문턱값, F1 말고 비용으로 정하기 ​

1·2편은 오프라인 평가, 즉 배포 전에 에이전트를 채점하는 얘기였다. 이번 편은 운영 중에 돌아가는 검증기다. 에이전트가 낸 결과를 다른 모델(또는 규칙)이 한 번 더 보고, 점수가 낮으면 고객에게 보내지 않고 사람에게 넘긴다. 보험 지급 판단 같은 업무라면 거의 필수로 붙이는 구조다.

여기서 꼭 정해야 하는 숫자가 하나 있다. 몇 점 아래를 막을 것인가.

문턱값을 옮겨 보자 ​

아래 그림에서 주황 곡선은 잘못된 출력이 받는 점수, 파란 곡선은 정상 출력이 받는 점수다. 점선 왼쪽은 막혀서 사람에게 간다. 기본값은 잘못된 출력이 5%, 사람 검토 1건에 1만 원, 놓친 오류 1건에 50만 원이라고 잡았다.

검증기 문턱값 옮겨 보기
← 막음통과 →낮은 점수높은 점수
잘못된 출력정상 출력면적 = 건수 (오류 비율이 낮으면 주황이 작게 보인다)
재현율 오류를 잡아낸 비율
84.1%
1000건당 놓친 오류 7.9건
정밀도 막은 것 중 진짜 오류
21.8%
사람 검토로 가는 비율 19.3%
1000건당 비용
589만
최소는 문턱값 1.45에서 507만

점수 분포를 정규분포 두 개로 단순화한 모형이다. 실제 검증기의 점수 분포는 치우쳐 있고, 문턱값은 실제 라벨링 데이터로 다시 잡아야 한다.

처음 보면 그림이 좀 이상해 보일 수 있다. 주황 곡선이 작다. 일부러 그렇게 그렸다. 잘못된 출력이 5%뿐이면 실제 건수도 그만큼 적고, 이게 이 편의 핵심이다.

점선을 왼쪽으로 끌어 보자(문턱값 0 근처). 막히는 건 대부분 진짜 오류라서 정밀도가 50%를 넘는다. 대신 오류의 절반을 놓친다. 1,000건당 비용은 1,300만 원 가까이로 뛴다.

이번엔 오른쪽으로 끌어 보자(문턱값 1.45 근처). 오류의 93%를 잡는다. 대신 막힌 것 중 진짜 오류는 14%밖에 안 되고, 전체의 3분의 1이 사람에게 간다. 그런데 비용은 이 지점이 가장 싸다. 1,000건당 약 507만 원.

정밀도 14%짜리 검증기가 최선이라니, 처음 보면 납득이 잘 안 된다. 놓친 오류 하나가 사람 검토 50건 값이라서 그렇다. 사람이 쓸데없이 6건을 보더라도 진짜 오류 1건을 잡으면 이득이다.

F1 최대 지점은 왜 틀렸나 ​

분류기를 다뤄 본 사람이라면 습관처럼 F1이 가장 높은 문턱값을 고른다. 이 설정에서 F1이 최대인 문턱값은 0.05 근처이고, 그때 재현율과 정밀도가 둘 다 52% 정도로 예쁘게 균형이 맞는다. 그리고 비용은 1,000건당 1,250만 원. 비용 최소 지점의 2.5배다.

F1은 놓친 오류와 괜히 막은 정상 출력을 같은 무게로 친다. 실제 업무에서 이 둘의 무게가 같은 경우는 거의 없다. 잘못된 보험금 지급과 사람이 한 번 더 확인하는 수고는 무게가 다르다. 위젯에서 "놓친 오류 1건 비용"을 움직여 보면, 그 숫자 하나로 최적 문턱값이 크게 옮겨 다니는 게 보인다.

문턱값을 정하기 전에 정할 것

"놓친 오류 1건이 사람 검토 몇 건 값인가". 이 비율을 현업과 먼저 합의하면 문턱값은 거의 계산으로 나온다. 정확한 금액이 아니어도 된다. 10배인지 100배인지만 정해도 결론이 달라진다.

문턱값으로 안 되는 경우 ​

놓친 오류 비용을 500만 원으로 올려 보자. "비용이 가장 적은 문턱값으로" 버튼을 누르면 문턱값이 2.65까지 밀리고, 전체의 75%가 사람에게 간다. 이쯤 되면 자동화라고 부르기 어렵다.

이건 문턱값 문제가 아니라 검증기 문제다. 분별력을 3으로 올리면 사람에게 가는 비율이 38% 정도로, 4로 올리면 16% 정도로 떨어진다. 두 곡선이 덜 겹치게 만드는 것, 즉 검증기 자체를 좋게 만드는 것 말고는 방법이 없다. 내가 아는 선에서 분별력을 올리는 방법은 대략 이런 것들이다.

  • LLM에게 "맞냐"고 묻는 대신, 근거 문서와 결론이 일치하는지처럼 좁고 확인 가능한 질문으로 쪼갠다
  • 규칙으로 확인 가능한 건 규칙으로 막는다 (금액 한도, 필수 필드, 약관 조항 번호 존재 여부)
  • 검증기에게 에이전트와 다른 정보를 준다. 같은 컨텍스트를 보면 같은 실수를 한다

이 그림의 거짓말 ​

위젯은 점수 분포를 정규분포 두 개로 그렸다. 실제 LLM 검증기의 점수는 이렇게 생기지 않았다. 보통 양 끝에 몰려 있고("확실히 맞음", "확실히 틀림"), 중간은 듬성듬성하다. 모델이 출력하는 확률값도 보정(calibration)이 안 돼 있는 경우가 많다. 0.9라고 해서 90% 맞는다는 보장이 없다.

그래서 실제 문턱값은 이 위젯처럼 계산으로 정하는 게 아니라, 라벨 달린 운영 데이터 수백 건에 검증기를 돌려 보고 문턱값별 비용을 직접 세서 정한다. 위젯은 "어느 방향으로 움직이면 뭐가 바뀌는지" 감을 잡는 용도다.

그리고 오류 비율은 시간에 따라 변한다. 새 유형의 청구가 들어오거나 모델이 업데이트되면 주황 곡선의 크기와 위치가 바뀐다. 문턱값을 한 번 정하고 잊어버리면 안 되는 이유다.

아직 고민 중인 것 ​

막힌 건을 사람에게 보내는 게 아니라 에이전트에게 다시 시키면 어떨까? 사람 검토 비용 대신 재시도 비용이 들고, 재시도가 성공하면 사람이 볼 필요도 없다. 이게 마지막 편이다.

참고자료 ​