weight initialization

J. Hwang·2024년 8월 13일

머신 러닝에서 초기 가중치 설정은 매우 중요하다. 같은 모델을 훈련시키더라도 가중치의 초기 값을 어떻게 설정하느냐에 따라 결과가 달라질 수 있다.

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하게 설정하되 ×1n\times \frac{1}{\sqrt{n}} (nn = input size)를 해주면 layer들을 여러번 통과해도 weight가 적당한 범위로 남게 되어 학습을 잘 시킬 수 있다.

References

https://blog.naver.com/handuelly/221831940317

profile
Let it code

0개의 댓글