+ Weight Initialization을 왜 사용하나요?
만약 초기 Weight 값이 0이라면 학습이 불가능할 것이며, 처음부터 Weight 값이 최적의 값들이라면 gradient 값이 작더라도 좋은 모델을 만들 수 있을 것입니다.
만약 Weight 값들을 평균 0, 표준편차 1인 표준 정규분포로 초기화 한 경우 Sigmoid 함수의 출력값이 0과 1에 치우치게 됩니다. 출력값이 0과 1에 치우치게 되면 Gradient는 0에 가까운 값을 갖게 되므로 Gradient Vanishing 문제가 일어날 수 있습니다.
따라서 Weight를 잘 설정하여 출력값의 분포를 안정화시켜주는 것이 중요합니다.
Weight Initalization 방법으로는 Xavier Initalization과 He Initalization 방법이 있습니다.
Xavier Initalization 방법은 표준 정규 분포를 입력 개수의 표준편차로 나누어주는 방법입니다.
층마다 노드 개수가 다르더라도 이에 맞게 가중치가 초기화되기 때문에 고정된 표준편차를 사용하는 것보다 훨씬 더 강건(Robust)합니다.
이 방법은 Sigmoid나 Tanh 함수를 거친 출력값들이 표준 정규 분포 형태를 가질 수 있어서 Sigmoid나 Tanh를 activation function으로 사용할 때 많이 사용합니다.
그러나 Xavier Initalization을 하고 ReLU 함수를 activation Function으로 사용하게 되면 출력값이 평균과 표준편차 모두 0으로 수렴하게 됩니다.
ReLU 함수에 적합한 Initalization 방법은 He Initalization 입니다.
He Initalization은 표준 정규 분포를 입력 개수의 절반의 제곱근으로 나누어주는 방법입니다.
따라서 Activation Function으로 Sigmoid나 Tanh를 사용할 경우에는 Xavier Initalization을,
ReLU를 사용할 때는 He Initalization을 많이 사용합니다.
https://yngie-c.github.io/deep%20learning/2020/03/17/parameter_init/
https://gomguard.tistory.com/184
https://mole-starseeker.tistory.com/42