상세 컨텐츠

본문 제목

MLDL 학부연구생 학습내용 정리03 - 가중치의 초기값

ML&DL

by 앱등개발자IOS 2022. 10. 10. 15:18

본문

13. 가중치의 초기값

 

Ø  가중치 초기값에 따라 은닉층 활성화 값들이 바뀌는 것을 관찰함으로써, 가중치 초기값 설정이 학습에 미치는 영향을 분석해본 실험

 

5Layer, 각 층은 100개의 노드로 구성, Input data 1000개 정규분포로 생성,

Sigmoid 활성함수 사용, 활성화 값( Sigmoid 출력값 ) 분포를 관찰

 

1.     np.random.randn을 이용하여 표준편차 1인 정규분포 가중치 사용

 

 Sigmoid 출력값

활성화 값들이 0,1에 치우쳐 분포 => 역전파 시 대부분 기울기 값이 0에 가까움 =>기울기 소실 (Vanishing Gradient)

 

2.     표준편차가 0.01인 정규분포 가중치를 사용

                                          => Sigmoid 출력 값이 0.5 부근에 집중됨

 

기울기 소실문제는 해결된 듯 보이나, 활성화 값들이 치우쳤다는 것? => 표현력 관점에서 문제

( Input data가 정규분포를 따르고있다는 점이 핵심)

l  활성화 값들이 치우쳤다 => 신경망의 표현력이 떨어진다

l  활성화 값은 적당히 고루 분포되어야한다!

 

3.     Xavier 초기값 사용

 

Xavier의 논문은 앞 층의 입력 노드 수, 다음 층 출력 노드 수를 고려하여 가중치 초기설정값을 계산하도록 제안했으나, Caffe등 프레임워크에서는 앞 층의 입력노드 수만으로 계산하도록 단순화 하였다.( 여러 라이브러리에서 이와 같이 구현되어있음)

 

=> 앞 층의 노드가 N개라면, 표준편차가 ( 1 / sqrt(n) )인 분포를 가중치에 사용하면 활성함수의 표현력을 해치지 않는다는 결론이 나왔다.

 

=> 오른쪽으로 갈수록 일그러지는 것은 Sigmoid대신 tanh를 사용하면 개선된다.

 

l  But, Xavier 초기값은 활성화 함수가 선형인 경우에 알맞은 설정이다.

l  Sigmoid, tanh는 모두 중앙 부근이 선형에 가깝기 때문에 위과 같이 좋은 결과를 도출해낸 것.

 

ReLU와 같은 비선형 활성함수를 사용할 때에는 ReLU에 특화된 초기값 이용해야한다!

 

#  Kaiming He가 제안한 He초기값   

#  Layer의 노드 수가 n일 때, 표준편차가 sqrt( 2 / n )인 정규분포 사용

 

 

 

# 표준편차가 0.01인 정규분포 가중치 / Xavier 초기가중치값 / He 초기 가중치 사용하여

ReLU 활성함수의 출력값을 살펴보았다.

 

1.     std = = 0.01인 정규분포 초기값

 

각 층의 활성화 값들이 매우 작은 값, 0에 치우쳐있다. 이는 역전파 시, 정보를 충분히 전달할 수 없다.

 

2.     Xavier 초기값

 

층이 깊어지며 치우침이 조금씩 커지고, 기울기 소실 문제를 야기할 것이다.

 

3.     He 초기값

 

층이 깊어져도 분포가 균일하여, 역전파 시에도 적절한 값이 나와 학습(갱신)이 제대로 이루어질 것을 기대할 수 있다.

 

 

²  현재는 ReLU에는 He초기 가중치,

²   sigmoid, tanh에는 Xavier 초기 가중치를 쓰는 것이 모범적이다.

 

실제 MNIST 데이터셋과 5Layer( 각 층 뉴런 수 100) ReLU 활성화함수를 사용했을 때의 손실함수 값 추이이다.

 

 

관련글 더보기