ed-kyu 2022. 2. 7. 14:02

<Optimization>

 

Optimization 목차

Generalization

Under-fitting, over-fitting

Cross validation

Bias-variance tradeoff

Bootstrapping

Bagging and boosting

Gradient Descent Methods

Batch-size 정하기

Optimizer 종류

 

Generalization

Generalization이 좋다 = Test error와 Training error 차이가 적다 != 실제로 좋은 모델이다*

*training error가 크고 test error와 차이가 적으면 (둘 다 error가 크면) generalization이 좋아도 성능은 나쁜 것..

 

Under-fitting, over-fitting

 

Cross validation

학습 데이터와 validation data를 어떻게 나눌지 => 최적의 하이퍼파라미터를 찾는 과정

ex) K-fold

 

Bias-variance tradeoff

탄착군 생각이 난다...

bias, variance, noise

cost를 minimize한다는 것은 bias^2, variance, noise의 합을 minimize 하는 것이다.

따라서, noise가 껴있는 데이터라면, bias, variance를 줄이기가 힘들다. (이미 noise가 일정 수준 존재하기 때문)

 

Bootstrapping

학습 데이터를 100프로 사용하는 것이 아니라, 나눠서 여러 개의 모델을 만드는 것(sub-sampling), 평균을 내서 사용하거나 등의 기법을 활용하는데 사용

 

Bagging and boosting

Bagging = Bootstrapping aggregating = 캐글에서 말하는 Ensemble(앙상블) 기법이 이것

Boosting = 여러 개의 모델을 seqeuntial하게 합침

 

Gradient Descent Methods

1. Stochastic Gradient Descent = SGD

 

2. Mini-batch Gradient Descent => 대부분의 딥러닝

 

3. Batch Gradient Descent

 

Batch-size 정하기

Batch size를 줄이면 일반적으로 Generalization performance가 좋아진다.

 

Optimizer 종류

tensorflow, pytorch에 이미 구현되어 있으니 고르기만 하면 된다.

 

1. SGD (Stochastic Gradient Descent)

 

2. Momentum

 

3. Nesterov Accelerate Gradient (NAG)

 

4. Adagrad

 

5. Adadelta

learning rate가 없어서 잘 활용은 안된다.

 

6. RMSprop

 

7. Adam

 


<Regularization>

 

Regularization 목차

Early stopping

Parameter norm penalty

Data augmentation

Noise robustness

Label smoothing

Dropout

Batch normalization