신경망·연습 문제

He Uniform Initialization

문제 설명PROBLEM

preview

He Uniform Initialization

86번 He Init (Normal) 은 가우시안 분포를 썼습니다. Uniform 버전 은 균일분포를 쓰되 같은 분산 이 되도록:

WijU(b,b),b=6fan_inW_{ij} \sim U(-b, b), \quad b = \sqrt{\frac{6}{\text{fan\_in}}}

6/n\sqrt{6/n} 인가?

균일분포 U(b,b)U(-b, b) 의 분산은: Var=(2b)212=b23\text{Var} = \frac{(2b)^2}{12} = \frac{b^2}{3}

He init 의 목표 분산은 2/n2/n. 그래서: b23=2n    b=6/n\frac{b^2}{3} = \frac{2}{n} \implies b = \sqrt{6/n}

Uniform vs Normal

특성He NormalHe Uniform
분포가우시안균일
꼬리길다 (큰 값 희박하게 등장)잘림
분산동일 2/n2/n동일 2/n2/n
실무거의 차이 없음거의 차이 없음

PyTorch 기본은 uniform (kaiming_uniform_), TensorFlow Keras 는 normal 이 더 일반적. 둘 다 통용됨.

과제

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

  • 반환: shape (fan_in, fan_out), 값 (b,b)\in (-b, b) with b=6/fan_inb = \sqrt{6 / \text{fan\_in}}.
  • rng = np.random.default_rng(seed); rng.uniform(-b, b, size=(fan_in, fan_out)).

테스트 케이스

#이름검증
1shape (fan_in, fan_out)
2평균 ≈ 0큰 크기
3범위 ⊂ (-b, b)b = √(6/fan_in)
4분산 ≈ 2/fan_in같은 분산
5시드 재현성
개념 노트와 실수 포인트

신경망

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