크라우드소싱 어노테이션의 품질 관리
주의력 검사, 골드 스탠더드, 어노테이터 간 중복, 시간 데이터를 겹쳐 적용해 품질이 낮은 어노테이션을 잡아내는 방법을, 각각에 해당하는 Potato 설정 키와 보고 내용과 함께 설명합니다.
어떤 검사도 혼자서는 모든 종류의 나쁜 어노테이션을 잡아내지 못하므로 네 가지를 겹쳐 적용하십시오. 읽지 않는 어노테이터에게는 주의력 검사, 읽고도 틀리는 어노테이터에게는 골드 스탠더드, 모호한 항목에는 중복 어노테이션, 실제로 작업했다고 보기 어려울 만큼 빨리 제출된 작업에는 시간 데이터를 씁니다. 각 검사에는 고유한 Potato 설정 키가 있고, 각각 관리자 대시보드에 따로 보고됩니다.
품질 관리는 데이터 수집 전에 가장 저렴하고 수집 후에 가장 비쌉니다. 다섯 번째 실패에서 어노테이터를 차단하는 주의력 검사는 설정하는 데 비용이 들지 않고, 그 어노테이터가 채웠을 항목을 지켜 줍니다. 같은 문제를 사후 스크립트로 발견하면 수집을 다시 해야 합니다. 아래의 관리 수단은 작동하는 시점 순으로 정리했습니다.
프로젝트 전체에 걸친 품질 관리
각 관리 수단이 잡아내는 것
네 가지 관리 수단은 서로 다른 방향으로 실패하며, 그래서 둘 이상을 함께 운영해야 합니다.
| 관리 수단 | 잡아내는 것 | 놓치는 것 |
|---|---|---|
| 주의력 검사 | 항목을 읽지 않는 어노테이터 | 지침을 잘못 이해한 꼼꼼한 어노테이터 |
| 골드 스탠더드 | 읽고도 틀리게 답하는 어노테이터 | 정답이 하나로 정해지지 않는 항목 |
| 중복과 일치도 | 모호한 항목과 레이블 | 같은 출처에 의존해서 의견이 일치하는 어노테이터 |
| 시간과 텔레메트리 | 실제로 작업했다고 보기 어려울 만큼 빨리 제출된 작업 | 정말로 쉬운 코퍼스에서의 빠른 작업 |
특히 일치도는 모든 것을 잡아내지 못합니다. 어노테이터가 모델의 사전 레이블을 검토할 때 제안을 읽지 않고 수락하면 일치도가 내려가는 것이 아니라 올라가므로, 확인 없이 승인하는 어노테이터가 이 지표에서는 가장 우수해 보입니다. 대신 무엇을 기록해야 하는지는 일치도로는 확인 없는 승인을 잡아낼 수 없다에서 다룹니다.
주의력 검사
주의력 검사는 정답이 알려진 항목으로, 정해진 간격에 따라 어노테이션 흐름에 삽입되어 어노테이터가 답하기 전에 읽고 있는지 확인합니다. Potato가 이를 삽입하고, 채점하고, 어노테이터에게 경고하고, 설정한 임계값에서 차단하므로 전체 과정이 사후 스크립트가 아니라 서버에서 실행됩니다.
빈도는 항목 하나에 걸리는 시간을 기준으로 정하십시오. 10개 항목마다 한 번의 검사면 데이터가 아닌 항목에 예산을 많이 쓰지 않으면서도 한 세션 안에서 집중력이 떨어지는 어노테이터를 잡아낼 수 있습니다. 읽지 않고 클릭만 하는 경우를 잡아내는 것은 하한값 min_response_time이며, 이보다 빠른 응답은 내용과 관계없이 실패로 처리됩니다.
attention_checks:
enabled: true
items_file: "data/attention_checks.json"
frequency: 10 # one check every 10 items
min_response_time: 3.0 # seconds; faster than this fails the check
failure_handling:
warn_threshold: 2
warn_message: "Please read items carefully before answering."
block_threshold: 5
block_message: "You have been blocked due to too many incorrect responses."항목 파일은 각 검사에 id, 어노테이터에게 보이는 텍스트, 스킴별 기대 답변을 지정합니다.
[
{
"id": "attn_001",
"text": "Please select 'Positive' for this item to verify you are reading carefully.",
"expected_answer": {
"sentiment": "positive"
}
}
]결과는 재시작 후에도 유지됩니다. Potato는 결과가 기록될 때마다 출력 디렉터리의 quality_control_results.json에 쓰고 시작할 때 다시 읽으므로, 배포를 해도 어노테이터의 실패 기록이 지워지거나 차단된 사람이 차단 해제되지 않습니다.
골드 스탠더드
골드 스탠더드는 전문가가 레이블을 붙인 항목으로, 주의력이 아니라 정확도를 측정하기 위해 흐름에 섞어 넣습니다. 기본적으로 조용히 작동하므로 결과는 관리자 대시보드로 가고 어노테이터에게는 피드백이 표시되지 않으며, 이렇게 하면 측정 대상인 행동을 바꾸지 않고 품질을 측정할 수 있습니다. 선별이 아니라 교육이 목적이라면 피드백을 켜십시오.
골드 항목은 frequency개 항목마다 삽입되므로, 이 설정은 측정의 정밀도와 이미 레이블이 있는 항목에 들어가는 예산 비율 사이의 절충입니다. 20개 중 1개로 설정하면 500개 항목 작업 한 번에 약 25개 항목이 채점됩니다.
gold_standards:
enabled: true
items_file: "data/gold_standards.json"
mode: mixed # mixed injects into the stream; this is the implemented mode
frequency: 20
accuracy:
min_threshold: 0.7 # annotators below this are named in the dashboard
evaluation_count: 10 # evaluate once an annotator has seen 10 gold items
feedback:
show_correct_answer: false
show_explanation: false항목 파일에는 스킴별 정답 어노테이션과, 피드백을 켠 경우를 위한 선택적 설명이 들어갑니다.
[
{
"id": "gold_001",
"text": "The service was absolutely terrible and I will never return.",
"gold_label": {
"sentiment": "negative"
},
"explanation": "Strong negative language indicates negative sentiment.",
"difficulty": "easy"
}
]골드 항목은 전문가에게 모호하지 않은 것을 고르십시오. 팀 내부에서도 의견이 갈리는 항목은 어노테이터가 아니라 지침을 측정하게 되며, 유능한 어노테이터를 임계값 아래로 밀어냅니다. Potato는 gold_standards.auto_promote를 통해 어노테이터들의 판단이 만장일치로 일치한 항목을 골드로 승격할 수도 있어서, 전문가의 추가 레이블링 없이 골드 항목을 늘릴 수 있습니다.
어노테이터별 정확도는 /admin/api/quality_control에 표시되며, 여기서는 전체 합계와 함께 configured_correct와 configured_total을 보고합니다. 어노테이터끼리 비교할 때는 설정된 수치를 인용하십시오. 설정된 골드 항목은 모두에게 같지만, 자동 승격된 골드 항목은 각 어노테이터가 언제 참여했는지에 따라 달라지기 때문입니다.
중복과 일치도
항목당 여러 명의 어노테이터를 두는 것은 나쁜 어노테이터가 아니라 모호한 항목을 찾아내는 관리 수단입니다. 항목당 세 명이 흔히 쓰는 기본값인데, 세 명이면 집계를 위한 다수결이 가능하고 계수를 계산할 만큼 중복도 충분하기 때문입니다. 목표 인원을 정하고 보고를 켜십시오.
num_annotators_per_item: 3
agreement_metrics:
enabled: true
min_overlap: 2
refresh_interval: 60그러면 어노테이션이 들어오는 대로 Krippendorff의 알파가 스킴별로 관리자 대시보드에 표시됩니다. 어떤 계수를 보고해야 하는지, 임계값이 무엇을 의미하는지는 어노테이터 간 일치도 측정에서 다룹니다.
시간과 텔레메트리
Potato는 무엇을 답했는지뿐 아니라 각 항목에 시간이 얼마나 걸렸는지도 기록합니다. 각 인스턴스에는 behavioral_data 객체가 있으며, 그 안의 total_time_ms가 해당 항목에 들인 시간입니다. 이와 함께 상호작용 이벤트, 어노테이션 변경 기록, AI 제안의 수명 주기도 기록됩니다. 이 필드가 있어야 코퍼스가 쉬워서 빠른 어노테이터와 보지 않아서 빠른 어노테이터를 구분할 수 있습니다.
def flag_fast_annotations(export, min_seconds=2.0):
"""Instances submitted faster than a floor, from an exported annotation file."""
flagged = []
for instance in export:
bd = instance.get("behavioral_data") or {}
seconds = bd.get("total_time_ms", 0) / 1000
if seconds < min_seconds:
flagged.append((instance["id"], seconds))
return flagged시간은 고정된 초 단위 기준이 아니라 프로젝트 내부의 분포로 읽으십시오. 어려운 코퍼스에서 확인 없는 승인을 잡아내는 임계값이 쉬운 코퍼스에서는 유능함을 잡아내기 때문입니다. 그리기 어노테이션의 경우 annotation_telemetry가 같은 개념을 더 세밀한 수준에서 기록합니다. 가장 강한 신호는 AI 제안이 나타난 뒤 어노테이터가 이를 수락하기까지의 지연 시간입니다. 필드와 그 필드로 만들어지는 플래그는 행동 추적과 그리기 텔레메트리에서 다룹니다.
네 가지 관리 수단을 모두 담은 설정
네 개의 키는 서로 독립적이므로 프로젝트에서 하나씩 도입할 수 있습니다. 모두 합치면 다음과 같습니다.
annotation_task_name: "Sentiment Annotation with Quality Control"
task_description: "Classify the sentiment of short texts."
data_files:
- data/items.json
item_properties:
id_key: id
text_key: text
annotation_schemes:
- annotation_type: radio
name: sentiment
description: "What is the sentiment of this text?"
labels:
- Positive
- Negative
- Neutral
num_annotators_per_item: 3
attention_checks:
enabled: true
items_file: data/attention_checks.json
frequency: 15
min_response_time: 3.0
failure_handling:
warn_threshold: 2
block_threshold: 5
gold_standards:
enabled: true
items_file: data/gold_standards.json
mode: mixed
frequency: 25
accuracy:
min_threshold: 0.7
evaluation_count: 10
agreement_metrics:
enabled: true
min_overlap: 2
refresh_interval: 60
output_annotation_dir: annotation_output임계값은 느슨하게 시작하십시오. 차단 임계값 5와 정확도 하한 0.7이면 무엇을 실패로 볼지 정하기 전에 어노테이터 집단의 실제 분포를 볼 수 있고, 나중에 강화하는 데는 비용이 들지 않습니다. 첫날부터 엄격하게 설정하면 아직 파일럿으로 검증하지 않은 지침을 근거로 어노테이터를 내보내게 됩니다.
플랫폼 수준의 관리 수단
크라우드소싱 플랫폼은 누구든 작업에 도달하기 전에 인력 풀을 선별합니다. 이는 위의 검사와는 다른 역할이며, 그 검사들과 함께 할 가치가 있습니다.
- 사전 선별. Prolific과 MTurk 모두 승인율과 이전 완료 작업을 기준으로 필터링하며, 둘 다 지역 필터를 지원합니다. MTurk에서는 승인율 97% 이상, 승인된 HIT 500개 이상이 흔히 쓰는 초기 필터입니다.
- 자격 테스트. MTurk는 사용자 정의 자격을 지원하므로 짧은 테스트로 본 작업에 대한 접근을 제한할 수 있습니다.
- 지급 전 검토. 작업에 문제가 없으면 빨리 승인하십시오. 느린 승인은 어노테이터가 가장 많이 불평하는 부분이기 때문입니다. 거절은 플랫폼에서 작업자의 평판을 해치므로 신중하게 사용하십시오.
플랫폼의 사전 선별과 Potato 자체 검사는 서로 보완합니다. 사전 선별은 누가 작업에 도달하는지를 정하고, 주의력 검사와 골드 스탠더드는 도달한 사람이 그곳에서 무엇을 했는지를 측정합니다.
무엇이든 수집하기 전에
수집이 시작된 뒤에는 되돌리기 어려운 결정이 두 가지 있으므로 먼저 내리십시오. 우선 내보내기에 어떤 필드가 필요한지 정하십시오. 나중에 계획한 시간 분석을 하려면 실행 중에 behavioral_data가 기록되어 있어야 하기 때문입니다. 그리고 모든 관리 수단을 켠 상태로 수십 개 항목의 파일럿을 실행하십시오. 주의력 검사가 모호하거나 골드 항목에 이견이 있다는 사실은 파일럿에서 드러나며, 그 대가는 데이터셋 하나가 아니라 오후 한나절입니다.
더 읽어보기
- 골드 스탠더드와 주의력 검사
- 품질 관리 기능 레퍼런스
- 본 작업 전에 어노테이터를 온보딩하기 위한 교육 단계
- 효과적인 어노테이션 지침 작성하기
- Prolific과 MTurk에서 연구 진행하기
- Potato의 품질 관리 원본 문서