
v1 He init 은 iid Gaussian. 이번엔 직교(orthogonal) 초기화:
Saxe et al. (2013) 이 deep linear nets 분석에서 도입. RNN/Transformer에서 hidden state transition 에 자주 사용.
A = rng.normal(shape=(max(fi,fo), max(fi,fo))) 또는 필요한 직사각형.Q, R = np.linalg.qr(A).Q *= np.sign(np.diag(R)) — QR 유일성 확보.W = Q[:fan_in, :fan_out] 를 잘라내고 gain 곱.더 일반적으로:
fan_in >= fan_out: A shape (fan_in, fan_out), W = Qfan_in < fan_out: A shape (fan_out, fan_in), W = Q.T (rows orthonormal)함수 orthogonal_init(fan_in, fan_out, seed, gain=1.0) 를 완성하세요.
(fan_in, fan_out).fan_in >= fan_out 이면 W.T @ W = gain^2 · I; 반대면 W @ W.T = gain^2 · I.| # | 이름 | 검증 |
|---|---|---|
| 1 | shape (fan_in, fan_out) | |
| 2 | 직교성 (tall: W^T W = g^2 I) | |
| 3 | 직교성 (wide: W W^T = g^2 I) | |
| 4 | gain 스케일링 | gain=2 → 직교 2배 |
| 5 | 시드 재현성 | |
| 6 | 다른 시드 → 다른 W | |
| 7 | Norm 보존: ‖Wx‖ = g·‖x‖ | tall 케이스 |
코드를 작성하고 Run 을 눌러보세요.