← 소식 목록

헷갈리는 샘플과 드문 클래스를 더 자주 학습하기: SAB

연구 목적

분류 문제에서 클래스마다 데이터 수가 크게 다른 경우가 많습니다. 이런 데이터로 학습하면 모델은 많은 클래스 쪽으로 치우치고, 드물지만 중요한 클래스는 잘 맞히지 못합니다.

흔히 쓰는 해결책은 oversampling입니다. 드문 클래스의 데이터를 복제하거나 합성해서 개수를 맞춥니다. 하지만 이 방법은 샘플 하나하나가 학습에 얼마나 도움이 되는지는 보지 않습니다. 그래서 중복, 과적합, 계산 비용 증가가 생길 수 있습니다.

이 연구는 개수를 맞추는 대신, 학습에 정말 도움이 되는 샘플을 골라 쓰자는 생각에서 출발했습니다. 연구실의 이전 방법인 SAB를 확장한 것입니다.

핵심 아이디어

SAB는 세 가지 장치로 미니배치를 구성합니다.

  • 불확실한 샘플 우선: 최근 몇 번의 예측 결과를 "label history"로 저장합니다. 예측이 자주 바뀌는 샘플은 entropy가 높고, 불확실하다고 봅니다. 이런 샘플을 더 자주 뽑습니다. 이때 정답을 맞힌 예측은 계산에서 빼서, 틀리기 쉬운 샘플에 기회를 더 줍니다.
  • 불균형 보정: credal set 이론을 빌려, 데이터 전체의 불균형 정도를 Gini coefficient로 잽니다. 불균형이 클수록 클래스 빈도의 역수에 비례하는 가중치를 더 크게 섞어, 드문 클래스가 더 잘 뽑히게 합니다. 합성 데이터는 만들지 않습니다.
  • 자동 조절: 손실 감소 폭이 줄어드는 시점에 warming-up을 끝내, 데이터마다 warming-up 길이가 달라집니다. 또 얼마나 좁게 골라 뽑을지(selection pressure)를 epoch가 아니라 entropy 변화에 맞춰 조절해 과적합을 줄입니다.

실험 설정

  • 텍스트 데이터셋(5개): MPST, Reuters, Ohsumed, K-MHaS, GoEmotions. Gini coefficient는 0.446~0.805입니다.
  • 이미지 데이터셋(4개): COCO-LT, VOC-LT, Corel-5k, NUS-WIDE. Gini coefficient는 0.474~0.694입니다.
  • 모델: 텍스트는 BERT("bert/base-uncased"), 이미지는 BEIT를 사용했습니다.
  • 학습: learning rate 1 × 10^-5, Adam, cross-entropy 손실을 썼습니다. 검증 손실이 5번 연속 개선되지 않으면 학습을 멈췄습니다.
  • 비교 대상: Baseline(전체 데이터로 fine-tuning), Focal, CB Focal, Oversample, SAB 등입니다. 이미지에서는 Rare Class, Class Balance도 비교했습니다.
  • 평가 지표: 텍스트는 Micro / Macro 점수, 이미지는 mAP입니다.

결과

텍스트 데이터셋 결과입니다(원고 Table, 일부 열만 발췌). 괄호 안 숫자는 Gini coefficient입니다.

Dataset (Gini)MetricBaselineOversampleSABSAB3
MPST (0.631)Micro41.342.642.943.1
Macro7.613.313.213.4
Reuters (0.805)Micro83.689.190.690.8
Macro51.660.453.660.2
Ohsumed (0.446)Micro73.774.377.678.1
Macro49.361.460.062.1
K-MHaS (0.515)Micro85.482.685.785.8
Macro74.176.777.879.0
GoEmotions (0.517)Micro52.545.554.956.9
Macro43.644.041.349.0

이미지 데이터셋 결과입니다(mAP, 일부 열만 발췌).

Dataset (Gini)BaselineCB FocalOversampleSABSAB3
COCO-LT (0.652)36.351.656.757.457.6
VOC-LT (0.694)65.669.571.774.475.9
Corel-5k (0.660)53.357.062.062.763.5
NUS-WIDE (0.474)82.484.484.284.084.3

굵은 글씨는 원고 표 전체에서 가장 높은 값입니다. VOC-LT 최고값은 Class Balance(76.0)로, 위 표에서는 뺐습니다.

텍스트에서는 Reuters의 Macro 점수를 빼면 SAB3가 모든 항목에서 가장 높았습니다. 특히 GoEmotions Macro 점수가 SAB 41.3에서 49.0으로 올랐습니다. Oversample은 일부 데이터셋에서 강하지만, GoEmotions Micro(45.5)처럼 Baseline보다 낮아지기도 했습니다. 논문은 이를 oversampling이 데이터 분포에 민감하다는 근거로 봅니다.

한계와 다음 단계

논문이 직접 밝힌 점은 다음과 같습니다.

  • 몇몇 데이터셋에서는 oversampling보다 조금 낮습니다. 다만 그 차이가 크지 않다고 봅니다.
  • 두 가지 샘플링 확률을 함께 쓰므로 SAB보다 메모리를 조금 더 씁니다.
  • 앞으로 라벨 사이에 의존성이 있고 불균형이 더 심한 multi-label 분류 같은 문제로 확장할 계획입니다.