수학/딥러닝 이론

[딥러닝] 3. 가중치의 초깃값 - ReLU를 사용할 때의 가중치 초깃값 - He 초깃값

AI 꿈나무 2020. 10. 3. 19:21
반응형

사이토고키의 <밑바닥부터 시작하는 딥러닝>을 공부하고 정리해보았습니다.

 


 

 

[딥러닝] 2. 가중치의 초깃값 - 가중치의 초깃값에 따라 은닉층의 활성화값 분포 변화, Xavier 초깃�

사이토고키의 <밑바닥부터 시작하는 딥러닝>을 공부하고 정리해보았습니다. 을 공부하고 정리해보았습니다. 가중치의 초깃값  신경망 학습에서 특히 중요한 것이 가중치의 초깃값입니다.  가�

deep-learning-study.tistory.com

 이전 포스팅에서는 표준편차 초깃값, Xavier 초깃값에 대해 알아보았습니다.

 

 이번에는 활성화 함수로 ReLU를 이용할 때의 초깃값을 알아보겠습니다.

 

ReLU를 사용할 때의 가중치 초깃값 - He 초깃값

 ReLU를 이용할 때는 ReLU에 특화된 초깃값을 이용해야 합니다.

 

 이 특화된 초깃값을 He 초깃값이라 합니다.

 

 He 초깃값은 앞 계층의 노드가 n개일 때, 표준편차가 $\sqrt\frac{2}{n}$인 정규분포를 사용합니다.

 

 Xavier 초깃값은 $\sqrt\frac{1}{n}$이었습니다.

 

 ReLU는 음의 영역이 0이라서 더 넓게 분포시키기 위해 2배의 계수가 필요하다고 생각할 수 있습니다.

 

 그러면 활성화 함수로 ReLU를 이용한 경우의 활성화값 분포를 보겠습니다.

 

활성화 함수로 ReLU를 사용한 경우의 가중치 초깃값에 따른 활성화값 분포 변화

 

 결과를 보면 std = 0.01일 때의 각 층의 활성화들은 아주 작은 값들입니다.

 신경망에 아주 작은 데이터가 흐른다는 것은 역전파 때 가중치의 기울기 역시 작아진다는 의미입니다.

 이는 중대한 문제이며, 실제로도 학습이 거의 이뤄지지 않습니다

 

 이어서 Xavier 초깃값 결과를 보면 층이 깊어지면서 치우침이 조금씩 커집니다.

 실제로 층이 깊어지면 활성화값들의 치우침도 커지고, 학습할 때 '기울기 소실'문제를 일으킵니다.

 

 마지막으로 He 초깃값은 모든 층에서 균일하게 분포되었습니다.

 층이 깊어져도 분포가 균일하게 유지되기에 역전파 때도 적절한 값이 나올 것으로 기대할 수 있습니다.

 

 활성화 함수로 ReLU를 사용할 때는 He 초깃값을, sigmoid나 tanh 등의 S자 모양 곡선일 때는 Xavier 초깃값을 쓰는 것이 현재의 모범 사례라고 할 수 있습니다.

 

MNIST 데이터셋으로 본 가중치 초깃값 비교

 '실제' 데이터를 가지고 가중치의 초깃값을 주는 방법이 신경망 학습에 얼마나 영향을 주는지 보겠습니다.

 

 지금까지 살펴본 세 경우(std = 0.01, Xavier 초깃값, He 초깃값) 모두를 실험해보겠습니다.

 

 

 이 실험은 층별 뉴런 수가 100개인 5층 신경망에서 활성화 함수로 ReLU를 사용했습니다.

 

 std = 0.01일 때는 학습이 전혀 이뤄지지 않습니다.

 활성화 값의 분포에서 본 것처럼 순전파 때 너무 작은 값이 흐르기 때문입니다.

 그로 인해 역전파 떄의 기울기도 작아져 가중치가 거의 갱신되지 않습니다.

 

 Xavier 초깃값과 He 초깃값의 경우는 학습이 순조롭게 이뤄지고 있습니다.

 다만 학습 진도는 He 초깃값이 더 빠릅니다.

 

 

 지금까지 살펴보았듯 가중치의 초깃값은 신경망 학습에 아주 중요한 포인트입니다.

 

반응형