← 문제 목록/He Initialization
문제 해설

He Initialization

신경망 · easy

preview

He Initialization

ReLU 네트워크 용 가중치 초기화 기법. He et al. (2015) 가 제안. 각 층의 활성화 분산이 층마다 균일하게 유지되도록 설계:

WijN ⁣(0, 2fan_in)W_{ij} \sim \mathcal{N}\!\left(0,\ \frac{2}{\text{fan\_in}}\right)

즉 표준편차 = 2/fan_in\sqrt{2 / \text{fan\_in}}, fan_in 은 입력 뉴런 수.

왜 이게 필요한가

  • 너무 작은 초기값 → 신호가 층을 거치며 소실 (vanishing)
  • 너무 큰 초기값 → 폭발 (exploding)
  • ReLU는 절반이 0 → variance 가 절반씩 줄어듦. He init은 ×2\times 2 로 보정.

Xavier/Glorot 과 비교

  • Xavier: std = sqrt(1 / fan_in) — tanh/sigmoid-v1 용
  • He: std = sqrt(2 / fan_in) — ReLU 용 (두 배)

과제

함수 he_init(fan_in, fan_out, seed) 를 완성하세요.

  • fan_in, fan_out: 정수.
  • 반환: shape (fan_in, fan_out) 가중치 행렬.
  • rng.normal(0, std, size=...) 사용, std = sqrt(2 / fan_in).

테스트 케이스

#이름검증
1shape (fan_in, fan_out)
2평균 ≈ 0 (큰 크기)
3표준편차 ≈ √(2/fan_in)
4시드 재현성
5다른 fan_in → 다른 std
코드 작성
Loading...
실행 결과

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