Skip to content
Guides5 min read

심사자를 심사하기: 사람과 모델의 추론을 나란히

LLM 심사자는 그것을 검증할 때 쓴 사람의 라벨이 믿을 만한 만큼만 믿을 수 있습니다. 같은 항목에 사람의 사고 사슬과 모델의 사고 사슬을 나란히 놓고, 자기 신뢰구간을 가진 라벨과 견줘 심사자를 확인해 보십시오.

Potato Team

대규모로 LLM을 평가하는 사람은 결국 LLM을 심사자로 쓰게 되고, 결국 그 심사자를 믿어도 되는지 묻게 됩니다. 흔한 답은 사람의 라벨과 대조해 보라는 것입니다. 하지만 그 대조는 사람의 라벨이 좋은 만큼만 좋고, 사람들끼리 의견이 갈렸는데 얼마나 갈렸는지 아무도 적어 두지 않았다면 “심사자가 사람과 일치한다”는 약한 주장입니다. 이 글은 그 틈을 메우는 이야기입니다. 모델이 어떻게 추론하는지 재고, 사람이 어떻게 추론하는지 재고, 둘을 정직하게 견주는 일입니다.

Potato 2.7은 하나의 생각으로 짜여 있습니다. 주석 도구는 판단을 기록하는 데 그치지 않고 그 판단이 어떻게 내려졌는지 재야 한다는 것입니다. 흥미로운 점은 이것이 두 종류의 심사자 모두에 적용된다는 것입니다.

심사자를 검증할 때의 문제

표준적인 작업 흐름 자체는 합리적입니다. 손으로 라벨을 붙이기에는 너무 큰 작업이 있으니 모델에 프롬프트를 넣어 채점하게 합니다. 그 점수를 믿기 전에 표본을 뽑아 사람에게 라벨을 붙이게 하고, 심사자와 사람 사이의 일치도를 잽니다. Cohen의 κ가 충분히 높으면 내보냅니다.

약한 곳은 마지막 단계입니다. 그 κ는 심사자를 어떤 사람 라벨 하나와 견주는데, 보통 두세 명에 대한 다수결입니다. 그리고 다수결은 오차 막대가 없는 점추정치입니다. 세 명이 즉시 일치했든 두 명이 긴 논쟁 끝에 한 명을 눌렀든, 똑같은 확신으로 “sarcastic”이라고 말합니다.

그래서 심사자가 사람과 κ = 0.71로 일치한다고 보고할 때, 여러분은 그 자체의 불확실성을 한 번도 재지 않은 숫자와의 일치도를 보고하고 있는 셈입니다. 어려운 항목에서 사람의 라벨이 동전 던지기에 가깝다면 그 항목들에 대한 κ는 대체로 잡음을 재고 있는 것이고, 프롬프트를 아무리 손봐도 움직이지 않습니다.

심사자 캘리브레이션심사자 ↔ 사람 정렬의 작동 방식은 전에 써 두었습니다. 2.7이 더하는 것은 나머지 절반입니다. 그 비교에서 사람 쪽도 자기 불확실성을 갖게 하는 일입니다.

사람의 라벨에 먼저 오차 막대를 붙이기

심리측정 엔진은 사람의 주석에 문항반응이론 모델을 적합하고 모든 라벨을 구간이 붙은 사후확률(sarcastic, p = 0.94 [0.88 – 0.97])로 보고하며, 몇 명이 투표했는지만이 아니라 누가 투표했는지에 가중치를 둡니다.

Truth Serum은 동료 예측 채점을 더해, 다수가 확신했는데도 아마 틀렸을 항목을 짚어 줍니다.

이제 심사자 비교의 모양이 달라집니다. 이런 문장 대신

심사자는 항목의 71%에서 다수결 라벨과 일치합니다

이렇게 말할 수 있습니다.

심사자는 사람 라벨이 확실한(p > 0.9) 항목의 94%에서 사람의 사후확률과 일치하고, 그렇지 않은 항목에서는 52%입니다. 신뢰도가 낮은 그 항목은 전체의 18%입니다.

두 번째 문장은 첫 번째가 못 하는 방식으로 행동으로 이어집니다. 심사자가 쉬운 사례에서는 괜찮고 어려운 사례에서는 못 미덥다는 것, 그리고 데이터 가운데 어려운 부분이 얼마나 되는지를 알려 줍니다. 불편하면서도 쓸모 있는 것도 하나 알려 줍니다. 정말로 모호한 항목에서는 심사자가 일치할 정답 자체가 없을 수도 있으며, 거기서 더 높은 κ를 쫓는 것은 잡음을 쫓는 일입니다.

심사자 ↔ 사람 정렬 대시보드가 바로 이 일을 위해 있고, 사람 과정에 관한 기능과 에이전트 평가 기능이 두 개의 릴리스가 아니라 하나인 이유이기도 합니다.

같은 항목 위의 두 사고 사슬

비교의 나머지 절반은 추론 자체입니다.

Think-Aloud 모드사람이 어떻게 추론해 라벨에 이르는지 기록합니다. 어노테이터가 작업하면서 말하고, 음성 인식은 로컬에서 돌아가며, 전사본은 요약 없이 말한 그대로 저장됩니다. 사고구술 프로토콜을 바꿔 말하는 순간 수집하려던 것이 망가지기 때문입니다.

감지된 음성 라벨과 함께 말한 그대로 남은 추론 전사본말한 그대로 담아낸 사람의 사고 사슬

프로세스 보상 주석모델이 어떻게 추론하는지 기록합니다. 모델의 사고 사슬이 단계로 나뉘고 각 단계에 좋음/나쁨/중립의 보상 신호가 붙는데, 이것이 프로세스 보상 모델의 학습 신호입니다.

yaml
annotation_schemes:
  - annotation_type: process_reward
    name: cot_review
    description: "Rate each step of the model's reasoning."
    steps_key: reasoning_steps

같은 항목. 두 개의 사고 사슬. 나란히 놓으십시오.

이 비교에서 실제로 배우는 것

뻔한 쓰임새는 모델이 사람과 다르게 추론하는 지점을 찾는 것인데, 그게 왜 중요한지는 구체적으로 말할 값어치가 있습니다.

최종 답만 채점해서는 옳은 이유로 맞는 답을 낸 모델과 틀린 이유로 맞는 답을 낸 모델을 구별할 수 없습니다. 비꼼 판별 작업에서 사람은 “여기서 일하는 건 ‘thanks so much’예요. 이틀 늦은 걸 두고 그렇게까지 고마워하지는 않죠”(the 'thanks so much' is doing the work here. Nobody thanks you that hard for a two-day delay)라고 말할 수 있습니다. 모델은 본문에 느낌표가 있다는 이유로 같은 라벨에 이를 수 있습니다. 둘 다 정답 처리됩니다. 일반화되는 것은 하나뿐입니다.

라벨만 봐서는 그것을 알아낼 수 없습니다. 추론을 보면 알아낼 수 있고, 그래서 둘 다 갖는 수고가 값어치를 합니다.

두 번째 쓰임새는 학습 데이터입니다. 사람의 추론과 모델의 추론이 갈리는 단계는 거의 정의상 프로세스 보상 데이터셋에서 신호가 가장 강한 단계입니다. 모델의 과정이 틀렸는데 출력만 봐서는 그것이 드러나지 않는 자리이기 때문입니다.

정직한 한계 하나. Potato는 두 수집 창구를 모두 제공하고 나란히 놓아 줍니다. 사람의 사고 사슬과 모델의 사고 사슬 사이의 유사도를 자동으로 계산해 주지는 않으며, 이는 의도적으로 넣지 않은 것입니다. “이 두 추론 흔적이 일치한다”가 무슨 뜻인지는 열린 연구 문제이고, 우리가 지어낸 숫자는 숫자가 없는 것보다 나쁠 것입니다. 권위 있어 보이면서 뜻하는 바는 거의 없을 테니까요. 중요한 것은 자료 자체이고, 지표는 여러분이 정의할 몫입니다.

엮어 보기

2.7에서 방어할 만한 평가 파이프라인은 대략 이렇게 생겼습니다.

  1. 표본에 사람이 라벨을 붙입니다. 심리측정을 켜 두면 모든 라벨에 사후확률과 구간이 붙습니다. 모호한 항목은 조용히 잘못 붙는 대신 모호하다고 표시됩니다.
  2. Truth Serum을 돌려 확신에 찬 다수가 아마 틀렸을 항목을 잡아냅니다.
  3. 지침을 고칩니다. 코드북 문제 탐지기가 음의 변별도를 표시한 곳을 고치되, 되도록 노밍 룸에서 수렴하는 동안 일치도가 움직이는 것을 보면서 하십시오.
  4. 심사자를 그 라벨에 맞춰 캘리브레이션합니다. 그리고 정렬도를 숫자 하나가 아니라 사람의 신뢰도로 조건화해서 보고합니다.
  5. 판정만이 아니라 추론도 확인합니다. 심사자와 사람이 갈린 항목에서 그렇게 하십시오.

모든 단계가 YAML이고, 직접 호스팅할 수 있고, 무료입니다. 1번부터 3번까지는 LLM이 전혀 필요 없습니다.

이 중 어느 것도 그 자체로 LLM 심사자를 믿을 만하게 만들지는 않습니다. 다만 믿을 만하다는 주장을 진짜 주장으로 만들어 줍니다. 구간이 붙은 진술이고, 역시 구간이 붙은 사람의 라벨과 견준 것이며, 난이도에 대해 정직하게 말할 수 있는 항목들 위에서 한 것입니다.

“우리 심사자는 인간의 가치와 정렬되어 있다”보다 낮은 기준이고, 훨씬 쓸모 있는 기준입니다.

더 읽을거리