dev.Log
In-batch Augmentation이란 무엇인가 본문
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는 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=−logesim(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 = negative
하지만 실제 의미는 거의 동일하다.
모델은 이 둘을 멀어지게 학습하게 되고,
이는 embedding 공간 왜곡으로 이어질 수 있다.
STT에서도 동일하게 발생
문장 의미가 거의 같아도
다른 샘플이면 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다.
배치:
Loss:
L=−1N∑i=1Nlogesim(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=−logesim(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 조절까지 함께 고민하지 않으면
오히려 성능이 나빠질 수도 있다.
'인공지능' 카테고리의 다른 글
| 실제 서비스에서 Speaker Diarization 성능 평가 지표(DER) 정리 (1) | 2025.12.30 |
|---|---|
| NVIDIA NeMo Speaker Diarization(SD) 구조 정리 (0) | 2025.12.30 |
| ECNR이 뭐길래 STT 성능을 좌우할까 (0) | 2025.12.30 |
| Baseline / Ablation, 그리고 라벨링 이야기 (0) | 2025.12.29 |
| FP16과 BF16의 차이 (0) | 2025.12.29 |