← 문제 목록/Dropout (Inverted)
문제 해설

Dropout (Inverted)

최적화 · easy

preview

Dropout (Inverted)

신경망의 과적합을 막는 가장 단순하고 효과적인 정규화. 훈련 시점에 뉴런을 랜덤하게 꺼버리는 (출력을 0으로) 기법 — 모델이 특정 뉴런에 과도하게 의존하지 못하게 만듭니다.

Inverted Dropout (표준 구현)

훈련 시: yi=xi1p1[mi=1]y_i = \frac{x_i}{1-p} \cdot \mathbb{1}[m_i = 1]

여기서 miBernoulli(1p)m_i \sim \text{Bernoulli}(1-p). survive 한 값을 1/(1p)1/(1-p)스케일업 해서 기대값을 보존:

E[yi]=(1p)xi1p+p0=xiE[y_i] = (1-p) \cdot \frac{x_i}{1-p} + p \cdot 0 = x_i

덕분에 평가(inference) 시엔 그냥 y = x — 별도 스케일 조정 불필요.

과제

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

  • training=Falsex 그대로 반환.
  • training=Truerng.random(x.shape) > p 마스크 만들고 x * mask / (1 - p).
  • seednp.random.default_rng(seed) 에 전달.

테스트 케이스

#이름검증
1training=False → 그대로
2p=0, training=True → 그대로
3기대값 보존 (큰 샘플)평균 ≈ 입력 평균
4시드 재현성
5dropped 원소는 0survived 는 x/(1-p)
코드 작성
Loading...
실행 결과

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