본문 바로가기

Open Lecture Review/Deep Learning for Computer Vision

Lec4_Optimization

1. Optimization

가중치 최적화

Idea #1 : Random Search

Idea #2 : Follow the slope = Gradient

: 임의의 W를 업데이트 할 수도 있지만 이는 극단적으로 오래 걸린다.

그래서 사용하는 방법은 Slope(경사)를 이용하는 것인데 loss가 감소하는 방향으로 W를 변화시키다 보면 결국에는 최적의 W를 찾을 수 있을 것이다.

 

- 일차원 벡터에서의 경사

- 고차원의 벡터라면 gradient를 이용해야 한다. 

① Numeric gradient

: W의 원소를 아주 조금씩 변화시키면서 계산하는 방법 (h=0.0001)

② Analytic gradient

: 미분의 계산 공식 사용

 

 

 

2. Gradient Descent

: 비용함수(Cost Function)의 비용값을 최소화하는 파라미터를 찾는 알고리즘

- 반복적으로 음의 기울기를 가지는 방향으로 step을 진행하고 최종적인 minimum에 도달한다. 

- 손실함수를 w로 미분한 값에 learning_rate를 구해 기존 w에서 빼준 값으로 업데이트 해간다. 

 

 

① Batch Gradient Descent

: 모든 N개의 데이터를 사용하는 것

Hyperparameters:

- Weight initalization method

- Number of steps

- Learning rate

 

(단점) 최적값을 찾아 나가기 위해서 한칸 전진할 때마다 모든 데이터(xi,yi)셋을 넣어주어야 한다.

 

 

② Stochastic Gradient Descent (SGD)

: Mini batch만큼 사용하여 최적값을 찾아간다.

- 이미지에서는 아직 많이 사용함.

- 비복원 추출

Hyperparameters:

- Weight initalization method

- Number of steps

- Learning rate

- Batch size

- Data Sampling

(단점1) 미니 배치를 통해 학습을 하는 경우 최적의 값을 찾아 가기 위한 방향 설정이 지그재그이다. (too noisy) 

(단점2) learning rate가 작으면 학습하는데 오래 걸리고, 너무 크면 최적의 값을 찾지 못한다. 

(단점3) local minimum 또는 saddle point에 빠질 수 있다. 

 

GD vs SGD

GD - 최적의 한 스텝을 가기 때문에 확실하지만 너무 느리다.

SGD - 빠르게 전진하기 때문에 조금 헤매지만 속도가 빠르다. 

 

③ SGD + Momentum

: 기존 경사하강법에 관성을 더해주는 형태

- 경사 하강법과 마찬가지로 매번 기울기를 구하지만, 가중치를 수정하기전에 이전 수정방향을 참고하여 같은 방향으로 일정한 비율만 수정되게 하는 방법

- 즉, 이전 이동 값(모멘텀 벡터 사용)을 고려하기 때문에 지그재그 현상을 줄일 수 있다. 

 

- 기존 Momentum과 Nesterov Momentum의 차이는 gradient를 x에서 계산하는 것이 아니라 관성에 의해서 이동한 x+velocity에서 계산하는 것이다. 

Nesterov Momentum 수식

 

AdaGrad

: 학습률이 너무 작으면 시간이 길어지고, 너무 크면 발산하는 문제를 해결하기 위해 학습률 감소(learning rate decay)를 통해 해결한다. 

(단점) grad_squared가 항상 양의 값으로 커지기 때문에 매개변수가 매우 크게 이동하여 값이 무한대로 커지면 학습이 정체되게 된다. 

 

⑤ RMSProp (Leaky Adagrad)

: decay_rate을 추가하여 최신 기울기 반영 정도를 조절한다.  (지수가중이동평균 사용)

⑥ Adam

: 최종적으로 가장 많이 쓰이는 방법

- Bias correction은 0으로 시작하는 걸 피하기 위해서이다. 

 

 

 

+) SGD와 SGD+Momentum에서는 L2 regularization과 weight decay가 같지만, Adam에서는 L2에서 파라미터와 gradient 크기가 더 적게 regularization된다고 한다. (Adam에서는 L2 reg가 worse result를 보임.)

+) AdamW : Decoupled Weight Decay

Adam에서 gradient-based update(optimization step)로부터 weight decay를 decouple하여 regularization 효과를 개선한다.decoupled weight decay는 learning rate의 optimal setting과 weight decay factor를 더 independent하게 만든다. 

Loshchilov and Hutter, “Decoupled Weight Decay Regularization”, ICLR 2019

관련 논문 블로그 -> https://deep-learning-study.tistory.com/750

 

[논문 읽기] AdamW(2017), Decoupled Weight Decay Regularization

 안녕하세요, 오늘 읽은 논문은 AdamW(2017), Decoupled Weight Decay Regularization 입니다. 핵심 정리  weight decay는 loss function에 L2 regularization를 추가하여 구현할 수 있으며 딥러닝 라이브러리가..

deep-learning-study.tistory.com

 

 

 

 

Idea #3. First-Order Optimization vs Second-Order Optimization:L-BFGS

- full batch에서 잘 작동한다.

- mini-batch 상태에서 잘 transfer되지 않는다. 

First-Order Optimization
  Second-Order Optimization 

- 1차 편미분(자코비안) -> 2차 편미분(헤시안)

- 하지만, 2차 편미분은 메모리 문제와 계산이 느려서 잘 사용하지 않는다.

-> 이를 보완하기 위해 헤시안 행렬을 근사하는 방법들 중에 하나가 BGFS이다. 

'Open Lecture Review > Deep Learning for Computer Vision' 카테고리의 다른 글

Lec8_CNN Architectures  (0) 2022.02.07
Lec7_ Convolutional Networks  (0) 2022.01.24
Lec6_Backpropagation  (0) 2022.01.24
Lec5_Neural Networks  (0) 2022.01.14
Lec3_Linear Classification  (0) 2022.01.10