[Day 7] Optimization
2021. 8. 10. 22:02ㆍAI 부스트캠프
내가 생각하는 딥러닝 모델링 과정에서 가장 중요한 작업이다. 오늘은 최적화에 대해서 알아보려고 한다.
- 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
- SGD : gradient에 Learning rate을 곱하여 업데이트 / 단점 : learning rate을 잡기가 어렵다
- Momentum : gradient를 베타로 두고 계산한다.
- Adam : gradient의 크기가 변함에 따라 + momentum적인 기법을 이용한 방법 현재 가장 많이 이용되고 있는 기법이다.
- Regularization
- early stopping : overfitting 되기전에 먼저 종료시키는 방법
- data augmentation : 한정된 data의 수를 늘려 학습을 시키는 방법
- noise robustness : weight에 노이즈를 넣어주면 학습이 더 잘된다고 알려져있는 방법 => 논란이 있고, 결과론적임
- label smoothing : 다음과 같은 과정을 통해 데이터의 양을 늘리고 결과적으로 더 좋은 성능을 보인다.
- 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 |