데이터 라벨링 101
최근 기계 학습에 관한 관심이 뜨겁습니다. 이 기술은 우리에게 영상을 추천해주고, 자동차를 사람을 대신해 운전하며 시장을 분석할 수 있도록 통찰력을 전합니다. 기계 학습을 위해선 충분한 데이터가 필요하다는 것은 이미 잘 알려져 있으며, 데이터를 위해 거의 모든 산업에서 "디지털 전환(Digital Transformation)"으로 모든 정보를 디지털화 합니다. 이러한 시대적 흐름으로 데이터는 이미 너무나 풍부합니다.
라벨링이란?
기계학습의 방법론 중 우리가 흔히 접하는 지도학습은 알고리즘에게 무엇이 정답인지, 또는 정답이 아닌지 알려주어야 합니다. 데이터는 아주 많지만, 데이터가 부족합니다. 이상한 말 같겠지만, 실제로 정답을 알고 있는 데이터는 많지 않습니다. 예를 들어 사진에서 개가 있는지 없는지 분류하는 모델을 만든다고 가정해봅시다. 인터넷에는 수천, 수백만 장의 사진이 있습니다. 하지만 기계는 사진에 개가 있는지 없는지 알 수 없습니다.
위와 같은 사진에서 기계에 무엇이 개이고 개가 아닌지 정확하게 알려주어야 합니다. 이렇게 직접 데이터에 정답을 작성하는 것을 데이터 라벨링(Data Labeling) 혹은 데이터 어노테이션(Data Annotation) 이라고 합니다.
데이터를 라벨링하는 방법은 간단합니다. 위 “Chihuahua or Muffin?” 그림에서처럼 그림을 보고 예/아니요를 체크하면 됩니다. 문제는 한 두 장이 아닌 "충분한" 양의 사진을 라벨링해야 한다는 데 있습니다.
예를 들어 reCAPTCHA 서비스는 책을 디지털화하기 위해 이미지를 텍스트로 변환하는 라벨링 데이터를 모으기 위해 고안되었습니다. 다양한 곳에서 reCAPTCHA를 접하는 사람들이 이미지를 보고 그 정답을 라벨링 했습니다. 이렇게 수집된 방대한 텍스트 라벨링 데이터는 오래된 고서를 디지털화하는 데 활용될 모델 개발에 기여하게 됩니다.
이처럼 데이터를 라벨링하는 것은 대부분의 기계 학습 프로젝트의 큰 숙제입니다. 기계 학습 프로젝트에서 무려 25% 해당하는 시간을 데이터 라벨링에 사용합니다.
Global Market Insights에서는 데이터 라벨링 시장만 2019년 $700M의 규모로 추정되며, 2029년에는 $5.5B로 성장할 것이라 예측하고 있습니다. [1]
학습을 위한 데이터 라벨링
지도 학습 모델을 운영하기 위해선 일반적으론 위와 같은 작업 흐름을 따릅니다. 웹 서버에서 해커의 공격을 탐지하는 모델을 개발한다고 가정해보겠습니다. 위 그림에서 데이터는 웹 서버들에 기록된 시스템 로그들일 것입니다.
가장 먼저 "1. Data Identification" 단계에서 위 시스템 로그들이 어떻게 생겼는지, 로그는 어떤 형태로 남게 되는지 파악하게 됩니다. "2. Data Labeling” 과정에서 로그들이 공격인지 아닌지 사람이 체크합니다. 이후 데이터를 모아 EDA ( Exploratory Data Analysis ) 과정을 거쳐 데이터를 정제할 방식을 연구합니다. 그 뒤 데이터에 맞게 알고리즘을 고안하고, 학습시키고, 튜닝하는 과정을 반복합니다. 데이터 라벨링의 목적은 기본적으로 학습할 수 있도록 하는 것입니다.
모델 운영을 위한 데이터 라벨링
모델이 만들어지면 "6. ML Operationlization" 과정을 통해 실제 애플리케이션에서 동작 가능한 형태로 배포됩니다. 모델배포는 앞선 "모델 서빙이란?" 포스트에 설명되어 있습니다. 배포된 모델은 실시간 로그들을 입력 받아 공격인지 아닌지 판단하게 됩니다.
모델의 성능을 관찰하기 위해 운영된 시간 동안 모델이 예측했던 값, 그리고 실제 값이 필요합니다. 성능이 좋지 않으면 모델을 재학습, 알고리즘 교체, Feature 탐색 등 대응이 필요합니다.
"예 or 아니요”와 같이 Binary Classification 문제라면, 좌측 그림과 같이 Confusion Matrix 를 만들어 성능을 측정할 수 있습니다. 예를 들어 Precision 을 계산한다면 TP / (TP + FP ) 로, 모델이 "예" 라고 대답한 것이 실제로 "예"였는지 사람이 라벨링해야 합니다.
위 그림과 같이 모델을 운영하게 되면 운영 데이터와 예측값이 축적됩니다. 라벨링을 하지 않는다면, 모델이 제대로 예측한 것인지 아닌지 알 수 없습니다. 라벨러들이 진짜 정답을 알려주어야 모델의 진짜 현재 성능이 계산됩니다. 이를 위한 테스트 셋 운영 역시 상당히 까다로운 문제입니다.
라벨링 도구
그렇다면 상당한 양의 데이터의 라벨링은 어떻게 해야 할까요? 소수의 인력으로 할 수 있는 양이 아니므로, 체계적인 절차와 적지 않은 인건비가 필요합니다. 효율적으로 할 방법들은 없을까요?
A. 아웃소싱
가장 간단한 방법은 라벨링 할 데이터를 모아 특정 업체가 담당하는 것입니다. 이러한 업체는 국내뿐 아니라 국외에 큰 규모의 시장이 형성되어있습니다. 이 경우 데이터의 보안, 라벨링 퀄리티와 같은 문제들을 충분히 고려해야 합니다.
비슷한 방식으로 크라우드 소싱이 있습니다. 크라우드 소싱 업체에 라벨링 업무를 위탁하면, 크라우드 소싱 업체에서 업무를 수행할 참여자들을 공개적으로 모집하고 보상을 제공하는 형태입니다.
B. 라벨링 시스템 구축
AWS의 Ground Truth와 Augmented AI가 대표적입니다. Ground Truth 콘솔을 통해 라벨링 워크플로를 활용하여 사용자들에게 라벨링을 할 수 있는 환경을 제공합니다. 사용 가능한 라벨링 작업은 3D 포인트 클라우드, 비디오, 이미지, 텍스트가 가능합니다. 위 Workflow에서 설명한 것처럼 학습을 위해 라벨링을 여러 라벨러에게 분배해주는 서비스입니다.
모델을 운영할 때에도 모델이 예측했던 값들의 실제 값을 라벨링해야 합니다. 이 경우 Ground Truth 를 사용할 수도 있으나, Augmented AI 를 사용하면 라벨링 해야 할 값들을 줄일 수 있습니다. 모델이 "예/아니오"에 어느 정도의 확신을 가졌는지 살펴본 뒤, 높은 확신이 있었다면 그 값으로 라벨링을 하고 낮다면 사람이 검수하는 방식입니다.
AWS 서비스를 활용하여 라벨링 시스템을 직접 구축하기 어렵다면 제품을 구입하여 사용할 수 있습니다. 그 중 하나로 Superb AI 이 있습니다.
이 제품은 학습 데이터의 관리 기능을 제공합니다. 각종 데이터 소스로부터 중앙의 학습 데이터 저장소에 주기적으로 적재합니다. 적재된 데이터는 라벨링이 없으므로 위 그림과 같은 라벨링 인터페이스를 제공합니다. 이전 “Feature Store란?" 글에서 설명했듯, feature store는 여러 곳에 흩어진 데이터를 학습할 수 있는 형태로 저장합니다. Feature store 기능과 학습 데이터에 라벨링 기능이 합쳐진 것이 이 제품이라 볼 수 있습니다.
모델 성능을 예측하는 모델?
전술했듯, 운영 중인 모델의 성능을 측정하기 위해서는 운영 데이터의 라벨이 필요합니다. 모든 기계 학습 문제는 아니지만, Classification 문제에 대해서는 운영 데이터의 라벨이 없더라도 정확도를 추측할 수 있는 방법에 관한 연구가 진행되고 있습니다. 아직 제품으로 만들어진 것은 없습니다.
ICML 2020 에서 발표된 "Not Your Grandfathers Test Set: Reducing Labeling Effort for Testing[2]" 에 대해서 간략하게 요약해보겠습니다.
아이디어는 Performance Predictor가 라벨링된 테스트 셋과 라벨링 하지 않은 Production test set과의 통계적 차이를 사용하여 정확도를 예측하는 것입니다. 자세한 내용은 링크를 참고하시기 바랍니다.
글을 마치며
우리는 데이터의 홍수 속에서 살고 있습니다. 데이터는 넘쳐나지만, 라벨링은 사람이 직접 할 수 밖에 없습니다. 라벨링의 주된 목적은 학습할 데이터를 만들기 위함입니다. 하지만 모델의 성능을 관찰하기 위해서는 라벨링을 계속 해야만 합니다. 라벨링의 방식에는 위탁 업체와 계약하거나, 내부에 시스템을 구축하여 라벨링 팀을 구성하는 것의 두 가지가 있습니다. 이러한 방법은 비용이 많이 들기 때문에, 모델 성능을 예측하는 모델에 대한 연구도 진행되고 있습니다.
XBrain에서는 데이터 라벨링을 비롯해 실제 모델을 운영할 때에만 파악할 수 있는 현실적인 이슈들을 겪으며 이를 위한 해결책을 모색하고 있습니다.
채용 문의: apply@xbrain.team
채용 안내: https://www.notion.so/AI-d6fd017dac5d472185d5634ef75083bc
Reference
[1] https://www.gminsights.com/industry-analysis/data-annotation-tools-market
[2] Taskazan, Begum, et al. “Not Your Grandfathers Test Set: Reducing Labeling Effort for Testing.” arXiv preprint arXiv:2007.05499 (2020).