-
#7. Initialization연구실 2019. 10. 7. 12:42
- initialization을 잘 하면 learning에도 큰 영향을 미친다.
(1) gradient descent의 convergence 속도를 빠르게 할 수 있다.
(2) gradient descent의 수렴값이 낮은 training error를 가지도록 만들어준다.
* Neural Network model
- Zero initialization
- Random initialization
- He initialization: initializes the weights to random values scaled according to a paper by He et al., 2015
* Zero initialization
- 두 가지 종류의 parameter를 initialize할 수 있다.
(1) the weight matrics(W[1], W[2], ..., W[L-1], W[L])
(2) the bias vectors(b[1], b[2], ..., b[L-1], b[L])
- 15000번 돌려도 cost는 변하지 않는다. 왜냐하면 0으로 초기화를 하게 되면 모든 example에 대해 0으로 예측을 하기 때문이다.
즉 각 layer의 모든 뉴런이 같은 값을 가지게 되고, 항상 같은 값으로 layer를 학습시키게 되므로 logistic regression과 같은 선형 분류기에 불과한 성능을 가지게 된다.
- 정리하자면 1) symmetry를 break하기 위해셔는 W[l]이 랜덤한 값으로 초기화 되어야 하며, 2) b[l]은 0으로 초기화되어도 괜찮다. 왜냐하면 symmetry는 w[l]가 랜덤값인 한 break되기 때문이다.
* Random Initialization
- Zero initialization보다 훨씬 더 나은 성능을 보이게 된다. 더이상 결과를 모두 0으로 내보내지 않고 있다,
- weight가 매우 큰 랜덤값으로 초기화되기 때문에 cost가 매우 큰 값에서부터 시작한다.
- 더 오래 네트워크를 학습 시킬수록 더 좋은 결과값이 나오지만, 좋지 않은 초기화 값을 가지고 있는 경우 optimization을 느리게 만들 뿐만 아니라 vanishing/exploding gradients 문제를 발생시킬수도 있다.
* He initialization
- 'He initialization'은 He et al., 2015에서 소개된 방법으로 sqrt(2./layers_dims[l-1]).로 초기화를 하는 방법이다.
- 세 initialization방법을 비교하자면 다음과 같다.
- 정리하자면
(1) 어떤 초기화 값이냐에 따라 다른 결과를 가져올 수 있다.
(2) 랜덤 초기화 방법은 균형을 깨고 각각의 hidden units들이 다른 값을 learn 할 수 있도록 만들어준다,
(3) 초기화 값을 너무 크게 만들지 말자.
(4) He initialization은 ReLU에 잘 작동한다,
'연구실' 카테고리의 다른 글
#10. Optimization Methods (0) 2019.10.10 #9. Gradient Checking (0) 2019.10.07 #6. Building your Deep Neural Network: Step by Step (0) 2019.10.04 #5. Classification with one hidden layer (0) 2019.10.02 #4. Logistic Regression with a Neural Network midset (0) 2019.09.29