Skip to content
Guides5 min read

3D 객체, 시간 세그먼트, 에이전트 트레이스의 주석자 간 일치도

구조화된 주석을 레이블 이름으로 줄이면 모든 주석자가 일치하는 것으로 나옵니다. 3D 상자와 세그먼트는 IoU로 매칭하고, 에이전트 트레이스는 단계별로 점수를 매기세요.

Potato Team

구조화된 주석의 일치도를 측정하려면 구조 자체를 비교하세요. 각 주석자의 3D 상자나 시간 세그먼트를 상대의 것과 IoU로 매칭하고, 매칭되지 않은 객체는 불일치로 세며, 에이전트 트레이스는 단계별로 점수를 매겨 모든 단계가 kappa나 alpha의 단위가 되게 하세요.

주석자 간 일치도는 항목마다 레이블이 하나일 때는 정의하기 쉽습니다. 그런데 요즘의 많은 작업은 항목에 여러 개의 대상을 줍니다. 라이다 스윕에서 자동차를 둘러싼 직육면체, 각 화자가 말하는 구간을 표시한 세그먼트, 에이전트가 거친 모든 단계에 대한 판정 같은 것들입니다. 항목당 레이블 하나를 전제로 만든 척도는 이런 구조를 비교할 수 있는 무언가로 줄여야 하는데, 가장 쉬운 방법인 레이블 이름으로 줄이기를 쓰면 모든 주석자 쌍이 일치하는 것으로 나옵니다.

레이블 이름에서 나오는 완벽한 일치

이 방식은 레이블 이름만 남기고 나머지는 모두 버립니다. 라이다 스윕에 각자 "car" 레이블이 붙은 상자를 세 개씩 그린 두 주석자는 둘 다 "car"로 줄어들고, 상자 위치가 서로 달라도 완벽하게 일치합니다.

Potato의 스키마별 일치도 경로인 /admin/api/agreement는 버전 2.11 이전에 구조화된 스키마를 이렇게 처리했고, 에이전트 트레이스, 세그먼트, 영역, 3D 객체에서 모든 주석자 쌍이 완벽하게 일치하는 것으로 나왔습니다. 어려운 공간 또는 시간 작업에서 완벽한 점수가 나왔다면 대개 척도가 구조를 잃어버렸다는 뜻입니다. 2.11에서 이 경로는 더 이상 구조화된 스키마를 보고하지 않고, 구조를 비교하는 /admin/iaa의 전체 일치도 보고서를 안내합니다.

3D 객체와 시간 세그먼트 매칭

객체 집합의 일치도는 매칭에서 시작합니다. 한 주석자의 각 객체는 겹침 척도를 이용해 상대 주석자의 객체 최대 하나와 짝지어지며, 짝은 임계값을 넘을 때만 같은 객체로 셉니다. 시간 세그먼트는 겹친 구간의 길이를 합집합의 길이로 나눈 시간 IoU(intersection over union)를 쓰고, 3D 객체는 같은 비율을 부피로 계산한 3D IoU를 씁니다. Potato는 세그먼트를 0.5, 3D 객체를 0.25에서 매칭합니다. 작은 어긋남이 2차원보다 3차원에서 IoU를 더 많이 깎기 때문입니다. 각 축을 따라 크기의 10%만큼 밀린 상자는 2D IoU가 약 0.68로 유지되지만 3D IoU는 약 0.57밖에 되지 않습니다.

매칭이 끝나면 매칭된 각 쌍은 자신의 IoU를, 레이블이 다른 매칭 쌍은 IoU의 절반을 보태고, 양쪽 어디에서든 매칭되지 않은 객체는 0을 보탭니다. 항목의 일치도는 이 합계를 객체 수(매칭된 쌍은 한 번만 셈)로 나눈 값입니다. 따라서 객체의 절반을 놓친 주석자는 표시한 객체가 완벽하더라도 낮은 점수를 받고, 둘 다 아무것도 표시하지 않은 두 주석자는 일치합니다.

/admin/iaa는 3D 객체(spatial_annotation)와, temporal_grounding 및 tiered_annotation의 시간 세그먼트에 대해 스키마마다 두 가지 수치를 보고합니다.

  • mean_agreement: 주석자가 두 명 이상인 모든 항목에서, 모든 주석자 쌍에 걸친 항목 수준 점수의 평균
  • mean_object_count_diff: 두 주석자가 표시한 객체 수의 평균 차이

개수 차이는 집합이 불일치하는 두 가지 방식을 구별해 줍니다. 일치도가 낮은데 개수 차이가 0에 가깝다면, 사람들이 같은 객체를 찾았지만 다른 위치에 놓았다는 뜻입니다. 개수 차이가 크다면 한 주석자가 다른 주석자가 놓친 객체를 찾는다는 뜻이며, 이는 가이드라인이 무엇을 객체로 세는지를 가리킵니다.

두 수치 모두 우연 보정을 하지 않습니다. 공간 일치도의 우연 기준선에는 주석자들이 무작위로 불일치할 때 객체가 어디에 놓이는지에 대한 모델이 필요한데, 도형에 대한 일치도에서 설명하듯 Potato는 2D 상자와 다각형에 대해서만 그런 모델을 만듭니다. 시간 세그먼트에서는 같은 접근이 통하지 않습니다. 클립마다 길이가 다르면 다른 클립의 세그먼트는 의미 있는 무작위 비교 대상이 아니기 때문이며, 이는 시간에 대한 일치도에서 설명합니다. 이 수치들은 객체를 놓는 어려움이 일정한, 같은 작업의 파일럿끼리 비교하세요.

2.11에서 경계 사례 하나가 바뀌었습니다. 길이가 0인 동일한 세그먼트 두 개, 즉 두 주석자가 같은 시점에 표시한 순간은 IoU가 0을 0으로 나눈 값이 됩니다. 예전에는 완전한 불일치로 셌지만, 이제는 일치하는 것으로 셉니다.

에이전트 트레이스의 단계 수준 일치도

에이전트 트레이스는 단계의 연속이며, 트레이스 스키마(process_reward, trajectory_eval, tool_call_review, failure_attribution, gui_trajectory)는 각 단계에 레이블을 요구합니다. 트레이스를 레이블 집합으로 채점하면 레이블 이름 문제가 되풀이되고, 전체 판정으로 채점하면 단계 정보가 버려집니다.

/admin/iaa는 각 트레이스의 각 단계를 별개의 단위로 다룹니다. 트레이스 12의 4단계를 평가한 두 주석자는 쌍 하나를 이루며, 명목형 Krippendorff의 alpha와 Cohen의 kappa가 백분율 일치도와 함께 이런 모든 단위에 걸쳐 계산됩니다. 앞의 집합 척도와 달리 두 계수는 모두 우연 보정을 하므로, 과정 보상 작업에서 단계 수준 alpha 0.6은 다른 범주형 작업의 alpha와 같은 척도로 읽힙니다. 레이블링 엔진도 LLM 판정자를 사람과 비교해 채점할 때 단계 레이블을 같은 방식으로 파싱하며, 그 점수는 둘이 함께 레이블을 단 단계 중 서로 다르게 레이블을 단 단계의 비율입니다.

항목마다 주석자 두 명 배정하기

/admin/iaa에는 설정이 필요 없습니다. 주석자 두 명 이상이 답한 항목을 모두 채점하므로, 할 일은 배정에 있습니다. 모든 항목에 주석자 두 명을 배정하려면 항목당 주석자 수를 2로 정하고 주석이 가장 적은 항목부터 나눠 주세요.

yaml
assignment_strategy: least_annotated
num_annotators_per_item: 2

항목당 주석자 두 명은 이 보고서에 필요한 최소한입니다. 중복 집합이 작으면 특이한 트레이스나 라이다 스윕 하나가 평균을 크게 움직여 결론이 바뀔 수 있으므로, 중복 배정은 주석을 시작한 뒤가 아니라 시작하기 전에 계획하세요. 이전부터 있던 agreement_metrics 블록은 대시보드의 스키마별 수치를 설정하며, 2.11부터 이 수치는 이런 스키마를 건너뛰고 /admin/iaa를 안내합니다.

파일럿 회차 사이의 일치도와 개수 차이

mean_agreement는 개수 차이, 그리고 /admin/iaa가 그 옆에 보고하는 쌍의 수와 함께 읽으세요. 파일럿 회차 사이에 개수 차이는 안정적인데 일치도가 떨어진다면 위치 문제이므로, 상자를 얼마나 꼭 맞게 그릴지나 세그먼트 경계에 관한 가이드라인을 손봐야 합니다. 개수 차이가 커진다면 무엇을 객체나 사건으로 세는지가 문제입니다. 에이전트 트레이스에서는 단계 수준 alpha를, 같은 주석자들이 같은 연구의 더 단순한 범주형 질문에서 얻은 alpha와 비교하세요. 그러면 단계 레이블이 어려운 것인지 주석자를 믿을 수 없는 것인지 가려내는 데 도움이 됩니다.

더 읽어보기