← 소식 목록

SABI: 불확실성과 클래스 불균형을 함께 보는 미니배치 샘플링

이 글은 Applied Sciences 16(11), 2026에 실린 논문 "SABI: Self-Adaptive Bias for Imbalanced Data Classification" (Suchan Choi, Jinyoung Oh, Jeong-Won Cha)을 소개합니다.

왜 이 연구를 했나

클래스마다 개수가 크게 다른 데이터로 학습하면, 모델이 많은 클래스 쪽으로 기울고 드문 클래스를 잘 맞히지 못합니다.

흔한 해결책은 Oversampling입니다. 드문 클래스의 샘플을 반복해서 더 넣어 개수를 맞추는 방법입니다. 하지만 이 방법은 샘플 하나하나가 학습에 얼마나 도움이 되는지는 따지지 않습니다. 그래서 별 도움이 안 되는 샘플을 계속 뽑을 수 있습니다.

반대로 우리 연구실의 이전 방법인 SAB는 "불확실한" 샘플을 우선 뽑습니다. 그런데 SAB는 클래스 분포를 직접 보지 않습니다. 많은 클래스는 샘플 수 자체가 많아서, 불확실한 샘플도 많이 나옵니다. 그 결과 long-tail 데이터에서는 여전히 많은 클래스가 미니배치를 차지할 수 있습니다.

핵심 아이디어

SABI는 두 가지 신호를 섞어서 각 샘플이 뽑힐 확률을 정합니다.

  1. 샘플 단위 불확실성 (SAB에서 가져옴): 각 샘플에 대해 최근 q번의 예측 라벨을 기록합니다. 이 중 정답과 다르게 예측한 경우만 모아 normalized entropy를 계산합니다. 예측이 자주 틀리거나 흔들리는 샘플일수록 점수가 높고, 더 자주 뽑힙니다. 이것이 P_SAB입니다.
  2. 클래스 단위 불균형 보정: 샘플이 속한 클래스의 크기에 반비례하는 확률 P_imb를 둡니다. 드문 클래스의 샘플일수록 값이 커집니다.

두 확률은 Gini coefficient G로 섞습니다.

P_SABI = (1 − G) · P_SAB + G · P_imb

G는 클래스 개수 차이로 계산한 불균형 지표입니다. 0에 가까우면 균형, 클수록 불균형입니다. 데이터가 균형이면 G ≈ 0이라 SABI는 SAB와 거의 같습니다. 불균형이 심하면 드문 클래스 쪽 보정이 커집니다. 이 설계는 credal set 이론에서 아이디어를 얻었지만, 완전한 credal 분류기가 아니라 실용적인 샘플링 방법입니다.

그 밖에 SAB의 adaptive warming-up과 adaptive selection pressure를 그대로 씁니다. G는 학습 전에 한 번만 계산합니다.

실험 설정

  • 데이터: 텍스트 11개(AG News, Biomedical, Google S/T/TS, IMDB, PAN 19-1/19-5, Query Wellformedness, SST2, 20News)와 이미지 8개(CIFAR-10, CIFAR-100과 각각의 LT 10/50/100 버전). Google 데이터셋(G = 0.508)과 CIFAR LT 버전이 long-tail 분포입니다.
  • 모델: 텍스트는 bert-base-uncased, 이미지는 BEIT.
  • 비교 방법: Baseline, Active Bias, Recency Bias, Oversample, SAB.
  • 설정: learning rate 1×10⁻⁵, Adam, early stopping(5회), 이미지는 224×224. 시드 5개(40–44)의 평균을 보고했습니다.
  • 평가 지표: accuracy, macro F1. paired t-test로 p < 0.05인지 확인했습니다.

결과

아래 표는 논문 표에서 long-tail 데이터 위주로 일부 행만 옮긴 것입니다(표준편차 생략). 괄호 안은 Gini coefficient, 굵은 글씨는 최고 성능, *는 두 번째 방법 대비 통계적으로 유의(p < 0.05)함을 뜻합니다.

텍스트 데이터셋 (일부)

Dataset (Gini)MetricBaselineActive BiasRecency BiasOversampleSABSABI
GoogleS (0.508)Acc91.2591.4492.1292.5692.4092.68
GoogleS (0.508)Macro F189.2289.3089.6490.4489.8990.29
GoogleTS (0.508)Acc96.2496.1895.3896.4196.1296.52*
GoogleTS (0.508)Macro F193.9294.1094.1794.4494.2694.51*
20News (0.04)Acc84.4884.2684.9284.4085.2285.88*
20News (0.04)Macro F183.8184.3583.6584.2484.5385.14*

이미지 데이터셋 (일부)

Dataset (Gini)MetricBaselineActive BiasRecency BiasOversampleSABSABI
CIFAR-10 LT 100 (0.612)Acc83.3279.2283.7685.5984.5085.78*
CIFAR-10 LT 100 (0.612)Macro F183.1679.0383.6985.4483.3485.61*
CIFAR-100 LT 10 (0.35)Acc63.9664.5264.9167.1167.3267.49*
CIFAR-100 LT 10 (0.35)Macro F162.6863.3163.8366.7166.8167.05*
CIFAR-100 LT 100 (0.591)Acc44.7145.6744.5250.3349.8050.09
CIFAR-100 LT 100 (0.591)Macro F138.2339.5839.6247.1043.0946.53

평균으로 보면 SABI는 SAB보다 accuracy 0.22%, macro F1 0.75% 높았습니다. Oversampling보다는 각각 0.98%, 0.17% 높았습니다. Oversampling은 불균형이 심한 일부 데이터에서는 강하지만, 균형에 가까운 데이터에서는 SABI보다 낮았습니다.

GoogleTS를 Head/Body/Tail(30/92/30 라벨)로 나눠 macro F1을 보면, SABI는 Head(0.9959)와 Body(0.9402)에서 가장 높았습니다. Tail은 Oversampling(0.7563)이 가장 높았지만, SABI(0.7516)는 SAB(0.7200)보다 크게 올라 Oversampling에 가까워졌습니다. 즉 드문 클래스를 챙기면서도 많은 클래스의 성능을 잃지 않았습니다.

비용도 작습니다. 메모리는 4165.77 MB로 baseline(4157.88 MB) 대비 0.19% 늘었습니다. 샘플링에 78.5초가 더 들지만, 순수 학습 시간은 233.4초로 baseline(242.2초)보다 3.6% 짧았습니다.

한계와 다음 단계

  • SABI가 모든 경우에 가장 좋은 것은 아닙니다. 불균형이 매우 심한 일부 데이터(예: CIFAR-100 LT 100, Google S/T의 macro F1)에서는 드문 클래스를 강하게 밀어주는 Oversampling이 더 높았습니다. 논문은 SABI의 장점을 "모든 기준을 이기는 것"이 아니라 "여러 분포에서 균형 잡힌 성능"으로 설명합니다.
  • 샘플링 시간 때문에 전체 wall-clock 시간(311.9초)은 baseline(242.2초)보다 조금 깁니다.
  • 앞으로는 라벨 사이에 의존성이 있고 불균형이 더 심한 multi-label classification으로 확장할 계획입니다.