(03강) Optimization

  • 최적화와 관련된 주요한 용어와 다양한 Gradient Descent 기법에 대해 학습

  • Generalization, Overfitting, Cross-validation 등 용어의 의미 학습

  • 기존 SGD(Stochastic Gradient Descent)가 더 잘 학습될 수 있도록 하는 다양한 기법

  • Gradient Descent 기법에 따른 성능의 변화

Further Questions

  • 올바르게(?) cross-validation을 하기 위해서는 어떻 방법들이 존재할까요?

  • Time series의 경우 일반적인 k-fold cv를 사용해도 될까요?

Further Reading

1. Introduction

Gradient Descent

반복된 미분을 통해 극소값을 찾아나가는 방법

2. Optimization과 관련된 용어

2.1. Generalization

학습이 진행됨에 따라 학습데이터가 아닌 실제 데이터에 대해서 성능이 떨어지게 되는 지점이 발생한다. 여기서 Generatlization이란, 학습데이터에 대한 결과와 실제 데이터에 대한 결과가 얼마나 유사하게 학습되었는지를 의미한다.

2.2. Underfitting vs Overfitting

  • Overfitting : 학습데이터에는 잘 맞지만 실제 데이터는 잘 못맞추는 경우

  • Underfitting : 너무 간단한 네트워크나 학습횟수가 너무 적어 학습데이터도 잘 못맞추는 경우

2.3. Cross-Validation

위와 같은 Overfitting 되는 문제를 해소하기 위한 방법으로 train data를 fold k개로 나누고 각 1~k번째 data set을 validation으로 하여 7번의 학습을 진행하는 방법

  • 위 방법을 사용함으로써 특정 validation set에 데이터가 쏠리는 현상에 대한 문제를 해소할 수 있다.

  • stratified cross validation은 Label의 분포도 균등하게 하는 방법이다.

2.4. Bias and Variance

  • Variance : 출력의 일관성 정도

  • Bias : 평균적으로 봤을 때 정확도 여부

2.5. Bootstrapping

학습 데이터를 나누고, 이를 가지고 여러 모델을 만들어서 사용한다.

예를 들어 학습데이터가 100개가 있을때, 이를 모두 사용해서 학습을 하는 것이 아니라 여러개의 데이터(subset)셋으로 나누고 이를 가지고 여러 모델과 metric을 만들어서 사용하는 방법

2.6. Bagging vs. Boosting

  • Bagging (Bootstrapping aggregating)

    • Multiple models are being trained with bootstrapping.

    • ex) Base classifiers are fitted on random subset where individual predictions are aggregated(voting or averaging)

    • 앙상블의 개념과 비슷하다고 생각된다.

  • Boosting

    • It focuses on those specific training samples that are hard to classify

    • A Strong model is built by combining weak learners in sequence where each learner learns from the mistakes of the previous weak learner

    • n층 모델을 만드는 개념 같이 생각하면 좋을 듯

3. Practical Gradient Descent Methods

3.1. Gradient Descent methods

  • Stochastic gradient descent

    • Update with the gradient computed from a single sample.

  • Mini-batch gradient descent

    • Update with the gradient computed from a subset of data.

  • Batch gradient descent

    • Update with the gradient computed from the whole data.

Batch-size

학습을 함에 있어서 한번에 학습시킬 양을 정하는 Batch-size가 단순히 속도와 성능에 따라 정하게 된다고 생각할 수 있지만, 성능에도 영향을 끼치기 마련이다.

일반적으로 배치의 크기가 작을수록 실제 데이터에서의 성능이 보장되기 마련이다.

  • Stochastic gradient descent

    • Learning rate을 적절히 선택하기가 어렵다.

  • Momentum

    • 흐르던 방향에 대한 정보를 어느정도 가지고 가자는 아이디어

  • Nesterov accelerated gradient

    • 한번 이동한 후에 그 다음 값에 대한 예측을 하여 방향을 유지하는 방식

    • Momentum이 로컬 미니멈으로 수렴하지 못하거나 오래걸리는 문제를 해결해 준다.

  • Adagrad

    • 각 파라미터 별로 변화의 정도를 저장하여 그만큼 가중치를 두고 weight를 업데이트 하는 방식

    • 진행됨에 따라 학습이 점점 잘 안되는 현상이 발생한다.

  • Adadelta

    • Adagrad가 가지는 문제를 해소하고자 함

    • learning rate이 없다. 잘 사용되지 않는다.

  • RMSprop

  • Adam

    • RMSprop와 Momentum을 함께 사용

4. Regularization

Generalization이 잘 되도록 하는 기법

4.1. Early stopping

  • 과적합이 되는 시점에 멈추는 것

4.2. Parameter Norm Penalty

  • 부드러운 파라미터로 만들자 (파라미터의 크기를 작게하자)

4.3. Data Augmentation

  • 데이터의 수가 많으면 잘된다. 나중에 배울 PLM을 봐도 많은 데이터를 활용하는 것 만으로도 성능이 좋아지는 것을 알 수 있다.

4.4. Noise Robustness

4.5. Label Smoothing

  • 데이터 2개를 섞고, 합쳐서 Label을 확률값으로 부여하는 것

4.6. Dropout

4.7. Batch Normalization

Last updated