ABOUT ME

-

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

    댓글

©hyunbul