머신 러닝에서 초기 가중치 설정은 매우 중요하다. 같은 모델을 훈련시키더라도 가중치의 초기 값을 어떻게 설정하느냐에 따라 결과가 달라질 수 있다.
Small Gaussian random
- weight를 표준 정규 분포를 따르는 값으로 랜덤하게 생성하되 (
np.random.randn) 작은 상수 (0.01)을 곱한다.
- (activation function으로 tanh 함수를 사용) 그러나 layer들을 통과할수록 output의 범위가 급격하게 줄어들게 되며, 이는 기울기가 0에 가까워져서 학습이 되지 않는다는 것을 의미한다.
- 따라서 얕은 신경망 학습에서는 좋은 결과를 낼 수도 있다.
Large gaussian random
- 그렇다면 표준 정규 분포를 따르는 값으로 랜덤하게 생성하되 큰 상수를 곱하면 어떻게 될까?
- output 범위가 극단값 (-1 or 1) 으로 밀려나게 되고, gradient가 0이 되면서 마찬가지로 학습이 잘 되지 않게 된다.
Xavier initialization
- weight를 random하게 설정하되 ×n1 (n = input size)를 해주면 layer들을 여러번 통과해도 weight가 적당한 범위로 남게 되어 학습을 잘 시킬 수 있다.
References
https://blog.naver.com/handuelly/221831940317