2023년에 EACL에서 발표된 Small-Text: Active Learning for Text Classification in Python 논문을 바탕으로 작성된 리뷰입니다. (Christopher Schröder, Lydia Müller, Andreas Niekler, and Martin Potthast)
Abstract
small-text: active learning 파이썬 library (ver. 1.3.0)
- 목적: Text classification을 위한 SOTA active learning을 연구자들과 실무자들에게 쉽고 편리한 방법으로 제공
- single & multi label text classification을 위한 pool-based active learning 제공
- pool-based active learning: 모델이 학습할 수 있는 미리 정의된 데이터셋(풀)에서 인스턴스를 선택하여 라벨링하도록 하는 방법
- 사전에 구현되었던 SOTA query 전략들 포함(GPU 사용하는 것도 존재)
- 표준화된 interface
- 다양한 classifier, query 전략, stopping criteria의 조합 가능 → 빠른 mix & match
- active learning experiment & application을 위한 빠르고 편리한 개발
scikit-learn
,PyTorch
,HuggingFace transformers
통합 - GPU 유무 고려하여 선택적으로 설치 가능한 extension
small-text을 이용하여 최근에 나온 SetFit이라는 학습 패러다임의 성능 조사
- SetFit(2022): contrastive learning을 사용하여 SBERT embeddings fine-tuning
- vanilla transformer fine-tuning과 비교 → classification 시 정확도에서는 동등한 성능, AUC에서는 능가
Introduction
[ Background ]
Text classification은 SOTA급 효율성을 위해서 많은 양의 학습 데이터를 필요로 함.
→ 실생활에서 라벨링된 데이터는 존재하지 않고, 도메인 전문가를 필요로 하는 경우에는 특히 더 비쌈.
→ Active Learning으로 해결
- (1→2) query 전략에 따라 정보성이 있다고 판단되는 라벨링 X된 데이터 인스터스를 반복적으로 선택하고,이를 전문가에게 라벨링하도록 요청하여 해결함.
- (3) 새로운 모델은 모든 이전의 라벨링된 데이터에 대해 학습되고, 명시된 stopping criterion 전까지 이 과정을 반복함.
[ Active Learning의 목적 ]
필요로 하는 라벨링 데이터의 양을 최소화 + 모델의 효율성을 극대화
[ Active Learning setup ]
- system 측에서 component(최대 3개) 구성: classifer, query strategy, (option) stopping criterion
- 적절한 조합을 결정하는 것은 실험적으로만 가능하고, 효율적인 구현은 간단하지 않음.
- component들은 서로 의존 (ex. query 전략은 embedding, gradient과 같은 특정 모델 클래스들에 의존)
- non-trivial 조합들이 사용될수록, modular library가 필수적.
→ 위의 문제들을 해결하기 위해서는 open source가 명백한 솔루션.
- active learning 솔루션이 존재하긴 하지만, text classification을 다루고 자연어처리에 특화된 기능(ex. word embedding)을 하는 솔루션들은 거의 없음.
⇒ Small-text라는 active learning library 도입
Overview of Small-Text
Modular pool-based active learning mechanism
Core module + (option) PyTorch + Transformers
- Core module
- CPU만 사용 시
scikit-learn
의 classifier들을 바로 사용 가능하도록 통합- Baseline - text classification
- SVM, Kim-CNN
- query 전략: 13개
- 라벨링될 데이터 인스턴스 선택
- 텍스트 도메인에만 적용 가능
- query 전략의 범위 → 4가지 패러다임
- confidence-based: least confidence, prediction entropy, breaking ties, BALD, CVIRS, contrastive active learning
- embedding-based: BADGE, BERT k-means, discriminative active learning, SEALS
- gradient-based: expected gradient length(EGL), EGL-word, EGL-sm
- coreset: greedy coreset, lightweight coreset
- stopping criteria: 5개
- 종종 무시되기도 하지만, 라벨링 및 전체 active learning 과정의 효율성에 강한 영향을 미침.
- stabilizing predictions
- overall-uncertainty
- classification-change
- predicted change of F-measure
- criterion that stops after a fixed number of iterations
- PyTorch & Transformers module
- (CUDA-based) GPU 기반 모델 & SOTA transformer 기반 text classifier
- Baseline - text classification
- BERT → 최근 나온 SetFit을 사용할 수 있도록 wrapper 포함
- Module 내에서 package 간의
dependency는 생략
[ 사용 방법 ]
PyPI
또는pip install small-text
- 통합 기능은 파이썬의 setuptools의 추가 인수를 사용하여 활성화 가능
- 예시) transformers 통합 →
pip install small-text[transformers]
- 예시) transformers 통합 →
- 온라인 문서(Small-Text — small-text documentation)
- 자세한 예제, API 문서, 일반적 사용 패턴
Library versus Annotation Tool
2가지의 setting으로 설계: experiments & real-world applications
- experiments
- (자동화된 active learning 평가) 또는 (1명 이상의 annotator이 함께하는 short-lived setup)으로 구성
- real-world applications
- 최종 모델이 라벨링 X된 데이터나 unseen 데이터에 대해 적용되는 경우
Small-text는 library로, 복잡한 프로그램에 대해 재사용할 수 있는 함수 및 클래스 집합을 의미.
- ↔ annotation tool: GUI 제공, 사용자와 시스템 간의 상호작용에 집중
- modular architecture의 장점: 유연성, 높은 응집력, 낮은 결합도
- annotation tool과 조합해서 사용하거나, experiment setting으로 사용하거나, backend application의 부분으로 사용 가능(ex. web API)
Code Example
active learning setup + transformers models
1. Dataset
- two-class spam 합성 데이터셋
- 데이터 인스턴스 개수: 100
- 텍스트 & 정수 라벨의 list로 주어짐.
transformers
tokenizer 사용:bert-base-uncased
TransformersDataset
object → binary text classification 데이터셋 생성- positive class(spam) 개수: 50
- negative class(ham) 개수: 50
2. Active Learning Configuration
- classifier & query 전략
- 다른 자료 구조로 인해 classifier과 dataset은 match되어야 함.
TransformerBasedClassification
-TransformersDataset
- Active learner는 학습 단계 전에 새로운 classifer 인스턴스화 → factory로 새 classifer 생성
- query 전략을 최소 신뢰도로 설정 - hyperparameter 영역
3. Initialization
- 초기 모델을 사용(ex. 수동 라벨링)하거나 cold start 접근 사용
- 해당 예시: 사용자 제공 초기화(실제 라벨 확인, 초기 모델에 제공)
- 실험 시나리오(실제 라벨에 접근 가능한 경우)에서 초기 모델을 사용하기 위해 sampling 방법 제공
- balanced sampling - 균형 잡힌 클래스 분포를 가진 하위 집합
- 실제 application: 사용자가 제공하는 초기 라벨 세트로 초기화
4. Active Learning Loop
- 해당 예시: 실제 라벨에 의존한 응답 → 실제 application: 사용자 응답
- 10개의 인스턴스를 쿼리하는 5개의 쿼리 수행
- query 단계에서 query 전략은 라벨을 붙일 인스턴스 sampling
→ 이후 각 인스턴스에 대한 새로운 라벨(y
) 제공
→ 이를update
메소드에 전달한 후 새로운 모델 학습
- query 단계에서 query 전략은 라벨을 붙일 인스턴스 sampling
Comparison to Previous Software
* QS(query 전략 개수) / SC(stopping criteria 개수) / lrtc(low-resource-text-classification) framework
publication이 있거나 더 큰 사용자 기반의 open-source 프로젝트들과 비교
- 모두 query 전략의 선택은 제공하지만, stopping criteria를 제공하지는 않음.
- query 전략의 하위집합을 선택하는 것은 active learning experiment의 컴퓨팅 연산량이 많으므로 중요. 모든 전략이 테스트될 수 없음.
- ALToolbox: annotation interface 제공, 새 query 전략을 벤치마킹할 수 있는 active learning framework
- library가 아님. text classification & sequence tagging에 집중.
- small-text, lrtc, ALToolbox만 text focus & GPU 제공
- small-text만의 장점
- text classification task 맞춤 query 전략 제공
- 가장 포괄적인 기능 집합 제공, component들이 mix & match되어 다양한 active learning setup 가능.
Experiment
SBERT와 BERT 비교
- SBERT: paraphrase-mpnet-base v2 (110M parameters)
- SetFit으로 학습
- BERT: bert-large-uncased (336M parameters)
- vanilla(standard) fine-tuning으로 학습
[Setup]
* N(News),S(Sentiment),Q(Questions). *(Pre-defined test sets available)
이전 연구 - Revisiting uncertainty-based query strategies for active learning with transformers(ACL 2022)를 위의 데이터셋을 이용하여 평가 + 확장된 query 전략
- pool-based active learning setup with 25 initial samples
- 각 단계에서 20개의 query(25개 인스턴스를 쿼리 & 라벨링) 수행
- SetFit의 평가 방법을 고려하여 single-label classification에 집중
- 이전 연구에서 유망한 결과를 바탕으로 선택된, 비용이 적은, uncertainty-based query 전략에 대한 광범위한 벤치마크 제공
- 모델이 가장 확신하지 못하는, 잘 알지 못하는 인스턴스를 선택하여 라벨링 (엔트로피 기반 선택, 최소 마진 선택 등)
- 상대적으로 비싸지만 최근 연구에서 많이 사용되고 있는 BALD, BADGE, greedy coreset query 전략도 포함
[Result]
* 마지막 iteration 이후 상태 기준
- Rank: 평균 accuracy와 AUC에 의해 정렬된 평균 rank(query 전략 순위)
- rank가 낮을수록 다른 전략에 비해 성능이 좋음.
- Result: 평균 accuracy와 AUC값
- Query 전략
- prediction entropy(PE), breaking ties(BT)
- least confidence(LC), contrastive active learning(CA)
- BALD(BA), BADGE(BD), greedy coreset(CS)
- random sampling(RS)
- 이전 연구: uncertainty-based query 전략이 BERT에 대해 강력한 성능 발휘
- SetFit은 모델과 query 전략을 기준으로 평균적으로 0.06 ~ 1.7% 더 높은 accuracy, 4.2 ~ 6.6% 더 높은 AUC
- configuration별로 자세한 결과는 appendix에서 확인 가능
→ SetFit이 대부분의 configuration에 대해 accuracy가 더 높고, 모두 AUC score이 더 높음.
[Discussion]
* TREC 데이터셋에서 breaking ties 전략의 테스트 정확도 차이를 보여주는 예시 학습 곡선
- SetFit으로 학습된 SBERT는 BERT에 비해 매개변수가 3분의 1에 불과하지만, 최종 accuracy 및 AUC에서 더 나은 성능을 보여줌.
- 최종 accuracy값은 거의 유사하므로, AUC의 향상이 초기 query에서 개선된 영향일 것(가파른 learning curve가 반영)
- 부분적으로 SetFit이 인스턴스 쌍을 사용한다는 sample 효율성때문일 것이라고 생각
- 위의 figure에서처럼, transformer 모델의 불안정성을 감소하는 추가적인 장점 (특히 학습셋이 적을 때)
- 단, 인스턴스 당 쌍의 수에 따라 학습 비용 선형적 증가
Library Adoption
최근 publication 중 실험에 small-text를 성공적으로 활용한 사례
- Abusive Language Detection(Kirk et al. 2022)
- pool-based binary active learning setup
- active learning을 사용하면 data의 일부분만 사용하여 효율적으로 학습 가능
- Classification of Citizens’ Contributions(Romberg and Escher. 2022)
- 온라인 시민 참여 프로세스의 독일어 - 자동화된 classification(3개의 도시들로부터 수집한 텍스트를 8개의 다른 주제들로 분류)
- single & multi-label active learning setup
- active learning을 사용하면 annotation effort를 상당히 줄일 수 있음.
- Softmax Confidence Estimates(Gonsior et al. 2022)
- softmax 함수의 여러 대안들 실험 - active learning에 대해 더 나은 신뢰도를 보이는지
- Revisiting Uncertainty-Based Strategies(Schröder et al. 2022)
- 전통적인 uncertainty-based query 전략들과 최근 transformer 모델들 재평가
Conclusion & Limitation
small-text라는 파이썬 library 소개: Text classification을 위한 SOTA active learning 제공
Experiment & Application에 active learning을 빠르게 적용할 수 있도록 component의 mix & match 가능
- 장점: 낮은 진입 장벽, 시간 절약, 빠른 연구
- 단점 및 한계
- 파이썬 프로그래밍 언어에 대한 기본적 지식 필요
- 알고리즘 component 각각의 한계 존재 (ex. greedy coreset 전략: 라벨링된 데이터 양이 증가하면 컴퓨팅 연산량 급증)
- 몇몇 component들은 최고의 classification 성능을 달성하기 위해 알고리즘의 이해가 필요한 hyperparameter 존재
- 자연어 처리 관련 한계 (ex. 모든 classification 모델들은 토큰화에 의존 → 중국어, 한국어와 같이 명확한 단어 경계가 없는 경우 더 어려움.)
- 요약 -
- small-text: 파이썬으로 구현된 active learning library로, single & multi label text classification을 위한 pool-based active learning을 제공함.
- Modular pool-based learning mechanism으로서, core module과 Pytorch Integration(option), Transformers Integration module(option)로 구성되어있음.
- SetFit으로 학습한 SBERT와 vanilla fine-tuning으로 학습한 BERT의 성능 비교
- SetFit은 모델과 query 전략을 기준으로 평균적으로 0.06~1.7% 더 높은 accuracy, 4.2~6.6% 더 높은 AUC을 보임.
- 최종 accuracy값은 거의 유사하므로, AUC의 향상이 초기 query에서 개선된 영향일 것