Active Learning
액티브 러닝을 사용하면 모델이 다음에 사람이 레이블링할 비레이블 샘플을 선택하여 더 적은 레이블로 목표 정확도에 도달할 수 있습니다. 쿼리 전략과 코드를 다룹니다.
능동 학습은 다음에 사람이 레이블을 지정할 비레이블 예제를 모델이 선택하는 머신러닝 접근 방식입니다. 팀은 데이터에서 무작위 표본을 레이블링하는 대신, 소규모 레이블 데이터셋으로 모델을 학습하고 이를 사용해 대규모 비레이블 예제 풀의 점수를 계산합니다. 그런 다음 정보량이 가장 높은 예제를 어노테이터에게 보내고, 확장된 데이터셋으로 모델을 다시 학습한 뒤 이 과정을 반복합니다. 레이블을 제공하는 사람을 오라클이라고 합니다. 목표는 가능한 한 적은 레이블로 목표 정확도에 도달하는 것입니다. 이는 영상 판독 방사선 전문의처럼 전문 지식이 필요한 레이블링이나, 자율주행 차량 fleet이 매일 기록하는 비디오처럼 전체를 레이블링하기에는 데이터가 너무 많은 경우 특히 중요합니다.
능동 학습 루프의 작동 방식#
컴퓨터 비전 프로젝트는 일반적으로 고정된 비레이블 이미지 모음을 점수화하는 풀 기반 능동 학습을 사용합니다. 각 반복은 다음 네 단계로 구성됩니다.
- 학습: 지금까지 수집한 레이블 예제로 객체 감지 모델과 같은 객체 감지 모델을 학습합니다.
- 점수화: 비레이블 풀에서 모델을 실행하고 각 예제에 정보량 점수를 부여합니다.
- 쿼리: 점수가 가장 높은 배치를 어노테이터에게 보내 데이터 레이블링을 진행합니다.
- 업데이트: 새 레이블을 학습 데이터에 추가하고 모델을 다시 학습합니다.
레이블링 예산이 소진되거나 고정된 검증 세트에서 정확도 개선이 멈추면 루프가 종료됩니다. 각 라운드의 결과를 같은 수의 레이블을 무작위로 선택해 학습한 모델과 비교하면 선택 방식이 도움이 되는지 확인할 수 있습니다.
쿼리 전략#
쿼리 전략은 어떤 예제가 정보량이 높은지 결정합니다.
- 불확실성 샘플링: 모델의 확신이 가장 낮은 예제를 선택합니다. 가장 높은 점수의 클래스에 대한 신뢰도가 가장 낮거나, 상위 두 클래스 간 차이가 가장 작거나, 예측 클래스 분포의 엔트로피가 가장 높은 예제를 선택할 수 있습니다.
- 위원회 기반 쿼리: 여러 모델을 학습하고 서로 의견이 가장 크게 다른 예제를 선택합니다. Monte Carlo 드롭아웃을 사용하면 단일 네트워크로 저렴한 위원회를 구성할 수 있습니다.
- 다양성 샘플링: 임베딩 공간을 폭넓게 포괄하는 예제를 선택하여, 연속된 비디오 프레임처럼 거의 중복되는 예제가 배치를 채우지 않도록 합니다. 코어셋 접근 방식은 배치 설정에서 CNN에 많은 불확실성 휴리스틱이 효과적이지 않다는 사실을 확인한 뒤 배치 선택을 이러한 관점에서 구성합니다.
- 하이브리드 전략: 두 신호를 결합합니다. BADGE는 사람이 가중치를 직접 조정하지 않아도 그래디언트 임베딩 공간에서 불확실성과 다양성을 모두 갖춘 예제를 선택합니다.
검출기는 이미지마다 여러 박스를 생성하므로, 박스 점수를 이미지당 하나의 점수로 통합해야 합니다. 예를 들어 모든 감지의 신뢰도를 평균할 수 있습니다. 아래 스크립트는 사전 학습된 YOLO26 모델을 사용해 소규모 풀을 평균 감지 신뢰도로 순위화하고, 신뢰도가 가장 낮은 이미지를 먼저 쿼리합니다.
from ultralytics import YOLO
# Model trained on the current labeled set
model = YOLO("yolo26n.pt")
# Unlabeled pool, usually thousands of images
pool = ["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]
results = model(pool, conf=0.1)
# Least-confidence sampling: score each image by its mean detection confidence
scores = {}
for image, result in zip(pool, results):
if len(result.boxes):
scores[image] = result.boxes.conf.mean().item()
# Query the lowest-scoring images first, within a labeling budget of one image
query = sorted(scores, key=scores.get)[:1]
print(f"Label next: {query}")낮은 conf=0.1 임계값은 신뢰도가 낮은 감지를 점수에 포함합니다. 이러한 박스가 바로 모델이 확신하지 못하는 대상입니다. Ultralytics Platform의 어노테이션 편집기는 나머지 루프를 완성합니다. Smart 모드는 사용자가 직접 파인튜닝한 YOLO 모델을 불러오므로, 재학습한 각 모델이 다음 쿼리 배치에 사전 레이블을 지정하고 어노테이터는 이를 수정할 수 있습니다.
실무상 주의 사항#
- 콜드 스타트: 수십 개의 예시만으로 학습한 모델의 불확실성 점수는 신뢰하기 어려우므로 초기 라운드에서는 무작위 또는 다양성 기반 선택을 자주 사용합니다. 비전 언어 모델은 클래스 이름만으로 첫 배치에 사전 라벨을 지정할 수도 있으며, VLM 리더보드는 실제 탐지 데이터셋에 주석을 얼마나 정확하게 지정하는지 비교합니다.
- 중복 배치: 불확실성이 가장 높은 이미지 k개를 각각 선택하면 거의 동일한 이미지가 모인 클러스터가 반환되는 경향이 있습니다. 다양성 및 하이브리드 전략은 이 문제를 해결합니다.
- 샘플링 편향: 어려운 사례가 과도하게 포함되면서 레이블 데이터셋이 실제 데이터 분포에서 벗어납니다. 점수의 편향을 막기 위해 검증 세트와 테스트 세트는 전체 풀에서 무작위로 추출합니다.
- 이상치: 손상되었거나 흐릿하거나 도메인 범위를 벗어난 이미지는 모든 모델에서 불확실성이 높게 나타나며, 필터링하지 않으면 레이블링 예산을 낭비할 수 있습니다.
능동 학습과 관련 용어 비교#
- 준지도 학습: 비레이블 데이터를 사용하지만, 불확실한 예제에 대해 사람에게 묻는 대신 모델이 확신하는 예측에 스스로 의사 레이블을 부여합니다. 두 방식을 함께 사용하는 경우가 많습니다.
- 커리큘럼 학습: 이미 레이블이 지정된 예제를 쉬운 것부터 어려운 것 순으로 정렬해 학습합니다. 능동 학습은 어떤 예제에 레이블을 지정할지 결정합니다.
- 하드 네거티브 마이닝: 모델이 가장 크게 틀리는 레이블이 지정된 음성 예제를 골라 더 많이 학습합니다. 기존 레이블을 활용하며 새 레이블을 추가하지 않습니다.
- 데이터 플라이휠: 배포된 모델이 새 데이터를 찾아내고, 그 데이터가 다음 모델을 개선하는 운영 루프입니다. 능동 학습은 이 루프에서 흔히 사용되는 선택 단계입니다.










