Optimization 관련 용어가 많으므로 이를 정확히 이해하고 넘어가는게 중요하다.
Gradient Descent : 1차 편미분한 값을 빼 loss function을 줄인다.
Generalization
Overfitting vs Underfitting
Overfitting
Underfitting
둘의 중간 지점을 잘 찾아야 적절한 결과를 얻을 수 있다.
Cross-validation
학습할 때 training data과 test data를 나누는데, 이를 적절한 비율로 나누는 것이 중요하다.
cross-validation
cross-validation을 해서 최적의 parameter set을 찾고, 이를 고정시키고 학습 때는 모든 data를 다 사용한다. ???
Bias, Variance
Bias
Variance
Bias, Variance tradeoff
Bootstrapping
Bagging, Boosting
Bagging
Boosting
Gradient Descent Methods : SGD, Mini-batch, batch
Batch-size : 일반적으로 작게 잡는게 성능이 좋다.
Pytorch나 tensorflow 등에서 자동으로 미분을 계산해준다(automatic differentiation)
미분은 알아서 해주지만 Optimizer는 상황에 맞게 내가 잘 골라야 한다.
Optimizer
(Stochastic) Gradient Descent
Momentum(관성)
Nestrov Accelerated Gradient
Adagard
Adadelta
learning rate가 없다.
바꿀 수 있는 요소가 많이 없어서 잘 활용되지는 않는다.
RMSprop
Adam
Regularization
Generalization을 잘 되게 하기 위해 사용(학습에 반대되게 함, 학습을 방해함)
학습을 방해함으로서 얻는 이점 : 학습데이터에만 잘 작동하는 것이 아닌, 실제 test data에도 잘 동작하게 함.
학습을 위한 도구 같은거라 하나씩 직접 해봐야 잘 되는지 안 되는지 알지만, 보통은 잘 된다.
Early stopping
Parameter norm penalty
Data Augmentation
Noise Robustness
Label smoothing
Dropout
Batch normalization
현재까진 CV쪽 기술이 친숙하고, CV로 간다고 해서 관심있는 분야가 없거나 취업에 불리하진 않을 것 같다는 생각이 들기 시작했다. 조금 더 관련 일자리에 대해 조사해보고 최종적으로 어느 파트를 공부할 지 결론을 내려야겠다.
선택 과제를 하루종일 준비했는데, 완전히 이해도 못하고 코드도 못 적고 있다. 일단 통계학에 대한 복습이 많이 필요한 것 같다.(확률분포 관련)