dev.Log

In-batch Augmentation이란 무엇인가 본문

인공지능

In-batch Augmentation이란 무엇인가

초코푸딩 2025. 12. 30. 10:57

batch size, false negative, STT/RAG loss까지 한 번에 정리

최근 STT, RAG, sentence embedding, contrastive learning 관련 논문이나 코드에서
in-batch augmentation 또는 in-batch negatives라는 표현을 자주 볼 수 있다.
처음 접하면 “데이터 증강이랑 무슨 관계지?”라는 의문이 들기 쉬운데,
실제로는 기존 augmentation과는 전혀 다른 개념이다.

이 글에서는 다음 세 가지를 중심으로 정리한다.

  • In-batch augmentation이 무엇인지
  • 왜 batch size를 키우면 성능이 좋아지는지
  • false negative는 왜 생기는지
  • STT / RAG에서 실제로 사용하는 loss 형태

1. In-batch augmentation이란?

In-batch augmentation

배치(batch) 안에 포함된 다른 샘플들을 추가적인 학습 신호로 활용하는 방식이다.

일반적인 데이터 증강은

  • noise 추가
  • crop, masking
  • speed perturbation
    처럼 하나의 샘플을 변형하는 방식이다.

반면 in-batch augmentation은

  • 새로운 데이터를 만들지 않고
  • 같은 배치에 들어온 다른 샘플들을 그대로 활용한다.

즉,

배치 내부의 샘플들이 서로에게 정답과 오답의 역할을 한다.


2. 직관적인 예시

배치에 다음과 같은 샘플이 있다고 가정해보자.

 
(A, 정답 A) (B, 정답 B) (C, 정답 C)

A 샘플 기준으로 보면:

  • A는 positive (정답)
  • B, C는 negative (오답)

B와 C도 동일한 방식으로 학습된다.

이렇게 배치 안에 있는 다른 샘플들이 자동으로 negative sample이 되는 것이
in-batch augmentation의 핵심이다.


3. 왜 batch size를 키우면 성능이 좋아질까?

핵심은 단순하다.

Batch size 증가 = in-batch negative 증가

batch size가 작은 경우

  • negative 개수가 적음
  • 모델이 대충 구분해도 loss가 낮아짐
  • embedding 공간이 느슨해짐

batch size가 큰 경우

  • negative 개수가 많아짐
  • 모델이 훨씬 정교하게 구분해야 함
  • embedding 공간이 더 잘 정렬됨

수식으로 보면

대표적인 contrastive loss(InfoNCE)는 다음과 같은 형태다.

L=−log⁡esim(q,p+)∑i=1Nesim(q,pi)\mathcal{L} = -\log \frac{e^{sim(q, p^+)}} {\sum_{i=1}^{N} e^{sim(q, p_i)}}

  • 분모에 들어가는 항의 개수 = batch size
  • batch size가 커질수록 loss 최소화가 어려워짐
  • 결과적으로 모델이 더 좋은 표현을 학습하게 됨

이 때문에 large batch + in-batch negative 조합은
retrieval, embedding, RAG에서 매우 강력하다.


4. False Negative는 왜 생길까?

정의

False negative란,

모델 학습에서는 오답으로 취급했지만, 실제로는 의미적으로 정답에 가까운 샘플

을 의미한다.


예시 (NLP / RAG)

 
A: "오늘 날씨 어때?" B: "지금 날씨 알려줘"

학습에서는:

  • A ↔ B = negative

하지만 실제 의미는 거의 동일하다.

모델은 이 둘을 멀어지게 학습하게 되고,
이는 embedding 공간 왜곡으로 이어질 수 있다.


STT에서도 동일하게 발생

 
음성 A: "회의 시작합니다" 음성 B: "회의를 시작하겠습니다"

문장 의미가 거의 같아도
다른 샘플이면 negative로 처리된다.


왜 in-batch에서 특히 문제가 될까?

  • 배치 내 샘플들은 보통
    • 같은 도메인
    • 같은 데이터셋
    • 비슷한 분포
  • 의미적으로 유사한 샘플이 섞일 확률이 높음

그래서 batch size를 키울수록
false negative 위험도 함께 증가한다.


5. False Negative 완화 방법 (실무)

실제 시스템에서는 다음과 같은 방법을 사용한다.

  • temperature 조절 (negative 영향 완화)
  • diverse sampling으로 batch 구성
  • cross-batch memory 사용
  • debiased contrastive loss
  • hard negative filtering

batch size를 무작정 키우기보다는
이런 기법들과 함께 사용하는 것이 일반적이다.


6. STT / RAG에서 실제로 사용하는 loss 형태

6.1 RAG / Sentence Embedding

가장 널리 쓰이는 형태는
Multiple Negative Ranking Loss다.

배치:

 
(Q1, P1) (Q2, P2) (Q3, P3)

Loss:

L=−1N∑i=1Nlog⁡esim(Qi,Pi)∑j=1Nesim(Qi,Pj)\mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{sim(Q_i, P_i)}} {\sum_{j=1}^{N} e^{sim(Q_i, P_j)}}

  • 같은 배치의 다른 문서들이 전부 negative
  • in-batch augmentation의 대표적인 구현

6.2 STT 음성-텍스트 정렬

음성 임베딩 A와 텍스트 임베딩 T를 정렬할 때:

L=−log⁡esim(Ai,Ti)∑jesim(Ai,Tj)\mathcal{L} = -\log \frac{e^{sim(A_i, T_i)}} {\sum_{j} e^{sim(A_i, T_j)}}

wav2vec, NeMo, multimodal STT에서 흔히 사용된다.


6.3 STT + CTC 결합 (실무형)

실제 STT 시스템에서는 보통 다음처럼 결합한다.

Ltotal=λLCTC+(1−λ)Lcontrastive\mathcal{L}_{total} = \lambda \mathcal{L}_{CTC} + (1 - \lambda) \mathcal{L}_{contrastive}

  • CTC: 음성-문자 시퀀스 학습
  • Contrastive: 의미 및 표현 정렬

인식률과 표현 안정성을 동시에 잡기 위한 구조다.


7. 정리

  • In-batch augmentation은 배치 내부 샘플을 학습 재료로 재활용하는 방식이다.
  • batch size가 커질수록 negative 수가 증가해 성능이 좋아질 가능성이 높다.
  • 하지만 false negative 위험도 함께 증가한다.
  • STT, RAG, embedding 시스템에서는 in-batch negative 기반 contrastive loss가 사실상 표준이다.

마무리

In-batch augmentation은
단순한 트릭이 아니라,
대규모 STT / RAG / retrieval 시스템 성능을 좌우하는 핵심 설계 요소다.

batch 구성, loss 설계, temperature 조절까지 함께 고민하지 않으면
오히려 성능이 나빠질 수도 있다.

Comments