Improving Deep Neural Networks : Hyperparameter tuning, Regularization and Optimization : Coursera 강좌 Deeplearning.ai 정리

2017. 8. 30. 22:19




 Setting up your Machine Learning Application

 

1. Train / Dev / Test sets

  • Train Set : 학습을 위한 데이터 셋
  • Dev Set : Cross validation Set
    • Train set으로 학습한 모델들을 비교하여 좋은 모델을 선택하기 위함
    • 즉 어떤 모델을 선택할지 결정되므로, 이 또한 학습에 영향을 미친다는 것을 의미
  • Test Set : 학습과정에서 전혀 본적없는 데이터 셋으로 학습된 모델을 평가하기 위한 데이터 셋
    • 이는 학습된 모델이 얼마나 잘 학습 되었나를 검사하기 위한 목적, 혹시나 오버피팅이 되지 않았나..
  • 예전에는 60%/20%/20%로 데이터를 나누고 실험을 수행했으나, 요즘에는 데이터가 매우 많아서 98%/1%/1%로 분리하여 실험해도 됨
  • 중요한 것은 dev set과 test set의 분포가 같아야 한다는 것 --> 즉, 확인 후 실험을 해야 함. 아니면 뻘짓
Key-Point
dev set과 test set는 엄밀히 다르다. dev set은 학습 과정에서 모델을 선택하기 위해 사용되므로, dev set에 overfitting된다. 따라서 test set과 dev set은 구분해서 명칭하자.


2. Bias / Variance



3. Basic Recipe for Machine Learning



1. Mini-batch gradient descent

  • 트레이닝 셋이 만약 (n_x, 1,000,000) 이라면, backpropagation을 한번 하기 위해 너무 많은 시간이 걸림
  • 빠르게 학습하기 위해, 학습 데이터를 적당한 크기로 나눔
  • (n_x, 1,000)으로 나누면 전체 학습 데이터에 대해 1000번 gradient descent를 수행할 수 있음
  • n_x는 입력 특징의 차원수
  • 1 epoch 는 모든 학습 데이터에 대해 backpropagation을 완료한 경우를 말함



2. understanding mini-batch gradient decent

  • 전체 학습 데이터로 backpropagation을 수행하면 자연스럽게 cost가 감소하지만, mini-batch로 할 경우 cost의 전체적인 경향은 감소하나, 노이즈같이 왔다갔다하는 모습을 보임
  • mini-batch size = m(학습 데이터의 수) : batch gradient descent
  • mini-batch size = 1 : stochastic gradient descent
  • 미니 배치 사이즈의 결정
    • 학습 데이터가 작다면( m <= 2000) : batch gradient descent를 사용
    • 이왕이면, 2^n의 크기로 할당하는 것이 속도 측면에서 유리함
    • cpu/gpu의 메모리에 적합하게 맞춰라

3. Exponentially weighted averages
  • Moving average에 대해 설명함
  • 평균의 양을 1/(1-베타)로 근사해서 계산하는데, 이유는 모르겠음


4. Understanding exponentially weighted averages

  • 가중치 평균의 방법은 결국 지수적으로 가중치를 주어 평균내는 것과 같은 효과를 갖는다.
  • 메모리도 많이 사용하지 않고, 간단해서 좋음
  • 아래에서 0.9^10 = 0.35 = 1/e라는데 이건 무슨 의미인지 모르겠음
  • 결국 10일동안의 가중치 평균을 나타낸다는 의미 같은데,..


5. bias coreection in exponentially weight averages

  • 이 방법을 사용할 경우, 초기에는 매우 작은 값을 갖게됨.
  • 이러한 문제를 해결? 보정하기 위한 방법을 설명함


6. Gradient descent with momentum

  • 위에서 설명한 내용을 Gradient descent에 적용하는 방법에 대해 설명


  • 구현 방법에 대해 설명
  • 학습율(알파)를 베타에 포함되어 있다고 생각하면, 더 간단하게 식을 표현할 수 있다고 설명하는 것 같음



7. RMSprop

  • 개념은 모멘텀과 유사한 것 같음
  • 이건 좀 더 자세히 읽어보자..


8. Adam(Adaptive Moment Estimation) optimization algorithm : [논문]


  • 여러 최적화 방법 및 gradient descent 방법이 제안되었는데, 다방면에 잘되는 것을 찾기는 어려웠다.
  • 하지만 adam 과 rmsprop는 많은 연구에서 좋은 결과를 보였기 때문에, 이 방법을 추천한다.
  • adam은 모멘텀과 rmsprop을 기본적으로 취한다.
  • 베타1은 일반적으로 0.9, 베타2는 0.999를 추천(adam 논문 저자)
  • 입실론의 선택은 별로 중요하지 않음. 논문의 저자는 10^-8을 추천
  • 학습율의 선택이 중요함



9. learning rate decay

  • 학습율을 학습이 진행됨에 따라 조금씩 줄이는 것이 학습 속도에 도움을 줌
  • 이것을 learning rate decay라고 부른다.
  • 작은 미니배치로 학습을 진행하면, 전체적으로 최소값을 향하는 경향이 있다. 하지만, 정확하게 일치하지 않음
  • 알파를 고정된 값으로 사용하면 방황하다가 수렴을 못할 수 있다.




 Programming Assignment

 

1. Initialization

신경망의 가중치(W) 초기화 방법에 따른 모델 성능 비교

  • W를 모두 0으로 준 경우
  • W를 랜덤한 큰 값을 준 경우
  • W를 He Initialization의 방법을 이용한 경우 ( He Initialization"; this is named for the first author of He et al., 2015)
  • 결론
    • 가중치 초기화 방법에 따라 학습 속도와 성능의 차이가 발생함
    • 초기 가중치를 너무 크게 줄 경우 문제가 발생함 : sigmoid 미분값이 매우 작은 수이기 때문으로 생각됨
    • 모두 0으로 주는 경우 : symmetry 문제 발생 ( 모든 노드의 연산이 같아짐..)
    • Different initializations lead to different results
    • Random initialization is used to break symmetry and make sure different hidden units can learn different things
    • Don't intialize to values that are too large
    • He initialization works well for networks with ReLU activations.


2. Regularization


3. Gradient Checking




  1. Blog Icon
    Chansung

    오.. deeplearning.ai specialization을 듣는 분을 뵙게되어 반갑습니다. 저는 오늘 하이퍼 파라메터관련 week2를 시작 했네요~ ㅎㅎ 좋은 글 보고 갑니다~^^