데이터 꿈나무
[Deep Learning] Weight Initialization (가중치 초기화) 본문
w = 0.01 * np.random.randn(Din, Dout)
- 위 코드는 zero-mean, unit-std를 갖는 가우시안 분포를 따르는 값들을 0.01 scaling 시켜주어 (std=0.01 로 만듦) 초기화시켜준 것이다.
- 이러한 방식은 작은 network에서는 잘 동작하지만 layer가 많아질 수록(모델이 깊어질수록) 문제가 발생하게 된다.
- 0.01은 제곱한 것이 분산으로 들어가게 된다. (= 루트 0.0001)

W를 0.01로 두면, 작은 값이 곱해지고 또 곱해져서 std가 점점 작아지는 현상을 볼 수 있다. (점점 0에 가까워진다.)
그렇기 때문에 모델 업데이트가 되지 않는다.

그렇다고 위 코드의 0.05처럼 W를 너무 크게 주면, -1과 1에만 몰려있게 되는 현상을 확인할 수 있다.

따라서, input 개수의 sqrt로 나눠주면 분산이 입력의 크기에 따라 정규화가 되므로 문제없이 학습이 가능하다.
'AI > Deep Learning' 카테고리의 다른 글
| [Deep Learning] Data augmentation (0) | 2024.03.24 |
|---|---|
| [Deep Learning] Inception Network (0) | 2024.03.23 |
| [Deep Learning] Conv Net(feat. Max Pooling) (0) | 2024.03.22 |
| [Deep Learning] Optimizing Parameters (0) | 2024.03.21 |
| [Deep Learning] Feed Forward Networks (0) | 2024.03.19 |
Comments