신경망·연습 문제

He Initialization

문제 설명PROBLEM

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
개념 노트와 실수 포인트

신경망

  • 순전파 → 손실 → 역전파(연쇄법칙) → 갱신.
  • ⚠️ 행렬곱 차원: A(m×n) @ B(n×p) — 안쪽 차원이 같아야 함.
  • 비선형 활성화가 없으면 층을 쌓아도 선형. 가중치 초기화 중요.