Weight Initialization 은
Gradient descent(경사하강법)을 하기전에 기울기값을 초기화 해준다라는 뜻이다.
실제 사용할 때는 대부분 Default 로 설정되어있어서 그냥 넘어가는 경우도 있지만 알아보도록하자.
기울기를 초기화 해준다는 것은 사실 생소하지만 당연한 것이다.
컴퓨터는 초기화해주지 않으면 쓰레기 값을 가지기 때문이다.
그래서 0으로 초기화를 해주거나 랜덤으로 초기화해주는 경우가 종종있지만.
딥러닝에서는 초기화 시점의 차이가 학습의 결과를 뒤바꿀 수 있으므로 보다 나은 초기화 방식을 모색하게 되었다.
초기화 시점의 차이가 학습 결과를 뒤바꿀 수 있다는 것을 풀어서 해석해보면
왼쪽 끝지점으로 초기화를 한 경우에는 local minimum 값이 학습결과가 될 것이고.
오른쪽 끝지점으로 초기화를 한 경우에는 global minimum 값이 학습결과가 될 것이다.
또 가중치의 설정에 따라 기울기 소실문제(Gradient 폭발 및 소멸 문제) 혹은 Overfitting & Underfitting 이 발생할 수 있다.
따라서 적절한 Weight Initalization이 필요하다.
방법으로는 크게 두 가지 방법이 있다.
1. Xavier Initialization ( Xavier Glorot 와 Yoshua Bengio 논문에서 권장 )
- 활성화 함수로 Sigmoid 함수나 Tanh 함수를 사용할 때 적용
- 다수의 딥러닝 라이브러리들에 Default로 적용되어 있음
- 표준 편차가 (루트1/n) 인 정규분포를 따르도록 가중치 초기화
* n 은 이전 레이어의 퍼셉트론 수
ex ) 퍼셉트론 수가 10000개 일 경우 선형결합을 했을 때
10000개의 결과를 합하기 때문에 값이 엄청 커지게 되어 활성화 함수를 통과했을때 높은 값을 계속해서 뱉어내게 된다.
하지만 가중치 초기화를 사용할 경우 (루트 1/10000) = 0.01 이 표준편차인 정규분포로 가중치를 초기화 해준다면.
결과를 합했을 때도 값이 커지지 않고,
반대로 퍼셉트론 수가 너무 적어도 값이 너무 적어지지 않게 된다.
2. He Initialization ( with ReLU , 2015 )
- 활성화 함수가 ReLU 함수일 때 적용
ReLU에서는 출력 값이 0으로 수렴하는 현상을 발생시키기 때문에 He Initialization 사용.
- 표준편차가 (루트 2/n) 인 정규분포를 따르도록 가중치 초기화
위 결과 처럼 초기화 방법에 따라 학습 결과가 달라지는 것을 알 수 있다.
* 파란색은 표준편차를 0.01로 기중치 초기화
'Machine learning > Deep Learning' 카테고리의 다른 글
[PyTorch] . Tensorflow(텐서플로) PyTorch(파이토치) 차이점 비교 (0) | 2021.09.15 |
---|---|
[Deep Learning] Tensorflow 자주 사용하는 Tensor 함수 정리 (0) | 2021.08.21 |
[Deep Learning] Activation Function ( 활성화 함수 ) - 비선형 함수(non linear function ) (0) | 2021.08.17 |
[Deep Learning] Activation Function ( 활성화 함수 ) - 2. 종류 (0) | 2021.01.31 |
[Deep Learning] loss function - Cross Entropy (0) | 2021.01.12 |