let us not love with words or tongue but actions and truth.

IT/머신러닝(수업)

가중치 초기값- He, Xavier initialization

sarah0518 2021. 11. 14. 22:24

가중치 초기값

 

이번에는 가중치 초기값의 2가지 규칙과

초기화 기법 2가지 방법을 알아보겠습니다.

 

 

가중치 초기값에서는 아래의 2개의 규칙만 기억해주면 됩니다.

 

1. 가능하면 작은 값의 가중치를 사용

   (단, 가중치 값들이 동일한 값을 갖으면 안됨)

 

2. 각 층의 활성화 함수를 거쳐 나온 값들은 적당히 골고루 분포되어있어야 함

 

2번 규칙을 조금 더 자세히 알아보도록 하죠.

 

아래 그림은 w값이 평균 0, 표준편차 1인 정규분포에서 초기화 시킨 후,

sigmoid 활성화 함수를 거쳐 나온 값입니다.

from Pytorch로 배우는 딥러닝

 

결론을 말하면 위의 출력값들은 좋지 못한 값을 가지고 있습니다.

 

왜냐하면, 

sigmoid출력값이 0과 1에 치우쳐져 있기 때문에,

back propagation을 진행하게 되면

아래 그림과 같이 sigmoid함수에서 양 극단의 값의 기울기는 0이되는 

vanishing gradient문제가 발생하기 때문입니다.

 

w의 표준편차가 더 커지면 커질 수록

vanishing gradient문제는 더 많이 발생할 것입니다. 

from Pytorch로 배우는 딥러닝

 

 

그렇다면, 이번엔 w를 초기화 시킬 때, 

평균 0, 표준편차 0.01로 작은 표준편차를 갖게 해보겠습니다. 

from Pytorch로 배우는 딥러닝

vanishing gradient문제는 해결 되었지만,

출력값이 치우쳐져 있다는 문제점이 있습니다.

 

따라서, 적당히 골고루 분포되어있게 만들어 주는 것이 중요합니다.

 

그때 사용하는 기법이 아래와 같이 2가지 방법이 있습니다.

 

  • Xavier initialization
  • He initialization

1. Xavier initialization

from Pytorch로 배우는 딥러닝

주로 sigmoid, tanh와 같은 S자형 곡선을 갖는 활성화 함수와 같이 쓰임.

즉, 뉴런의 개수가 많아지면 그 만큼 적은 값의 분포를 활용하는 것입니다.

 

 

2. He initialization

from Pytorch로 배우는 딥러닝

ReLU와 주로 같이 쓰임.