콘텐츠로 이동

데이터 증강 (Data Augmentation)

개요

데이터 증강(Data Augmentation)은 기존 데이터에 변환을 적용하여 학습 데이터의 양과 다양성을 인위적으로 늘리는 기법이다. 데이터 수집이 비용이 크거나 어려운 상황에서 과적합을 줄이고 모델의 일반화 성능을 향상시키는 데 핵심적인 역할을 한다. 특히 이미지 분류에서는 사실상 필수 기법이며, 텍스트, 오디오, 정형 데이터 등에도 다양한 기법이 존재한다.


핵심 개념

1. 이미지 증강 (Image Augmentation)

범주 기법 설명
기하학적 변환 회전, 뒤집기, 크롭, 확대/축소, 이동 위치/방향에 불변하도록 학습
색상 변환 밝기, 대비, 채도, 색조 변경 조명 조건 변화에 강건
노이즈 가우시안 노이즈, 블러 이미지 품질 변화에 강건
마스킹 Random Erasing, Cutout, GridMask 부분 가려짐에 강건

주요 라이브러리: - Albumentations: 빠르고 다양한 증강 제공, 파이프라인 구성 용이 - torchvision.transforms: PyTorch 내장, 기본적 증강

2. 텍스트 증강 (Text Augmentation)

기법 설명 주의점
동의어 치환 WordNet 또는 임베딩 기반 유사어로 대체 의미 변질 주의
역번역 (Back Translation) 한국어 → 영어 → 한국어 자연스러운 패러프레이즈
Random Insertion/Deletion/Swap EDA 기법 과도한 변형 주의
LLM 기반 증강 GPT로 paraphrase 생성 품질 높지만 비용

3. Mixup과 변형

Mixup

두 샘플을 선형 보간하여 새 샘플을 생성한다:

\[\tilde{x} = \lambda x_i + (1-\lambda) x_j$$ $$\tilde{y} = \lambda y_i + (1-\lambda) y_j$$ $$\lambda \sim \text{Beta}(\alpha, \alpha)\]

직관: 결정 경계를 부드럽게 만들어 과적합을 줄인다.

CutMix

이미지의 일부 영역을 다른 이미지로 대체하고, 라벨도 면적 비율에 맞게 혼합한다.

\[\tilde{y} = \lambda y_A + (1-\lambda) y_B, \quad \lambda = 1 - \frac{w_r \cdot h_r}{W \cdot H}\]

Cutout

이미지의 일부를 0(또는 랜덤 색)으로 마스킹한다. Random Erasing과 유사하다.

Manifold Mixup

입력 대신 중간 은닉층에서 mixup을 적용한다. 더 깊은 수준의 표현 공간에서 결정 경계를 부드럽게 한다.

Mixup 계열 비교:

기법 적용 위치 영역 라벨 혼합
Mixup 입력 전체 이미지 비율 혼합
CutMix 입력 부분 영역 면적 비율
Cutout 입력 부분 영역 (마스킹) 원본 유지
Manifold Mixup 은닉층 전체 표현 비율 혼합

4. 오디오/정형 데이터 증강

오디오: - SpecAugment: 시간/주파수 축 마스킹 (ASR에서 표준) - 시간 신축 (time stretching) - 피치 변환 (pitch shift)

정형 데이터: - SMOTE (증강과 오버샘플링의 경계) - Feature noise injection: 소량의 노이즈 추가 - Mixup for tabular data


상세 내용

Test-Time Augmentation (TTA)

추론 시 입력에 여러 증강을 적용하고, 각 증강 버전의 예측을 평균(또는 다수결)한다.

graph LR
    img["원본 이미지"] --> a1["증강 1<br>(좌우 반전)"]
    img --> a2["증강 2<br>(회전 +5°)"]
    img --> a3["증강 3<br>(크롭)"]
    img --> a4["원본"]

    a1 --> m1["모델"] --> p1["예측 1"]
    a2 --> m2["모델"] --> p2["예측 2"]
    a3 --> m3["모델"] --> p3["예측 3"]
    a4 --> m4["모델"] --> p4["예측 4"]

    p1 & p2 & p3 & p4 --> avg["평균"]
    avg --> final["최종 예측"]
  • 추론 시간이 증강 수만큼 증가하지만, 성능 향상을 얻을 수 있다 (보통 0.5~2% 정도)
  • 대회에서 자주 사용되며, 프로덕션에서는 지연 시간 제약을 고려해야 한다

증강 파이프라인 설계 원칙

  1. 도메인 지식 기반: 숫자 인식에서 180도 회전은 6과 9를 혼동시킨다. 의료 영상에서 좌우 반전은 장기 위치를 바꾼다.

  2. 점진적 강도 증가: 약한 증강으로 시작하여, 모델이 수렴하지 않을 때 강도를 높인다.

  3. AutoAugment / RandAugment: 증강 정책을 자동으로 탐색하거나, 랜덤하게 조합한다. 수동 설계보다 우수한 경우가 많다.


언제 사용하는가

상황 추천 증강 효과
이미지 분류 (데이터 부족) 기하학적 + 색상 + Cutout 매우 높음
이미지 분류 (데이터 충분) Mixup, CutMix 정규화 효과
텍스트 분류 (데이터 부족) 역번역, 동의어 치환 중간~높음
음성 인식 SpecAugment 매우 높음
객체 탐지 Mosaic, Mixup, 기하학적 높음
정형 데이터 SMOTE, Noise injection 제한적
최종 추론 정확도 향상 TTA 중간

흔한 오해와 함정

  1. 과도한 증강: 너무 강한 증강은 원래 데이터의 학습 신호를 훼손한다. 모델이 수렴하지 못하거나 성능이 오히려 하락할 수 있다.

  2. 도메인 부적합 증강: 위성 사진에서 상하 반전은 유효하지만, 필기체 인식에서는 문제가 된다. 도메인 지식이 증강 설계의 기반이 되어야 한다.

  3. 테스트 데이터에 증강 적용 (학습 시): 증강은 학습 데이터에만 적용한다. 테스트/검증 세트는 원본 데이터로 평가해야 한다. (TTA는 추론 시 별도의 전략)

  4. 증강이 데이터 수집을 대체한다: 증강은 다양성을 높이지만, 근본적으로 새로운 정보를 추가하지는 않는다. 더 많은 실제 데이터가 항상 더 낫다.

  5. 데이터 누수: 같은 원본 이미지의 증강 결과가 학습과 검증에 모두 포함되면 성능이 과대 추정된다. 분할 후에 증강을 적용해야 한다.


다른 주제와의 연결