← 문제 목록/레이블 스무딩 (Label Smoothing)
문제 해설

레이블 스무딩 (Label Smoothing)

데이터 전처리 · easy

preview

레이블 스무딩 (Label Smoothing)

10번 one-hot 의 응용. 정답 클래스에 1 대신 1 - ε 을 주고, 나머지에 ε / (K - 1) 을 분배합니다:

y~ij={1εj=yiε/(K1)otherwise\tilde{y}_{ij} = \begin{cases} 1 - \varepsilon & j = y_i \\ \varepsilon / (K - 1) & \text{otherwise} \end{cases}

여전히 각 행의 합은 1 (확률 분포).

왜 하나?

분류기에 "100% 확신하지 마" 라는 시그널. 모델이 학습 데이터의 정답 레이블을 너무 자신 있게 예측하지 않도록 억제해서:

  • 과적합 감소
  • 캘리브레이션 개선 (예측 확률이 실제 정답률과 더 잘 맞음)
  • Transformer, Inception v3 등 고전 대형 분류기의 표준 트릭.

ε = 0 이면 원본 one-hot 과 동일.

과제

함수 label_smooth(y, num_classes, epsilon) 를 완성하세요.

  • y 정수 1D 배열.
  • 반환 shape (N, K) float 배열.
  • np.full + 인덱싱으로 on_value, off_value 세팅.

테스트 케이스

#이름검증
1각 행 합 = 1result.sum(axis=1) ≈ 1
2정답 위치 값 = 1 - ε해당 셀이 1 - ε
3다른 위치 값 = ε / (K - 1)맞아야 함
4ε = 0 → one-hotnp.eye(K)[y] 과 동일
5shape (N, K)
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.