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
'코딩💻' 카테고리의 다른 글
[Tensorflow] 배치사이즈와 num_steps이란? 적정하게 결정하기 (0) | 2024.01.09 |
---|---|
[Deep Learning] Hyperparameters , Kfold Cross-Validation, Keras tuner (0) | 2022.11.23 |
[Machine learning] 릿지회귀 (Ridge regression), One-Hot Encoding, 특성선택 (0) | 2022.11.16 |
[Machine learning] 과적합,과소적합, 회귀모델의 평가지표(MAE,MSE,RMSE) (0) | 2022.11.16 |
[Python] 동적계획법(Dynamic Programming), 탐욕알고리즘(Greedy) (0) | 2022.10.27 |