[Day 7] Optimization

2021. 8. 10. 22:02AI 부스트캠프

내가 생각하는 딥러닝 모델링 과정에서 가장 중요한 작업이다. 오늘은 최적화에 대해서 알아보려고 한다.

  • Generalization
    • train_set을 잘 학습시켰다고 해서 test_set이 잘 학습된다고 할 수 없다. 이 두개의 set 차이를 generalization gap 이라고 한다
  • Underfitting & Overfitting
    • test_set에 대해서 너무 잘 예측된다면, 그 set에서만 좋을 가능성도 높다. 이런 경우를 overfitting, 반대의 경우를 underfitting이라고 한다.      
  • Cross-validation
    • test_set을 쓰기전, 결과를 미리 판단하기위해 train_set에서 subset으로 나눠 한 set을 validation으로 두고 판단한다. 이 때, 데이터의 수가 제한적이라면 k-fold 방법을 대개 사용한다.
    • k-fold : train_set을 n개의(지정가능) subset으로 나눠서 하나의 subset을 validation_set으로 두고 나머지를 train_set으로 둔다. 이 때 input을 train_set만을 이용, test 할때 validation_set을 이용한다. 
  • Bias & Variance
    • Bias : 목표 타겟에 얼마나 집중되어있나
    • variance : 한곳에 얼마나 집중되어있나
  • Bagging & Bossting
    • Bagging : 학습데이터를 여러개 만들어서(random하게) output으로 나온값들의 평균 >>> 앙상블기법 >>> 병렬적임
    • boosting : 간단한 모델을 하나 만들고 그 모델에 대해서만 딥러닝을 수행한다 >> 만약 100개의 데이터중 20개에 대해서 예측을 잘 못한다면 >>> 예측이 잘 안된 데이터셋으로만 다시 모델을 만든다 >>> 반복! >>> 하나의 모델처럼 처리된다

 

  • Gradient Descent Methods
    1. SGD : gradient에 Learning rate을 곱하여 업데이트 / 단점 : learning rate을 잡기가 어렵다
    2. Momentum : gradient를 베타로 두고 계산한다.
      밑의 식은 SGD와 동일하다. 단, Alpha를 위의 식대로 계산하여 처리한다.
    3. Adam : gradient의 크기가 변함에 따라 + momentum적인 기법을 이용한 방법
      현재 가장 많이 이용되고 있는 기법이다.
  • Regularization
    1. early stopping : overfitting 되기전에 먼저 종료시키는 방법
    2. data augmentation : 한정된 data의 수를 늘려 학습을 시키는 방법
    3. noise robustness : weight에 노이즈를 넣어주면 학습이 더 잘된다고 알려져있는 방법 => 논란이 있고, 결과론적임
    4. label smoothing : 다음과 같은 과정을 통해 데이터의 양을 늘리고 결과적으로 더 좋은 성능을 보인다.
    5. dropout : 딥러닝 모델링을 하다보면 많은 신경망과 은닉층(hidden layer)들이 존재하는데, 랜덤하게 drop시켜주는 방법 

 

'AI 부스트캠프' 카테고리의 다른 글

[Day 9] RNN & Transformer  (0) 2021.08.12
[Day 8] CNN  (0) 2021.08.11
[Day 6] 딥러닝 basic & MLP  (0) 2021.08.09
[Day 1] numpy와 pandas  (4) 2021.08.06
[Day 5] 확률/통계학  (0) 2021.08.06