본문 바로가기
코딩💻

[Deep Learning] 학습률, 가중치 초기화, 과적합

by 하암꿈 2022. 11. 16.
728x90

학습률,  가중치 초기화,  과적합,  L1, L2

 

 

학습률(Learning rate)

 

  • 학습률이란 매 가중치에 대해 구해진 기울기 값을 얼마나 경사 하강법에 적용할 지를 결정하는 하이퍼파라미터이다.
  • 경사 하강법이 산길을 내려가는 과정이라면 학습률은 보폭을 결정하게 된다.

  • 최적의 학습률을 찾는것이 중요하다.

 

  • 학습률 감소 (Learning rate Decay)
    • 학습률 감소는 Adagrad, RMSprop, Adam 과 같은 주요 옵티마이저에 이미 구현되어 있기 때문에 쉽게 적용할 수 있다.
    • .compile 내에 있는 optimizer= 에 Adam 등의 옵티마이저 적용 후 내부 하이퍼파라미터를 변경하면 학습률 감소를 적용할 수 있다.
  • 학습률 계획법 (Learning rate Scheduling)
    • .experimental 내부의 함수를 사용하여 설계

Q: warm up 을 사용하는 이유는?

A: 쉽게 생각해서 한번에 학습률이 크면 잘못된 방향으로도 크게 껑충 뛸수도 있을것이다. 다시 돌아오기 어려우므로 학습이 될 때까지는 조금씩만 증가하도록 하는 것이다.

 

 

가중치 초기화(Weight Initialization)

 

가중치 초기화 방법은 여러 가지가 있다

 

  • Xavier 초기화를 해주었을 때의 활성화 값의 분포
    • 노드의 수가 달라질때 다른 표준편차 값을 사용한다라고 생각.

 

  • He 초기화를 해주었을 때의 활성화 값의 분포
    • Xavier 초기화는 활성화 함수가 시그모이드(Sigmoid)인 신경망에서는 잘 동작하지만 ReLU 일 경우에는 층이 지날수록 활성값이 고르지 못하게 되는 문제가 있다.

 

 

과적합 (Overfitting)

 

  • 모델이 복잡해지면 과적합(Overfitting) 문제가 발생하는 경향이 발생한다.
  • Weight Decay (가중치 감소)
    • 과적합은 가중치의 값이 클 때 주로 발생하므로 가중치 값이 너무 커지지 않도록 조건을 추가
    • 가중치 감소를 적용하고 싶은 층에 regularizer 파라미터를 추가하면 된다.
  • Dropout (드롭아웃)
    • Iteration 마다 레이어 노드 중 일부를 사용하지 않으면서 학습을 진행하는 방법
    • Dropout 을 적용하고 싶은 층 다음에 Dropout 함수를 추가하면 된다
    •  0~1 사이의 실수를 입력
  • Early Stopping (조기 종료)
    • 학습(Train) 데이터에 대한 손실은 계속 줄어들지만 검증(Validation) 데이터셋에 대한 손실은 증가한다면 학습을 종료하도록 설정하는 방법

 

  • 더하기 전 좌측이 일반적인  cost function이고 여기에 가중치 절대값을 더해준다. 편미분 을 하면 w값은 상수값이 되어버리고, 그 부호에 따라 +-가 결정된다. 가중치가 너무 작은 경우는 상수 값에 의해서 weight가 0이 되어버린다. → 결과적으로 몇몇 중요한 가중치 들만 남게된다
  • Cost function에 제곱한 가중치 값을 더해줌으로써 편미분 을 통해 back propacation 할 때 Cost 뿐만 아니라 가중치 또한 줄어드는 방식으로 학습을 한다. 특정 가중치가 비이상적으로 커지는 상황을 방지하고, Weight decay 가능해진다. 즉, 전체적으로 가중치를 작아지게 하여 과적합을 방지하는 것이다.

 

 L1, L2 차이점

 

  • L1
    • 오류를 더해주는 것이다.
    • 절대값을 사용하기 때문에 미분을 했을 때 0이 될 수 있다.
    • feature selection에 강점이 있으며, 이상치에 덜 민감하다.
  • L2
    • 제곱을 씌워 최단기간을 나타내는 것이다.
    • 제곱을 사용하기 때문에 미분을 해도 0이 되지 않는다.
    • 제곱값이기 때문에 이상치에 예민하다.
      • 더하기 전 좌측이 일반적인  cost function이고 여기에 가중치 절대값을 더해준다. 편미분 을 하면 w값은 상수값이 되어버리고, 그 부호에 따라 +-가 결정된다. 가중치가 너무 작은 경우는 상수 값에 의해서 weight가 0이 되어버린다. → 결과적으로 몇몇 중요한 가중치 들만 남게된다L2 Regularization은 가중치 업데이트 시, 가중치의 크기가 직접적인 영향을 미칩니다. 따라서, L2는 L1 보다 가중치 규제에 좀 더 효과적입니다.
      • Cost function에 제곱한 가중치 값을 더해줌으로써 편미분 을 통해 back propacation 할 때 Cost 뿐만 아니라 가중치 또한 줄어드는 방식으로 학습을 한다. 특정 가중치가 비이상적으로 커지는 상황을 방지하고, Weight decay 가능해진다. 즉, 전체적으로 가중치를 작아지게 하여 과적합을 방지하는 것이다.
300x250