크크루쿠쿠

[Week2] DL Basic Optimization[Day2] 본문

DeepLearning/부스트캠프 AI Tech

[Week2] DL Basic Optimization[Day2]

JH_KIM 2021. 8. 10. 14:36

Optimization

 

Gradient  Descent

- loss function의 gradient 값들을 이용해서 학습

- 1차 미분한값만 사용

- 반복적으로 하여 local minimum을 찾음

 

Important Concepts in Optimization

- Generalizaion

How well the learned model will behave on unseen data

-> training error 가 0이라고 최적X

Generalization gap을 줄이는것.

 

- Underfitting vs Overfitting

concept 적인 얘기임

 

- Cross-validation

train data 를 K개로 나눠 1개씩을 계속 뽑아 validation 함.

K-fold 라고도 함

최적의 hyperparameter를 찾은 후 학습 시에는 모든 data를 사용

test data는 절대 train에 사용 X

 

- Bias and Variance

좋은 탄착군 -> Low Variance : 일관적, 간단한 모델

high Variance -> overfitting 가능성 up

 

Bias는 true target에 접근하는가

Tradeoff ->

어느 하나만 줄일 수 없음.

근본적인 data 의 noise가 중요

 

- Bootstrapping

any test or metric that uses random sampling with replacement

 

- Bagging vs Boosting

Bagging -> Bootstrapping aggregating

학습데이터를 다 사용해서 하나만 학습 X

data를 여러개 만들어 여러 model을 만들어 평균을냄 -> 앙상블

 

Boosting -> focuses on those specific training samples that are hard to classify

model을 여러개 만들어 sequence하게 연결하여 strong 하게 만든다.

-> 모델의 독립 여부의 차이

 

Gradient Descent Methods

- Stochastic gradient descent

엄밀한 의미에서는 1개의 sample에서만

- Mini-batch gradient descent

subset of data로

- Batch gradient descent

whole data 사용

 

Batch-size Matters

생각보다 중요함.

large batch-size를 이용하면 sharp minimizer에 도달함.

small batch-size를 이용하면 flat minimizer에 도달

-> flat이 좀더 낫다

Flat이 Generalization performance가 좋다 볼 수 있음.

 

Gradient Descent Methods

optimizer를 골라야함

- SGD

learning rate를 잡는게 너무 어려움

 

- Momentum

beta 라는 hyperparameter가 들어감

한번 흘러간 gradient를 유지시켜줌.

 

- Nestrov Accelerated Gradient

Lookahead gradient -> 현재 정보로 한번 가 본뒤 나오는 gradient를 사용

 

momentum과의 차이점

momentum과 달리 local minimum으로 converge 가능

 

- Adagrad

parameter가 얼만큼 변해왔는지 아니면 안변했는지 봄

G가 계속 커지기 때문에 학습이 계속 느려짐.

 

- Adadelta

G가 계속 커지는걸 막아줌.

learning rate가 없다.

 

- RMSprop

논문 제출된게 아님 -> 그냥 강의에서 제안한것

 

- Adam

EMA와 momentum 같이 사용한것

입실론 parameter가 중요함

 

Regularization

generalization을 위하여

-> 학습을 방해함으로써 test data에도 잘 작동하도록.

- Early stopping

test data를 사용할 수 없으므로 Validation error를 사용한다.

 

- Parameter Norm Penalty

부드러운 함수로 만들자 -> generalization performance가 좋으므로

 

- Data Augmentation

data는 많을수록 좋다 에서 나온 방법

주어진 data를 사용해서 데이터를 늘리는것 -> label이 바뀌지 않는 한에서

어떠한 변화를 줄지는 data에 따라 달라짐

 

- Noise Robustness

-> 아직도 왜 잘되는지 잘 모름

Noise를 data에도 넣고 parameter에 집어넣어도 성능이 좋아짐.

 

- Label Smoothing

data 두개를 뽑아서 섞어줌.

decision boundary 를 부드럽게 만들어줌

label도 섞어버리고 사진도 섞고.. 자르기도 하고

(Mixup -> 성능 진짜 좋아짐)

 

- Dropout

weight를 0으로 바꿔줌

 

- Batch Normalization

논란이 많음

적용하고자 하는 layer를 정규화 시키는것

-> 성능이 좋아지긴 함

Comments