딥러닝 모델에서 가중치를 초기화하는 방법(weight initialization)

신경망을 학습할 때 가중치를 초기화하고 update해야하는데 어떻게 초기화해야 학습에 좋을까? 단순히 0으로 시작해버린다면 gradient가 0으로 계산되는 경우가 많을 것. 너무 큰 값으로 시작한다면, 계산된 activation이 너무 커질 것. 단순한 예시로 위와 같은 신경망에서, bias = 0이라고 가정한다면... z = W1(W2(W3...(Wn(X))..))로 계산되는데, n개의 weight들의 곱에 input X의 곱으로 중간 output이 계산된다. 만약 weight들의 원소가 1보다 작은 값들이라면.. weight들을 곱할수록 0에 가까워진다. 하지만, 1보다 조금이라도 크다면 weight들을 많이 곱할수록 매우 커진다. 그러다보니 weight들을 처음에 어떤 값들로 시작하는게 딥러닝 학..