Skip to content

쌍대 비교와 최선–최악 척도

평점 대신 비교 판단을 사용해야 하는 경우, 쌍대 비교와 최선-최악 척도(MaxDiff), 그리고 이를 Potato에서 설정하는 방법을 설명합니다.

사람은 안정적인 절대 점수를 매기는 데에는 서툴지만 비교는 잘합니다. 비교 어노테이션은 이 점을 활용합니다. "이것을 1~5점으로 평가하세요"라고 하는 대신 "A와 B 중 어느 것이 더 나은가요?"라고 묻습니다. 주요 형태는 두 가지로, 쌍대 비교와 최선–최악 척도입니다. 이 둘은 현대 AI의 선호 데이터를 떠받치는 근간입니다.

배경 지식은 Pairwise comparisonMaxDiff를 참고하시기 바랍니다.

쌍대 비교

두 항목을 보여주고 어느 것이 이기는지 묻습니다. 간단하고 일치도가 높으며, 인간 피드백 기반 강화학습을 위한 인간 선호 데이터를 수집할 때 쓰이는 형식입니다.

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: preference
    description: "Which response better answers the question?"
    mode: binary
    allow_tie: true
    sequential_key_binding: true

무승부를 허용하면 어노테이터가 실제로 없는 차이를 만들어내는 일을 막을 수 있습니다. 얼마나 더 나은지를 포착하려면 mode를 척도로 바꾸면 됩니다(예: "A가 훨씬 나음 … B가 훨씬 나음"). 쌍대 선호 쇼케이스는 실제로 동작하는 예시입니다.

많은 쌍대 판단은 Elo 평점 시스템이나 Bradley–Terry 모델과 같은 모델을 통해 하나의 순위로 변환할 수 있습니다.

최선–최악 척도 (MaxDiff)

작은 집합(보통 네 개 항목)을 보여주고 최선최악을 고르도록 요청합니다. 각 판단은 집합의 양 끝을 한 번에 고정하기 때문에 단일 쌍대 투표 하나보다 더 많은 정보를 담습니다.

yaml
annotation_schemes:
  - annotation_type: best_worst_scaling
    name: fluency
    description: "Pick the most and least fluent translation."
    tuple_size: 4
    best_label: "Most fluent"
    worst_label: "Least fluent"

최선–최악 척도는 단순한 선택으로부터 신뢰할 수 있고 거의 등간에 가까운 점수를 산출하며, 여러 어노테이터로부터 보정된 순위를 만드는 데 널리 쓰입니다.

평점보다 비교를 택해야 할 때

  • 구성 개념을 절대적으로 기준점에 고정하기 어렵습니다(유머, 유용성, 미적 품질).
  • 높은 일치도가 필요한데 Likert 척도가 잡음이 많습니다.
  • 모델을 학습시키거나 정렬하기 위한 선호 데이터를 구축하고 있습니다.

대가는 상대적인 정보만 얻는다는 점입니다. 절대 점수를 복원하려면 모델(Elo, Bradley–Terry)이 필요할 수 있습니다.

더 읽어보기