들어가며
머신러닝, AI 프로젝트에서는 모델 학습을 위해서 학습 데이터를 구축합니다. 이미 잘 마련된 데이터를 바로 가져다 쓰면 너무나도 편리하겠지만, 그런 해피한 상황은 잘 없는 것 같습니다. 텍스트나 이미지처럼 비정형 데이터는 특히 더 그런 것 같구요.
"Garbage in, garbage out" 머신러닝 필드에서 유명한 격언이죠. 학습 데이터의 품질이 보장되어야 모델의 성능과 신뢰도를 보장할 수 있습니다. 학습 데이터를 잘 만들려면 적절한 가이드라인이 필요합니다. 보통 모델 학습을 위해 몇 만건 씩은 데이터가 필요한데, 한 명이서 그 많은 작업을 할 수 없으니 여러 명이서 작업을 하게 되고요. 여러 명이서 작업하는데 각자의 기준을 갖고 데이터를 만들면.. 데이터 품질이 보장되었다고 하기 어렵습니다. 누가 와서 작업을 해도 동일한 데이터를 만들 수 있으려면 가이드라인이 잘 세워져 있어야 합니다.
어노테이션 가이드라인을 작성하기 위해서는 각 과제 성격에 맞는 여러 내용이 필요하겠지만.. 본 포스트에서는 어노테이션 가이드라인에 필요한 일반적인 내용을 소개하겠습니다. 저의 경험에 근거한 내용이므로 여러분의 과제에 완전히 핏하지는 않겠지만, 가이드 작성이 필요할 때 참고하시고 어노테이션 가이드는 이런 식으로 쓸 수 있구나, 하는 감을 조금이라도 잡으실 수 있다면 좋을 것 같습니다. 사실 챗지피티한테 물어보면 다 알려줄 내용이지만.. 실제로도 이렇게 작성한다~는 것도 알고가시면 좋겠습니다.
어노테이션 가이드 목차
저는 어노테이션 가이드를 크게 세 챕터로 구분했습니다. 프로젝트 소개, 과제 소개, 데이터 품질 관리 방안입니다.
- 프로젝트 소개
- 프로젝트 개요
- 어노테이션 작업 소개
- 어노테이션 공수산정
- 과제 소개
- 과제 1
- 작업 정의
- 데이터셋 소개
- 데이터셋 구축 방안
- 작업 진행 방법
- 과제 2
- 과제 3
- 과제 1
- 데이터 품질 관리 방안
- 질의사항 관리 방안
- 목표
- 관리 템플릿
- 관리 체계
- 검수 방안
- 목표
- 상세 검수 방안
- 질의사항 관리 방안
목차만 보아도 어느 정도 수준의 내용이 필요하신지 감이 오셨으리라 생각합니다. 물론 더 깊게 오류 수정과 피드백 조치 방안, 어노테이션 툴 소개 등등에 대한 소개도 할 수 있지만 프로젝트 상황에 맞게 적당한 수준에서 조절해도 무방합니다.
어노테이션 가이드 작성 내용
프로젝트 소개
프로젝트 소개에서는 이 어노테이션을 수행하는 프로젝트에 대한 개요를 소개합니다. 프로젝트 내에서 여러 어노테이션을 수행한다면, 각 작업이 무엇을 목표로 하는지 간단하게 설명합니다.
프로젝트 소개에서 추가로 공유해야 하는 내용은 공수산정입니다. 각 작업마다 데이터 모수는 얼마나 되었는지, 실제 샘플링하여 작업했던 데이터 수는 얼마인지 작성합니다. 또 작업마다 교육 - 작업 - 검수 과정에서 진행했던 데이터 건수는 얼마나 되었는지, 작업한 인력은 몇 명이었는지, 수행기간은 얼마나 되었는지도 작성합니다. 이 공수산정을 통해 이후 유사한 과제를 수행할 때 맨먼스가 얼마나 필요한지 어림잡아 추정해 볼 수 있습니다.
과제 소개
프로젝트에서 수행하는 어노테이션 작업들을 소개합니다. 각 작업마다 무엇을 목표로 하고 있는지, 주요 개념들이 무엇인지 설명합니다. 저는 자연어 처리 과제 중 NER을 수행했었는데요. NER 용 학습 데이터를 만들기 위해서 필요했던 개념들을 주로 작성했습니다. 예를 들면 작업자들이 라벨링 해야 하는 엔티티의 종류에는 무엇이 있는지, 각 엔티티의 정의가 어떻게 되는지, 엔티티에 해당하지 않는 내용은 무엇인지, 구문 단위로 라벨링하는 경우에는 어디서부터 어디까지만 정의하는지 등을 정의합니다.
이후 어노테이션의 대상이 되는 데이터를 소개합니다. 수집 경로가 무엇인지, (텍스트라면) 어떤 언어인지 정의하고요. 어노테이션 이전에 전처리가 필요했다면 어떤 전처리들을 수행했는지도 간단하게 소개합니다. 데이터셋이 어떤 구조인지, 컬럼으로 구분되는 테이블 형식이라면 각 컬럼의 정의가 어떻게 되는지, 레코드 단위가 무엇인지, 그리고 무엇보다 작업자의 이해를 도울 수 있도록 데이터 예시를 적절하게 첨부해야 합니다.
보통 분석 모수보다 우리가 어노테이션하는 데이터 수가 훨씬 적을테니, 데이터셋을 어떻게 구축하였는지도 설명해줍니다. 샘플링 시 어떤 점들을 고려했는지, 학습/검증/평가 데이터는 언제 데이터로 몇 건씩 수집했는지, 데이터를 수집한 프로세스 등을 소개합니다. 마지막으로 어노테이션을 진행한 작업 툴, 작업자마다 작업량을 배분한 방법도 설명합니다. 작업 도구를 이용해 작업을 수행하는 방법은 작업 도구의 공식 문서로 대체할 수도 있습니다.
데이터 품질 관리 방안
마지막 챕터로는 데이터 품질 관리 방안을 작성했습니다. 어노테이션을 수행하면서 발생할 수 있는 질의사항을 어떻게 관리하는지, 작업 이후에 검수는 어떻게 진행하는지에 대해 소개했습니다.
질의사항 관리 방안에서는 질의사항을 공유하기 위해 문서를 어떤 형식으로 작성했는지, 보고나 대응 절차는 어떻게 했는지, 답변(피드백)에 대한 처리는 어떻게 대응하는지 등에 대해 소개합니다. 질의사항 템플릿에서는 질문에 대한 분류, 질의 내용, 답변, 질문 발생일, 조치일 등을 작성하여 체계적으로 관리합니다.
검수는 작업 이후에 작업 내용이 가이드라인에 따라 잘 이루어졌는지를 검토하는 과정입니다. 데이터 품질을 보장하기 위해서 필수인 과정이죠. 검수는 어떤 프로세스로 진행하는지, 작업 인력과 검수 인력이 동일한 경우에는 어떻게 처리하는지, 그리고 전체 데이터를 검수하는 방안 외에 특별한 검수 방안이 있다면 추가로 소개해줍니다.
마치며
지금까지 어노테이션 가이드를 작성하는 방안을 소개하였습니다. 사실.. 실제 어노테이션을 수행하기 전에 이 가이드를 작성하기는 어렵습니다. 현장에서 어노테이션을 수행할 때는 작업자들에게 프로젝트와 과제에 대해 소개를 하고, 관리자들은 샘플 라벨링을 수행하며 빠르게 "과제 소개"에서 소개드린 내용들, 그 중에서도 실제 어노테이션과 관련된 내용들만 정의하고 공유합니다. 그렇다면 이 가이드의 쓰임은 무엇이냐.. 나중에 모델을 재학습하기 위해 제 3자가 데이터를 추가로 구축할 필요가 있을 때, 일종의 유지 보수를 위해 주로 작성되었다고 보셔도 됩니다. 물론 여유가 된다면 가급적 빠르게 이 포맷대로 작성을 하고, 작업자들에게 공유되면 더욱 좋겠죠. 다음 어노테이션 때에는 가이드를 우선 공유할 수 있길 바라며.. 포스트 마치겠습니다.
궁금한 점은 댓글로 알려주시면 제가 아는 선에서 공유 드리겠습니다..😄
'繩鋸木斷水滴石穿 > 기타' 카테고리의 다른 글
[기타] 개인 회고: 제안서를 작성하며 깨달은 3가지 (0) | 2024.06.14 |
---|---|
[후기] 5월 데이터리안 세미나: "생성형 AI와 함께하는 데이터 분석가 커리어" (1) | 2024.05.15 |
[IR] RRF(Reciprocal Rank Fusion) 설명과 파이썬 코드 (1) | 2023.12.30 |
[IR] BM25 랭킹 알고리즘 / rank_bm25 라이브러리 사용하기 (1) | 2023.12.10 |
[Tool] Excalidraw 사용법: 깔끔하고 멋진 다이어그램 툴 추천 (2) | 2023.07.16 |