Active Learning
아직 레이블링이 되어 있지 않은 데이터(unlabeled data) 중에 모델 학습에 가장 효과적일 것 같은 데이터를 고르는 작업을 의미한다.
기계가 라벨링이 필요한 데이터 중 자동적으로, 그리고 점진적으로 가장 정보량이 많은 데이터를 선택하는 것을 목표로 한다.
효과적인 학습이란,
결과적으로 가지고 있는 데이터셋 전체를 잘 학습했을 때의 '기대 성능에 어떻게 하면 빠르게 도달할 수 있는지' 또는 ‘혹시 그 이상의 성능을 확보할 수 있는지’가를 의미할 수 있다.
관련 논문
dsgissin.github.io/DiscriminativeActiveLearning/about/
Passive Learning
라벨링되지 않은 데이터에 대해 사람이 직접 라벨을 부여하면 이를 기계가 학습하는 방식으로 이루어졌다.
많은 라벨링된 데이터는 거의 항상 모델링의 성능을 좋게 하지만, 사람이 직접 라벨링을 진행하기에 비용 증가라는 문제를 안고 있다.
어떤 데이터가 필요한지를 기계가 판단하여 사람에게 라벨링을 부탁하면 사람은 더 적은 라벨링 공수를 들이고도 좋은 모델을 학습할 수 있지 않을까라는 관점에서 Active Learing이 발전하였다.
Active Learning 개요
전체 데이터셋중에서 중요한 데이터를 선별함으로써, 충분한 모델 경쟁력을 가지자
- 빨간점 : 레이블링된 데이터
- 초록점 : 레이블링을 위해, 선택된 데이터
일반적인 Random Sampling 방식보다, Active learning을 통해서 중요 데이터를 찾고, 모델을 학습했을 경우,
보라색 그룹과 노란색 그룹을 잘 나누는 경계선(Decision Boundary)을 더 빠르게 더 잘 찾는다.
※ 주의사항 :
- Activer Learning을 통해, 찾은 데이터는 사람이 레이블링을 해야 되는 것은 변하지 않는다.
- 더 효율적으로 적인 데이터를 찾기 위함이지, AI 모델이 레이블링을 수행하지 않는다.
- AI 모델이 스스로 레이블링을 하는 것은 Auto Labeling이다.
Active Learning의 과정
모델(Learner)이 라벨링 되어있지 않은 데이터 중 학습에 보다 효율적인 데이터를 골라 전문가(Oracle)에게 요청(Query)을 날리고 전문가는 그 요청에 따라 데이터를 라벨링하면 모델은 라벨링 된 데이터를 받아 학습을 진행하는 형식입니다.
출처: http://visionexperiments.blogspot.com/2016/01/active-learning-literature-survey.html
- Learn a Model : 레이블링 된 데이터(L)를 활용하여, 모델 학습
- Select Queries : 학습된 모델을 통해서, 레이블링 되지 않은 데이터(U)에서 선별
- Human Annotator : 사람이 레이블링
- Training set : 새로 레이블링 된 데이터를 기존 dataset과 합친다.
- 목표 성능 도달까지 위에 과정(1~4)을 반복한다.
Active Learning 시나리오
학습 모델(learner)가 데이터 인스턴스에 대한 라벨을 쿼리도록 하기 위해 다음과 같은 세 가지 셋팅을 자주 사용한다.
Membership Query Synthesis
학습 모델(learner)가 주어진 분포에 의거하여 데이터 인스턴스를 생성 혹은 구성하여 쿼리하는 것을 의미한다.
예를 들어, 숫자 이미지 분류 문제를 풀고자 할 때 학습 모델은 숫자 이미지와 비슷한 이미지(약간 회전되거나 크롭되는 등..)를 만들어내고, 이를 라벨러에게 전송하여 라벨링을 요구한다.
모델이 레이블링 요청(Query)할 데이터를 직접 생성하는 방식으로 데이터 생성 자체가 매우 어렵기 때문에 현재는 관심 없는 분야이다.
Stream-based selective sampling
라벨링되지 않은 데이터를 아주 쉽게 얻을 수 있는 경우 사용하는 전략이다.
학습 모델(leaner)는 라벨링되지 않은 인스턴스를 보고, 해당 인스턴스가 가진 정보량에 의거해 이것이 라벨링될 가치가 있는지 아닌지를 결정한다. 이때 인스턴스가 가진 정보량을 평가하기 위해 query strategy라는 것을 사용한다.
모델이 라벨링이 필요하다고 판단한 데이터는 쿼리하고, 아닌 것은 버리는 과정을 반복하며 학습이 이루어진다.
새로운 샘플이 들어오면 모델이 레이블링 필요한지 아닌지를 판단한다.(예, Binary Model)
(*) Pool-based Sampling
이 방식은 가장 널리 사용되는 방법으로, 라벨링되지 않은 큰 데이터 풀이 존재할 때 사용하는 전략이다.
여기서는 데이터풀에서 정보량 측도에 의거해 인스턴스들을 가지고 오게 된다. 이때 정보량 측도는 데이터풀에 있는 모든 인스턴스들에 대해 적용을 하고, 그중 가장 정보량이 많은 것들을 선택하는 식이다.
큰 데이터 Pool이 존재하면, 모델이 중요한 데이터 포인트(data point - query)를 선택한다.
Stream-based Selective와 Pool-based의 차이
Stream-based는 순차적으로 스캔하며 쿼리를 판단한다
- 숲길을 따라가며, 나무를 선별
- 전체 데이터의 분포를 고려하지 않기 때문에, 눈 앞에 있는 데이터가 모델 학습에 큰 영향을 줌
- 딥러닝에서는 더 좋지 않게 판단될 수 있음(향후, Core-set에서 추가 설명할 예정)
Pool-Based는 전체 Collection에서 평가 및 순위를 매긴다
- 전체 숲을 보며, 중요한 나무를 찾기
- Active Learning이라 하면 대부분 Pool-based 방식을 의미한다.
- 현재, 데이터는 넘친다. 다만, 정제가 되지 않아서 문제다. → 현재 대표적인 Active Learning방안
Query Strategy
라벨이 필요한 인스턴스를 선택하는 전략
액티브 러닝의 핵심은 과거에 모델이 쿼리했던 인스턴스와 그에 대한 답변(라벨)에 의거하여 러너가 필요한 인스턴스를 쿼리하는 능력에 있다.
- Uncertainty Sampling
- Query By Committee
- Expected Model Change
- Density Weight Method
Uncertainty Sampling
Decision Boundary에 가까운 샘플을 고르자.
- '모델이 헷갈리는 데이터 = 학습에 필요한 데이터' 라는 생각에서 시작된다.
- 모델 입장에서 '헷갈리는 데이터'가 무엇일까? 라는 질문에 답은 Decision Boundary에 가까운 샘플이다.
- Decision Boundary에 가까운 데이터는, 즉, 헷갈리는 불확실성(Uncertainty)이 높은 데이터이다.
두 개의 데이터 포인트와, 각 데이터포인트가 세 개의 라벨에 속할 확률
데이터포인트 | 라벨 A | 라벨 B | 라벨 C |
d1 | 0.9 | 0.09 | 0.01 |
d2 | 0.2 | 0.5 | 0.3 |
모델 입장에서의, 데이터의 불확실성(Uncertainty)를 측정하는 방식은 크게 3가지가 있다.
Top/Least Confidence(LC)
최대 확률값이 가장 낮은 데이터를 선별
- 이 전략에서 학습자는 가장 "확실하게" 예측한 라벨에 대해 가장 확신도가 낮은 예제를 선택한다.
- d1은 라벨 A을 0.9의 확신도로, d2는 라벨 B를 0.5의 확신도로 가지고 있다. 따라서 러너는 d2의 실제 라벨을 알고 싶어한다.
- 이 방법은 가장 그럴듯한 라벨에 대한 확신도만을 사용하고, 다른 라벨에 대한 확률은 고려하지 않는다.
d1: top confidence는 0.9
d2: top confidence는 0.5
d2의 top confidence < d1 top confidence 이므로, top confidence가 낮은 d2 선택
Margin Sampling
가장 확률이 높은 라벨과 두 번째 라벨의 확신도의 차이를 감안하여 데이터를 선별
- LC에서 최고 확률의 라벨 이외의 것을 고려하지 않는다는 점을 보완하기 위해 고안된 방법.
- 가장 확률이 높은 라벨과 두 번째 라벨의 확신도의 차이가 적은 예제를 선택하는 전략이다.
- d1은 0.9 - 0.09 = 0.81, d2는 0.5 - 0.3 = 0.2의 점수를 받고, 러너는 역시 d2에 대한 Ground Truth 라벨을 요구한다.
Entropy Sampling
Entropy가 높은 데이터를 선택
- 이 방법은 모든 가용한 라벨 확률값을 모두 사용하는 방법으로, entropy 개념을 사용한다.
- 엔트로피를 구하는 식을 각각의 예제에 적용하고, 엔트로피(=불확실성)가 가장 큰 예제를 쿼리하는 방식이다.
- d1의 엔트로피는 0.115, d2의 엔트로피는 0.447로, 역시 d2를 쿼리하게 된다.
장점
1. 구현하기 매우 쉽다.
2. 성능이 생각보다 좋다.
3. 딥러닝과의 연계도 생각보다 좋다.
4. 실험상, Uncertainty 기법 중, Maximum Entropy가 더 좋은 경우가 많았다.
단점
Outlier에 영향을 많이 받는다.
- Outlier인 데이터의 추론 확률 값은 모델이 예측하기 어렵다.
- 예를 들어, 3class 추론 확률값이 0.3, 0.3, 0.3으로 나올 가능성이 높으며, 이상치는 Entropy(Uncertainty)가 높다.
데이터를 선별할 때 Diversity(다양성)가 무시되었다.
- Diversity(다양성)가 무시된다. 즉, 데이터 분포가 고려되지 않는다.
Query By Committee
여러모델을 통해, 마치 앙상블 처럼. 데이터를 선별해 보자
- 여러 모델(Committee 위원회) 에서 투표하여 중요 데이터를 선별
- 여러모델에서 추론한 결과가 다르다 = 헷갈리는 데이터 = 불확실성(Uncertainty) 높음
- 앙상블의 Vote 개념을 Active Learning에서 사용
- Vote Entropy를 사용 할 수도 있다 (Vote 확률 → Entropy 계산)
M : 사용 모델 수(size of ensemble)
장점
- 구현이 어렵지 않다.
- 앙상블은 좋은 성능을 나타내기 때문에, 이를 활용한 Active Learning의 효과도 좋다
단점
- 하나의 모델을 학습하는데 많은 비용이 드는 딥러닝에선 쓸수가 없다.
- 딥러닝 모델 학습 * 앙상블모델 수 * Active Learning 반복수 = Active Learning을 통한 자원 절감의 효과가 떨어진다.
Expected Model Change
모델을 가장 업데이트 할 수 있는 데이터가 중요하다
Expected Gradient Length(EGL, 기대 Gradient, arxiv.org/pdf/1612.03226.pdf)가 가장 큰 데이터를 선별
- RNN에서 class별 Norm Gradient를 계산(Backpropagation)한다.
- 계산된 기대값이 큰 데이터를 선별한다.
장점
- EGL 방식이 모델(Estimator)의 분산을 줄인다고 증명함
단점
- RNN(Speech)에 한정적인 성능을 보일 수 있음
- CNN 실험에서는 낮은 성능을 보여줌 → Task마다의 성능이 크다는 건 큰 단점이다.
Density Weight Method
불확실성과 밀집도가 높은 곳에 있는 데이터를 선택하자.
- Outlier에 취약한 Uncertainty의 단점을 커버하기 위해서, Density개념을 추가했다
- 밀집도가 높은 곳에 위치한 데이터는 Outlier일 가능성이 낮다.(Outlier는 Feature Space상, 멀리 떨어져 있다)
- 밀집도를 계산하는 방법에 따라서, 여러가지가 파생되었다.
장점
- Outlier에 취약한 Uncertainty의 단점을 커버하기 위해서, Density 개념을 추가했다.
단점
- Outlier를 확실하게 방지 할 수 있지만, '밀집도(Density)가 높은 데이터가 꼭 좋은 데이터 일까?' 라는 의문이 있다.
- Unlabeled 데이터에서는 부적합할 수 있다.
Active Learning 단계
Step 0. 데이터 수집
- 실제 데이터의 분포를 반영하도록 데이터셋을 수집한다.
- 이때 수집되는 데이터는 라벨링되지 않은 데이터셋.
Step 1. 데이터셋 분할
- 모델 학습에 사용할 시드 데이터(Seed, labelled)와 이외의 라벨링되지 않은 데이터를 나눈다.
- 수집한 데이터 중 일부는 라벨링이 이루어지고, 나머지 부분은 라벨링되지 않은 상태로 남아있다.
Step 2. 모델 학습
- 일반적인 기계학습과 같은 방법(cross-validation 등)으로 라벨링된 데이터를 학습한다.
- 이 과정을 통해 러너는 데이터 도메인에 대한 지식을 학습하게 된다.
Step 3. 라벨링되지 않은 데이터 중 선택
- query strategy를 이용해 추가적으로 라벨링이 필요한 데이터를 선택한다.
Step 4. 학습 중단 기준 마련
- 이제 어떤 기준에 만족할 때까지 Step 2~3을 반복하며 모델을 고도화하게 된다.
- 예를 들어, test 데이터를 미리 나누어 두고, 이 테스트 데이터에 대한 성능이 나아지지 않으면 과정을 중단하게 한다.
'Machine Learning > Machine Learning' 카테고리의 다른 글
[무료 머신 러닝 실습 시스템] Machine Learning for Kids (0) | 2023.06.21 |
---|---|
[Machine Learning] Federated Learning (연합 학습) (0) | 2023.04.10 |
Ensembler (a python package) (0) | 2022.11.04 |
[Machine Learning] Fairness (공정성) (0) | 2022.11.01 |
[Machine Learning] Feature Engineering (0) | 2022.11.01 |