프로필사진

IT Anthology/encyclopedia

[밑러닝] Xavier 가중치 초깃값 설정법과 He 가중치 초깃값 설정법

다각 2020. 4. 15. 20:02

* 이 글은 <밑바닥부터 시작하는 딥러닝2 (저자: 사이토 고키)> 책을 읽으며 정리한 글입니다.
* 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌,
필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다.


목차

  1. 적절한 가중치 초깃값 설정이 필요한 이유
  2. Xavier 초깃값 설정과 tanh 활성화함수
  3. He 초깃값 설정과 ReLU 활성화함수

1. 적절한 가중치 초깃값 설정이 필요한 이유

이전 포스팅에서, 가중치의 초깃값을 랜덤으로 설정한 것을 기억하는가? (params['W1'] = np.random.normal(0, weight_init_std, (input_size, hidden_size)))


초깃값을 0으로 동일하게 하면, 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문에 가중치 여러개를 설정한 의미가 없게 된다. 따라서 초깃값을 랜덤으로 설정한다. 하지만 그냥 무작위로 랜덤하게 설정하는 것보다는, 특정 규칙에 따라 퍼지도록 설정하면 여러가지 문제 없이 효과적으로 학습을 할 수 있다. 이번 포스팅에서는 대표적인 두개의 방법을 소개하겠다.

 

2. Xavier 초깃값 설정과 tanh 활성화함수

Xavier 초깃값 설정은 앞 계층의 노드가 $n$개일 때 표준편차가 $\sqrt {\frac {1}{n}}$인 분포를 갖도록 가중치의 초깃값을 설정하는 방식이다. Xavier 초깃값은 특히 tanh 활성화함수와 어울릴 때 효과가 좋다.

 

3. He 초깃값 설정과 ReLU 활성화함수

He 초깃값 설정은 앞 계층의 노드가 $n$개일 때 표준편차가 $\sqrt {\frac {2}{n}}$인 정규분포를 이루도록 가중치의 초깃값을 설정하는 방식이다. ReLU 함수가 음의 영역이 0이다 보니, 더 넓게 분포시키기 위해 2배의 계수가 필요하다고 직관적으로 해석이 가능하다.

 


 

정리
가중치의 초깃값을 적절히 설정해야함을 배웠다. 활성화값 분포를 적당히 퍼뜨리면 학습이 원활해진다. 하지만 복잡한 신경망 구성에서 가중치 초깃값까지 신경쓰기는 너무 귀찮다. 이것을 해결하기 위해 2015년, 배치 정규화가 등장했다. 이는 각 층이 활성화를 적당히 퍼뜨리도록 강제하는 역할을 한다. 바로 다음 포스팅에 배치 정규화에 대한 이야기를 해보도록 하겠다.