연구실

#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에 잘 작동한다,