AI Model을 작성할때 bias와 weight를 초기화 해야한다.
해당 초기화 값 기준으로 서서히 model에 맞게 fitting 되는데, 초기화 값을 잘못 설정할 경우
등의 문제를 겪을 수 있다.
따라서 가중치 초기화 하는 방법에 대해 알아 보겠다.
Weight initialization(가중치 초기화) 방법 중 오늘은 3가지를 소개하겠다.
1. Small Gausssian Random
2. Large Gaussian Random
3. Xavier Initialization
Small Gaussian Random은 ~에서 데이터를 Sampling 하여
작은 값(0.01)을 곱해 초기화 하는 방법이다.
하지만 일때, 기울기 소실 우려가 있다.
이므로 일때 Vanishing Gradient(기울기 소실)이 일어날 수 있다.
Large Gaussian Random 또한 Small Gaussian Random과 같이 ~에서 데이터를 Sampling한다.
하지만 해당 방법에도 문제가 있는데
1. 극단적으로 값이 로 수렴한다는 것
2. Output이 커질수록 Gradient Expording(기울기 폭발)이 된다는 것
3. 일때, Vaninshing Gradient(기울기 소실)이 된다는 것
위와 같은 문제로 해당 방법론도 잘 쓰지 않게 되었다.
그렇다면 어떠한 방법을 많이 쓸까?
Xavier Initialization을 제일 많이 쓰는데
해당 방법도 위의 방법들과 같이 ~ 에서 Sampling 하지만
Sampling된 값에다 을 곱하여 처리한다.
이렇게 처리하게 되면 위에서 발생한 문제인
Gradient Expording(기울기 폭발) 및 Vanishing Gradient(기울기 소실)이 이루어지지 않게 되어
적절하게 가중치 초기화를 할 수 있다.
위의 방법론들을 직접 구현 하려면 꽤나 귀찮은 일이다.
그래서 PyTorch에서는 자동 Implement되어 가중치 초기화 하는 함수만 호출해주면 자동으로 생성된다.