← 문제 목록/Spatial Dropout (채널 drop)
문제 해설

Spatial Dropout (채널 drop)

정규화 · easy

preview

Spatial Dropout (채널 단위 dropout-v1)

78번 Dropout각 원소를 독립적으로 끕니다. CNN의 feature map 에서는 이게 별로 효과적이지 않아요 — 한 채널 안의 공간적 인접한 값들이 강하게 상관 되기 때문에, 몇 개만 꺼도 다른 픽셀이 거의 같은 정보를 전달합니다.

Spatial Dropout (Tompson et al. 2015): feature map 한 채널 전체 를 통째로 drop.

수식

입력 XRN×C×H×WX \in \mathbb R^{N \times C \times H \times W} (batch, channel, height, width).

훈련 시:

  1. 각 (batch, channel) 에 대해 mn,cBernoulli(1p)m_{n, c} \sim \text{Bernoulli}(1-p). shape (N, C).
  2. 브로드캐스트해서 채널 전체 drop: Yn,c,h,w=Xn,c,h,wmn,c/(1p)Y_{n, c, h, w} = X_{n, c, h, w} \cdot m_{n, c} / (1-p).

inverted dropout-v1 관례 유지 (inference 시 스케일 없이 씀).

왜 채널 단위?

  • CNN feature map 은 같은 채널 내에서 공간적으로 강하게 상관 → 개별 원소 drop 은 실질적 정규화 효과 약함.
  • 채널 전체 drop → 모델이 다른 채널들의 조합 만으로도 예측해야 함 → feature 다양성 강제.
  • PyTorch Dropout2d, Keras SpatialDropout2D.

과제

함수 spatial_dropout-v1(x, p, seed, training) 을 완성하세요.

  • x shape (N, C, H, W). 정수 seed, bool training.
  • training=Falsex 그대로.
  • training=True → 마스크 (N, C) Bernoulli, 브로드캐스트 후 x * mask / (1-p).
  • p=1 에선 0 division 피하도록 방어 (하지만 테스트는 0 < p < 1).

테스트 케이스

#이름검증
1training=False → 그대로
2채널 단위 drop (한 채널 전체 0 또는 전체 정상)픽셀별 아님
3기대값 보존평균 ≈ 입력 평균
4시드 재현성
5dropped 채널은 정확히 0
코드 작성
Loading...
실행 결과

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