Ch.6 학습 관련 기술들/ 6.2 가중치의 초기값
6.2.1 초기값을 0으로 하면?
가중치 감소
- 가중치 매겨변수의 값이 작아지도록 학습
- 가중치 값을 작게 하여 오버피팅이 일어나지 않게 함
- 최대한 작은 값에서 시작
초기값을 모두 0으로 설정한다면?
- 학습이 올바르게 이뤄지지 않음
- 오차역전파법에서 모든 가중치의 값이 똑같이 갱신되기 때문
- 역전파 과정에서 update가 동일하게 이루어지며, 반복적으로 일어남
- 가중치를 여러 개 갖는 의미를 사라지게 함
6.2.2 은닉층의 활성화값 분포
Case 1: 정규분포*1 / 시그모이드
데이터가 0과 1에 치우쳐 분포하게 되면 역전파의 기울기 값이 점점 작아지다가 사라진다. 이를 기울기 소실 (gradient vanishing) 이라고 한다.
Case 2: 정규분포*0.01 / 시그모이드
0.5 부근에 집중되어있다. 0과 1에 치우치진 않았기 때문에 기울기 소실 문제는 없지만, 활성화값이 치우쳐져 있기 때문에 표현력을 제한한다는 관점에서 문제가 된다. 즉 다수의 뉴런이 거의 같은 값을 출력하게 되어, 여러 개의 뉴런을 둔 의미가 없어진다.
**각 층의 활성화값은 고루 분포되어어야 한다. 층과 층 사이에 적당하게 다양한 데이터가 흐르게 해야 신경망 학습이 효율적으로 이뤄진다.
Case 3: Xavier 초기값 / 시그모이드
Xavier 초기값은 일반적인 딥러닝 프레임워크들이 표준적으로 이용하고 있다.
이 초기값은 각 층의 활성화값들을 광범위하게 분포시킬 목적으로 가중치의 적절한 분포를 찾았다.
앞 계층의 노드가 n개라면 표준편차가 1/sqrt(n) 인 분포를 사용하면 된다.
node_num = 100 # 앞 층의 노드 수
w = np.random.randn(node_num, node_num) * np.sqrt(1.0 / node_num)
6.2.3 ReLU를 사용할 때의 가중치 초기값
Xavier 초기값은 활성화 함수가 선형ㅇ니 것을 전제로 이끈 결과이다. sigmoid 함수와 tanh함수는 좌우 대칭이라 중앙 부근이 선형인 함수로 볼 수 있다. 하지만 ReLU를 이용할 때는 이에 특화된 초기값을 이용하라 권장한다.
이 값을 He 초기값이라고 한다.
He 초기값은 앞 계층의 노드가 n개일 때, 표준편차가 sqrt(2/n)인 정규분포를 사용한다.
표준편차 0.01: 거의 학습이 이루어지지 않음
Xavier 초기값: 층이 깊어지면서 치우짐이 조금씩 커짐, '기울기 소실'문제를 일으킴
He 초기값: 모든 층에서 균일하게 분포, 층이 깊어져도 분포가 균일
결론
ReLU: He 초기값
sigmoid나 tanh등 S자 모양 곡선: Xavier 초기값
6.2.4 MNIST 데이터넷으로 본 가중치 초기값 비교
층별 뉴런이 100개인 5층 신경망에서 활성화 함수로 ReLU를 사용했다.