w 를 모두 0으로 초기화할 경우 업데이트도 모두 같은 값으로 바뀐다. 이렇게 되면 제대로 된 학습이 이루어지지 않는다.
때문에 초깃값은 랜덤하게 설정해야 한다.
정규분포(가우시안 분포)
분산 : 표준편차 σ의 제곱
그래프의 면적은 1에 수렴한다. 왼쪽 두 그래프를 보면 표준편차 σ는 절반이지만 높이는 2배이다.
sigmoid 함수에서의 가중치 w 초깃값
w 의 분포를 표준편차 σ를 1로 설정했을 경우 w ~ N(0, 1^2) 에 sigmoid 함수의 출력값(활성화값) 분포
각 층의 활성화값들이 0과 1에 치우쳐 분포되어 있다. 시그모이드 함수는 그 출력이 0 또는 1에 가까워지면 그 미분값은 0에 가까워진다. 그래서 데이터가 0과 1에 치우쳐 분포하게 되면 역전파의 기울기 값이 점점 작아지다가 사라진다. 이것을 기울기 소실(gradient vanishing)이라고 한다. 층을 깊게 하는 딥러닝에서는 기울기 소실은 더 심각한 문제가 될 수 있다.
w 의 분포를 표준편차 σ를 0.01로 설정했을 경우 w ~ N(0, 0.01^2) 에 sigmoid 함수의 출력값(활성화값) 분포
이번에는 0.5 부근에 집중되었다. 앞의 예처럼 0과 1로 치우치진 않았으니 기울기 소실 문제는 일어나지 않았지만, 활성화값들이 치우쳐져 있어 뉴런을 여러 개 둔 의미가 사라진다. 그래서 활성화값들이 치우치면 표현력을 제한한다는 관점에서 문제가 된다.
Xavier(사비에르) 초깃값
앞 계층의 노드가 n개라면 표준편차가 1/sqrt(n)인 분포를 사용한다.
위의 표준편차를 사용했을 경우의 sigmoid 함수의 활성화값 분포
Xavier 초깃값을 사용한 결과를 보면, 형태가 일그러지지만, 값들이 적당히 퍼져 있으며, 시그모이드 함수의 표현력도 제한받지 않고 학습이 효율적으로 이루어질 것을 기대할 수 있다.
위와 같은 일그러짐은 tanh 함수(쌍곡선 함수)를 이용하면 말끔한 종모양의 분포로 개선된다. tanh 함수도 sigmoid 함수처럼 S곡선을 가진 함수이다. 차이점은 sigmoid 함수는 원점 (0, 0.5)에서 대칭이고 tanh 함수는 원점 (0, 0)에서 대칭인 S곡선이다. 활성화함수용으로는 원점에서 대칭인 함수가 바람직하다고 알려져 있다.
ReLU 함수에서의 가중치 w 초깃값
He 초깃값
앞 계층의 노드가 n개일 때, 표준편차가 √(2/n) 인 정규분포를 사용한다.
ReLU 함수의 특성상 0에서 큰 분포를 가진 것 외에, 모든 층에서 균일하게 분포된 것을 확인 할 수 있다.
층이 깊어져도 분포가 균일하게 유지되어 역전파 때도 적절한 값이 나올 것으로 기대할 수 있다.
MNIST 데이터셋으로 본 가중치 초깃값 비교
표준편차가 0.01인 정규분포인 경우에는 학습이 전혀 이뤄지지 않았다. 가중치가 0으로 수렴하면서 역전파를 할 때 기울기가 너무 작아져 가중치가 거의 갱신되지 않았기 때문이다.
결론적으로 활성화 함수로 ReLU를 사용할 때는 He 초깃값을,
sigmoid나 tanh 등의 S자 모양 곡선을 사용할 때는 Xavier 초깃값을 사용하는 게 좋다.
사진 출처 및 참고
https://brunch.co.kr/@linecard/541
https://koreanfoodie.me/178?category=848327
'딥러닝' 카테고리의 다른 글
밑바닥부터 시작하는 딥러닝 Chapter7 - CNN 합성곱신경망 (0) | 2022.06.28 |
---|---|
밑바닥부터 시작하는 딥러닝 Chapter6 - 배치 정규화 (0) | 2022.06.27 |
밑바닥부터 시작하는 딥러닝 Chapter6 - 학습 관련 기술들 (0) | 2022.06.26 |
밑바닥부터 시작하는 딥러닝 Chapter5 - 오차역전파법 (0) | 2022.06.25 |
밑바닥부터 시작하는 딥러닝 Chapter4 - 신경망 학습 (0) | 2022.06.17 |
댓글