머신러닝을 위한 효율적 데이터 레이블링 (인간 중심 AI를 위한 능동학습과 어노테이션)

머신러닝을 위한 효율적 데이터 레이블링 (인간 중심 AI를 위한 능동학습과 어노테이션)

$41.31
Description
알고리듬 중심의 머신러닝 시대에서 데이터 중심의 머신러닝 시대로의 전환을 알리는 책이다. 머신러닝 알고리듬에 대한 상세한 설명보다는 데이터 관점에서 머신러닝 모델의 성능을 향상시키기 위해 취해야 하는 어노테이션 전략과 방법론을 광범위하게 다룬다.
다양한 샘플링 기법과 프로세스를 알고리듬 유형에 따라 소개하며, 효율적인 데이터 레이블링을 위한 사용자 인터페이스 및 조직의 관점을 저자의 경험에 비추어 제시한다. 적절한 데이터를 확보해 머신러닝 문제를 풀고자 하는 개인이나 기업에게 더없이 좋은 길잡이가 될 것이다.
저자

로버트 (먼로) 모나크

(Robert (Munro) Monarch)
사람과 기계의 지능을 결합하는 분야의 전문가로 현재 미국 샌프란시스코에서 살며 Apple에서 일하고 있다. 시에라리온, 아이티, Amazon(기업), 런던, 시드니를 거쳤다. 스타트업에서부터 UN에 이르기까지 다양한 조직에서 일한 경험이 있다. 이디본(Idibon)의 CEO이자 설립자였으며, 피규어 에잇(Figure Eight)의 CTO였다. AWS의 첫 자연어 처리와 기계 번역 서비스를 이끌었다.

목차

1부. 첫걸음

1장. 인간 참여 머신러닝 소개
1.1 인간 참여 머신러닝의 기본 원리
1.2 어노테이션에 대한 소개
1.2.1 간단한 어노테이션과 복잡한 어노테이션 전략
1.2.2 데이터 과학 지식의 간극 메우기
1.2.3 왜 수작업 어노테이션의 품질 확보가 어려울까?
1.3 학습 데이터 생성을 위해 속도는 향상시키고 비용은 줄이는 능동학습 소개
1.3.1 세 가지 일반적인 능동학습 샘플링 전략: 불확실성, 다양성, 임의성
1.3.2 평가 데이터의 랜덤 선택은 무얼 말하는 것일까?
1.3.3 언제 능동학습을 사용해야 할까
1.4 머신러닝과 인간 - 컴퓨터 상호작용
1.4.1 사용자 인터페이스: 어떻게 학습 데이터를 생성할까?
1.4.2 프라이밍: 무엇이 사람의 인지에 영향을 줄까?
1.4.3 머신러닝 예측값을 평가하면서 레이블을 생성하는 방법의 장단점
1.4.4 어노테이션을 위한 인터페이스 설계의 기본 원리
1.5 머신러닝의 보조를 받는 사람 vs 사람의 보조를 받는 머신러닝
1.6 전이학습으로 모델 시작하기
1.6.1 컴퓨터 비전 분야의 전이학습
1.6.2 자연어 처리 분야에서의 전이학습
1.7 이 책에서 배울 수 있는 것들
요약


2장. 인간 참여 머신러닝 시작하기
2.1 임시적인 방법(핵티브 학습)을 넘어서: 여러분의 첫 번째 능동학습 알고리듬
2.2 첫 번째 시스템의 아키텍처
2.3 능동학습을 위한 모델 예측값과 데이터 해석
2.3.1 신뢰도 순위
2.3.2 아웃라이어 찾아내기
2.3.3 이터레이션을 통해 기대하는 것들
2.4 수작업 레이블링을 위한 사용자 인터페이스 만들기
2.4.1 텍스트 레이블링을 위한 간단한 인터페이스
2.4.2 머신러닝 데이터 관리하기
2.5 첫 번째 인간 참여 머신러닝 시스템 배포하기
2.5.1 항상 평가 데이터를 먼저 선택하라
2.5.2 모든 데이터 포인트가 기회를 가진다
2.5.3 데이터에 따라 알맞은 전략 선택하기
2.5.4 모델을 재학습시키고 반복하기
요약


2부. 능동학습

3장. 불확실성 샘플링
3.1 머신러닝 모델의 불확실성에 대한 해석
3.1.1 왜 모델의 불확실성을 봐야 할까?
3.1.2 소프트맥스와 확률분포
3.1.3 능동학습의 성공 해석
3.2 불확실성 샘플링 알고리듬
3.2.1 최소 신뢰도 샘플링
3.2.2 신뢰도 마진 샘플링
3.2.3 비율 샘플링
3.2.4 엔트로피(분류 엔트로피)
3.2.5 엔트로피 심층 분석
3.3 여러 종류의 모델이 혼동되는 경우의 식별
3.3.1 로지스틱 회귀 및 MaxEnt 모델을 사용한 불확실성 샘플링
3.3.2 SVM을 사용한 불확실성 샘플링
3.3.3 베이지안 모델을 사용한 불확실성 샘플링
3.3.4 의사 결정 트리와 랜덤 포레스트를 사용한 불확실성 샘플링
3.4 여러 예측에 대한 불확실성 측정
3.4.1 앙상블 모델을 사용한 불확실성 샘플링
3.4.2 위원회 질의와 드롭아웃
3.4.3 우발적 불확실성과 인식적 불확실성의 차이
3.4.4 다중 레이블 및 연속 값 분류
3.5 수작업 검토를 위한 적절한 항목 수 선택
3.5.1 제한된 예산에서의 불확실성 샘플링
3.5.2 제한된 시간에서의 불확실성 샘플링
3.5.3 시간이나 예산이 제한되지 않은 경우 언제 중지할까?
3.6 능동학습의 성공 여부 평가
3.6.1 새로운 테스트 데이터가 필요할까?
3.6.2 새로운 검증 데이터가 필요할까?
3.7 불확실성 샘플링 치트시트
3.8 더 읽을 거리
3.8.1 최소 신뢰도 샘플링에 대한 더 읽을 거리
3.8.2 신뢰도 마진 샘플링에 대한 더 읽을 거리
3.8.3 신뢰도 비율 샘플링에 대한 더 읽을 거리
3.8.4 엔트로피 기반 샘플링을 위한 더 읽을 거리
3.8.5 다른 머신러닝 모델에 대한 더 읽을 거리
3.8.6 앙상블 기반의 불확실성 샘플링을 위한 더 읽을 거리
요약


4장. 다양성 샘플링
4.1 무엇을 모르는지 알아내기: 모델의 지식 속 틈을 찾아내기
4.1.1 다양성 샘플링을 위한 예제 데이터
4.1.2 다양성 샘플링을 위해 신경망 모델 해석하기
4.1.3 PyTorch의 은닉층에서 정보 추출하기
4.2 모델 기반의 아웃라이어 샘플링
4.2.1 활성화 값을 순위화하기 위해 검증 데이터 사용하기
4.2.2 모델 기반의 아웃라이어를 계산하려면 어느 층을 사용해야 할까?
4.2.3 모델 기반 아웃라이어의 한계
4.3 클러스터 기반의 샘플링
4.3.1 클러스터의 구성원, 중심체, 아웃라이어
4.3.2 우주 속의 클러스터링 알고리듬
4.3.3 코사인 유사도로 k-평균 클러스터링하기
4.3.4 임베딩 또는 PCA로 특성 차원 줄이기
4.3.5 그밖의 클러스터링 알고리듬
4.4 대표 샘플링
4.4.1 대표 샘플링은 단독으로는 거의 사용되지 않는다
4.4.2 단순 대표 샘플링
4.4.3 적응형 대표 샘플링
4.5 실세계 다양성을 위한 샘플링
4.5.1 학습 데이터 다양성의 공통적인 문제
4.5.2 인구통계학적 다양성 확보를 위한 계층화 샘플링
4.5.3 표현된 것과 대표된 것 중 어느 것이 중요한가?
4.5.4 인구통계당 정확도
4.5.5 실세계 다양성을 위한 샘플링의 제약들
4.6 다양한 유형의 모델로 다양성 샘플링하기
4.6.1 다양한 유형의 모델로 모델 기반의 아웃라이어 찾기
4.6.2 다양한 유형의 모델로 클러스터링하기
4.6.3 다른 종류의 모델로 대표 샘플링하기
4.6.4 다른 종류의 모델로 실세계 다양성 샘플링하기
4.7 다양성 샘플링에 대한 치트시트
4.8 더 읽을 거리
4.8.1 모델 기반 아웃라이어에 대한 더 읽을 거리
4.8.2 클러스터 기반 샘플링에 대한 더 읽을 거리
4.8.3 대표 샘플링에 대한 더 읽을 거리
4.8.4 실세계 다양성 샘플링에 대한 더 읽을 거리
요약


5장. 고급 능동학습
5.1 불확실성 샘플링과 다양성 샘플링 기술의 결합
5.1.1 클러스터 기반 샘플링을 적용한 최소 신뢰도 샘플링
5.1.2 모델 기반 아웃라이어를 이용한 불확실성 샘플링
5.1.3 모델 기반 아웃라이어와 클러스터링을 사용한 불확실성 샘플링
5.1.4 대표 샘플링과 클러스터 기반 샘플링
5.1.5 최상위 엔트로피 클러스터로부터의 샘플링
5.1.6 능동학습 전략의 다른 조합들
5.1.7 능동학습 점수의 결합
5.1.8 예상 오류 감소 샘플링
5.2 불확실성 샘플링을 위한 능동 전이학습
5.2.1 모델 자체의 오류를 예측하는 모델 만들기
5.2.2 능동 전이학습의 구현
5.2.3 더 많은 층의 능동 전이학습
5.2.4 능동 전이학습의 장단점
5.3 대표 샘플링에 능동 전이학습 적용하기
5.3.1 알지 못하는 것이 무엇인지 예측하도록 모델 만들기
5.3.2 적응형 대표 샘플링을 위한 능동 전이학습
5.3.3 대표 샘플링을 위한 능동 전이학습의 장단점
5.4 적응형 샘플링을 위한 능동 전이학습
5.4.1 불확실성 예측을 통해 불확실성 샘플링을 적응형으로 만들기
5.4.2 ATLAS의 장단점
5.5 능동학습용 고급 치트시트
5.6 능동 전이학습을 위한 더 읽을 거리
요약


6장. 여러 머신러닝 작업에 능동학습 적용하기
6.1 객체 검출에 능동학습 적용하기
6.1.1 객체 검출에 대한 정확도: 레이블 신뢰도와 위치 지정
6.1.2 객체 검출에서 레이블 신뢰도와 위치 지정을 위한 불확실성 샘플링하기
6.1.3 객체 검출에서 레이블 신뢰도와 위치 지정을 위한 다양성 샘플링하기
6.1.4 객체 검출을 위한 능동 전이학습
6.1.5 지속적인 편향을 위해 낮은 객체 검출 임계치 설정하기
6.1.6 예측값과 유사한 대표 추출 샘플링을 위한 학습 데이터 샘플 생성하기
6.1.7 객체 검출에서 다양성을 위한 이미지 수준의 샘플링하기
6.1.8 다각형을 사용해 더 타이트한 마스킹 고려하기
6.2 의미 분할에 능동학습 적용하기
6.2.1 의미 분할의 정확도
6.2.2 의미 분할을 위한 불확실성 샘플링
6.2.3 의미 분할을 위한 다양성 샘플링
6.2.4 의미 분할을 위한 능동 전이학습
6.2.5 의미 분할에서 이미지 수준의 다양성 샘플링
6.3 시퀀스 레이블링에 능동학습 적용하기
6.3.1 시퀀스 레이블링에 대한 정확도
6.3.2 시퀀스 레이블링을 위한 불확실성 샘플링
6.3.3 시퀀스 레이블링을 위한 다양성 샘플링
6.3.4 시퀀스 레이블링을 위한 능동 전이학습
6.3.5 신뢰도와 토큰에 의한 계층화 샘플링
6.3.6 예측과 유사한 대표 샘플링을 위해 학습 데이터 샘플 생성하기
6.3.7 완전 시퀀스 레이블링
6.3.8 시퀀스 레이블링에서 문서 수준의 다양성을 위한 샘플링
6.4 자연어 생성에 능동학습 적용하기
6.4.1 자연어 생성 시스템에 대한 정확도 계산하기
6.4.2 자연어 생성에 대한 불확실성 샘플링하기
6.4.3 언어 생성을 위한 다양성 샘플링하기
6.4.4 언어 생성을 위한 능동 전이학습
6.5 다른 유형의 머신러닝 작업에 능동학습 적용하기
6.5.1 정보 검색을 위한 능동학습
6.5.2 동영상을 위한 능동학습
6.5.3 음성을 위한 능동학습
6.6 수작업 리뷰를 위한 적절한 항목 수 고르기
6.6.1 완전히 또는 부분적으로 레이블링된 데이터에 대해 능동 레이블링하기
6.6.2 어노테이션과 머신러닝을 결합

출판사 서평

◈ 이 책에서 다루는 내용 ◈

◆ 적절한 학습 데이터와 평가 데이터 식별
◆ 적절한 데이터 어노테이터 탐색과 관리
◆ 어노테이션 품질 관리 전략 선정
◆ 정확도와 효율성을 개선하기 위한 인터페이스 설계


◈ 이 책의 대상 독자 ◈
데이터 과학자, 소프트웨어 개발자와 머신러닝을 이제 막 시작한 (또는 최근 데이터 분야에서 자신의 커리어를 시작한) 학생을 위한 책이다. 지도학습과 비지도학습 머신러닝, 머신러닝 모델의 학습과 검증, PyTorch, TensorFlow 같은 라이브러리에 어느 정도 익숙한 사람이면 더 좋겠지만, 이 분야의 전문가일 필요는 없다.
여러분이 더 많은 경험을 하게 됐을 때 이 책이 여러 기법에 관한 유용한 참고서가 되길 희망한다. 또한 어노테이션, 능동학습과 어노테이션을 위한 인터페이스 설계와 같은 가장 보편적인 전략을 담은 첫 번째 책이기도 하다.


◈ 이 책의 구성 ◈

크게 4부로 나눠져 있다. 도입부, 능동학습에 관한 심층 분석, 어노테이션에 관한 심층 분석 그리고 최종 부분이다. 최종 부분에서는 인터페이스 설계 전략과 3개의 구현 예제도 포함해 이 책의 전반적인 내용을 종합했다.
1부에서는 어노테이션, 능동학습 그리고 사람과 기계가 지능을 가장 효과적으로 결합할 수 있도록 도움을 주는 인간-컴퓨터 상호작용과 같은 개념을 포함해 학습 데이터와 평가 데이터 생성을 위한 구성 요소를 소개한다. 2장의 마지막에는 뉴스 헤드라인을 레이블링하는 인간 참여 머신러닝 애플리케이션을 구축해 새로운 데이터의 어노테이션부터 모델을 재학습하는 주기를 완료한 후, 어떤 데이터가 다음에 어노테이션돼야 하는지 결정하는 데 도움을 주는 모델을 이용할 수 있게 될 것이다.
2부에서는 능동학습, 즉 사람이 검토해야 하는 가장 중요한 데이터를 샘플링하는 기법을 다룬다. 3장에서는 모델의 불확실성을 이해하기 위해 가장 널리 사용되는 기법을 다루며, 4장에서는 과소 샘플링됐거나 대표성이 부족한 데이터로 인해 신뢰도와 무관하게 모델의 잘못된 지점을 식별하는 다소 복잡한 문제를 다룬다. 5장에서는 다양한 전략을 종합적 능동학습 시스템으로 결합하는 방법을 소개하고, 6장에서는 능동학습 기법을 다양한 유형의 머신러닝 과제에 적용하는 법을 안내한다.
3부에서는 학습 및 평가 데이터에 대한 정확하고 대표성 있는 레이블을 얻는 중요한 주제임에도 때때로 과소평가받고 있는 어노테이션에 대해 다룬다. 7장에서는 데이터에 어노테이션을 달 수 있는 적합한 사람을 찾고 관리하는 방법을 다룬다. 8장에서는 어노테이션에 대한 품질 관리의 기본 사항을 다루고, 정확도와 일치도를 계산하는 가장 일반적인 방법을 소개한다. 9장에서는 주관적인 작업에 대한 어노테이션과 규칙 기반 시스템, 검색 기반 시스템, 전이학습, 준지도학습, 자가 지도학습을 비롯해 합성 데이터 생성을 포함한 광범위한 방법을 포함한 어노테이션 품질 관리에 관한 고급 기법을 다룬다. 10장에서는 다양한 종류의 머신러닝 작업에 대해 어노테이션을 관리하는 방법을 배운다.
4부의 11장에서는 효과적인 어노테이션을 위한 인터페이스를 심층 분석하고, 12장에서 인간 참여 머신러닝 애플리케이션의 3개의 예제를 소개한다.
이 책 전반에 걸쳐 이미지와 문서 수준의 레이블링, 연속 데이터, 객체 검출, 의미 분할, 시퀀스 레이블링, 언어 생성, 정보 검색과 같은 다양한 종류의 머신러닝 작업 예제와 함께한다. 내부 표지는 책 전체에서 각 작업의 위치를 찾을 수 있는 빠른 참조를 포함하고 있다.

◈ 옮긴이의 말 ◈
지난해 개최됐던 NVIDIA의 GTC 2022에서 연사로 초청됐던 앤드류 응(Andrew Ng) 박사는 지속적으로 주장해온 바와 같이 알고리듬보다 데이터가 더 중요한 시대로 접어들었다고 천명했습니다(〈AI 타임스〉 기사). 이는 이 책의 중심 사상을 가로지르는 철학이며, 우리가 이 책을 번역하기로 마음먹은 이유이기도 합니다.
알파고의 등장과 함께 수면 아래에 잠들어 있던 머신러닝의 잠재력을 깨달은 수많은 기업이 앞다퉈 투자하기 시작했습니다. 이제는 머신러닝과 인공지능을 업으로 삼거나 이들을 활용해 비즈니스 기회를 창출하는 기업이 늘고 있습니다. 지금까지는 알고리듬의 발전이 그 중심에 있음을 부인하기 어렵습니다. DNN, CNN에서부터 최근의 Transformer와 GAN과 같은 혁신적인 알고리듬과 아키텍처의 발전이 없었다면 지금과 같은 머신러닝의 활황기는 감히 꿈꾸기 어려웠을 것입니다.
최근에는 Google Keras와 TensorFlow, Meta(구 Facebook)의 PyTorch 등 기업 중심의 머신러닝 프레임워크와 Hugging Face와 같은 머신러닝 커뮤니티를 중심으로 이제는 누구라도 머신러닝 모델의 개발이 가능해졌습니다. 뿐만 아니라 Kaggle이나 DACON과 같은 머신러닝 경진대회 플랫폼을 통해 자신의 데이터 분석이나 모델 개발 노하우를 담은 코드와 데이터를 세상에 알리고 공유하는 것이 당연한 세상이 됐고, ChatGPT나 Stable Diffusion처럼 바로 활용할 만한 플랫폼과 서비스가 속속 출현하고 있습니다. 앤드류 응 박사가 인터뷰에서 설명한 바와 같이 머신러닝 알고리듬은 이제 상당한 수준에 올랐다고 볼 수 있습니다.
그러나 최신 알고리듬을 기업과 조직이 당면한 문제에 바로 적용하는 일은 여전히 만만치 않습니다. 그 이유 중 하나가 바로 도메인 데이터 확보 때문입니다. 많은 기업과 조직이 자신들의 머신러닝 알고리듬과 프레임워크는 당당히 공개함에도 데이터만큼은 좀처럼 세상에 공개하지 않습니다. 세상에 큰 충격을 준 Google Brain의 BERT나 Open AI의 GPT에 대한 알고리듬은 오픈돼 손쉽게 접근 가능하지만, 데이터 자체를 비롯해 데이터 수집과 정제 과정, 확보 전략은 공개하고 있지 않습니다. 이는 그야말로 자신들의 진정한 숨은 비기이자 적들의 침입을 막을 해자(중세시대에 성을 적의 침입으로부터 보호하기 위해 성 주위에 만든 못)이기 때문일 것입니다.
“시장에 알고리듬은 많지만, 쓸 만한 데이터는 귀하다”고 할 수 있겠습니다.
그렇다고 아무 데이터나 마구잡이로 가져다 쓸 수는 없습니다. Kaggle, DACON을 비롯해 국내에서도 AIHUB를 통해 기업들의 일부 데이터나 공공 데이터를 공개하고 있습니다. 그러나 실무자로서 머신러닝 모델을 개발해본 분이라면 잘 알겠지만 공개된 데이터를 활용하는 것은 한계가 따르기 마련입니다. 이 책에서도 강조하듯이 머신러닝을 적용하려는 도메인과 동떨어진 데이터는 실전에서의 성능 향상에 큰 도움이 되지 않을 것이기 때문입니다. 또한 이러한 데이터를 아무리 최신 알고리듬에 적용한다 하더라도 성능 향상에는 한계가 있을 수밖에 없습니다. 결국 머신러닝을 활용하려는 기업 입장에서는 적절한 알고리듬의 도입과 더불어 양질의 도메인 데이터 확보가 더욱 중요해진 시점이 됐습니다.
시중에 머신러닝 알고리듬을 밀도 높고 깊이 있게 소개하는 책과 강의는 이미 충분합니다. Coursera나 Udacity의 머신러닝 강의 중 대부분은 알고리듬에 대한 소개와 설명 및 실습으로 이뤄져 있으나, 양질의 학습 데이터를 확보하거나 이를 확인하는 방법에 대한 강의는 극히 일부에 불과합니다. 현업에서 느끼는 것도 크게 다르지 않습니다. 많은 사람이 머신러닝 알고리듬에 대해서 논의하지만 실무자들은 양질의 도메인 데이터를 확보하는 데 어려움을 겪고 있으며, 이에 대한 중요성을 인식하고 있습니다. 주위의 머신러닝 개발자에게 물어보면 아마 전체 개발 시간 중 80%는 데이터를 확보하고 정제하는 데 쓰고 있다고 해도 과언이 아닐 것입니다.
사실상 대부분의 기업에서 비즈니스에 활용하고 있는 머신러닝 알고리듬은 지도학습 방식으로, 이들은 양질의 데이터뿐만 아니라 어노테이션이나 레이블을 필요로 하며 이는 곧 수많은 인력과 전략이 데이터와 어노테이션을 만들어내는 데 필요하다는 의미입니다. 알고리듬과 데이터 사이의 간극을 메우기 위해서는 결국 적절한 도메인 데이터를 확보하기 위한 전략이 필요할 것입니다. 이 책은 양질의 데이터와 어노테이션을 확보하기 위한 다양한 전략과 기법을 광범위하고 깊이 있게 다루고 있습니다. 다른 머신러닝 도서와 달리 알고리듬에 대한 구체적인 소개와 설명은 포함돼 있지 않습니다. 대신 데이터를 통해 머신러닝의 성능을 향상시키기 위한 다양한 기법을 소개합니다. 효율적인 어노테이션을 위한 다양한 샘플링 기법과 프로세스를 다루고 있으며, 사용자 인터페이스의 관점과 어노테이터에 관한 심리 및 조직 관점에서 적용할 만한 다양한 아이디어와 저자의 경험을 망라하고 있습니다. 이 책의 기법과 아이디어를 단숨에 적용하기란 만만치 않겠지만, 기초적이고 단순한 전략에서부터 시작해 기업과 조직의 머신러닝 문제를 데이터 중심으로 풀어가는 데 더없이 좋은 길잡이가 되리라 생각합니다.