[Tensorflow] 2-6. Weight Initialization

Weight Initialization

  사람의 신경망이 무언가에대해 인지하는 과정은 loss를 최소화 하는 과정과 같다. loss 함수가 위 그림의 왼쪽과 같다면, 시작점이 어디인지에 상관없이 최저의 loss를 찾는 것이 어렵지 않을 것이다. 하지만 실제 loss함수는 이보다 복잡하다. loss함수가 예를 들어 왼쪽의 그래프같이 생겼다고 가정하면, 시작점에따라 최저 loss를 찾지 못할 가능성이 다분해보인다. Global Minimum loss가아닌 Local Minimum에 빠질 수도 있고 최저 loss 근처에서 시작한다 하더라도 Seddle point에 낄 수 있다. 이 때문에 weight initialization은 매우 중요해보인다.
  지금까지 예제에서 사용했던 초기화방법은 RandomNormal 방식이었다. 즉 평균은 0 분산은 1인 weight initialization이다. 그 외의 가중치 초기화 방법에 대해 알아보자.
<기존 방식>

1
weight_init = tf.keras.initializaers.RandomNormal()
cs



  • Xavier Initialization 

평균은 0 분산은 2/(Channel_in + Channel_out) 으로 구성된 분포로 random한 weight 초기화 법

1
weight_init = tf.keras.initializaers.glorot_uniform()
cs


  • He Initialization
Relu 함수를 쓰는 weight 초기화 방법이다. Xavier와 평균은 같지만 분산은 2배 이다. 앞서 설명했듯 Relu이외에도 다양한 Activator 함수가 존재하지만 He 초기화는 Relu를 사용할때 매우 효율적이다. 


1
weight_init = tf.keras.initializaers.he_uniform()
cs







No comments:

Powered by Blogger.