면접에서 대답을 잘못해서 다시 한번 공부를 하고자 작성하는 글입니다.

 

Optimizer 란?

 

딥러닝의 학습에서는 최대한 틀리지 않는 방향으로 학습해 나가야 합니다.

 

여기서 모델을 통해 나온 예측값이 정답과 비교해

 

얼마나 틀리는지(loss)를 알게 하는 함수가 loss function=손실함수입니다.

 

loss function의 최소값을 찾는 것이 Optimizer의 목표입니다.

2차 함수 그래프

간단한 예를 들면 위의 2차 함수의 최소값은 (0, 0)이고 현재의 위치는 임의의 위치에 있습니다.

 

임의의 위치에서 최소값의 위치를 찾아가는 방법이라고 보시면 되겠습니다.

 

여기서 최소값을 찾아가는 것을 최적화=Optimization 라고 하고

 

이를 수행하는 알고리즘이 최적화 알고리즘=Optimizer 입니다.

 

위의 알고리즘을 통해 구한 값을 이용해 가중치가 업데이트 되는 것입니다.

 

 

 


위의 그림과 같이 optimizer에는 여러가지 종류가 있습니다.

SGD부터 보겠습니다.

 

 

 


SGD

GD와 SGD는 같은 공식을 사용하지만

GD는 full-batch, SGD는 mini-batch를 이용하여 Gradient Descent를 적용합니다.

 

여기서 mini-batch를 사용하는 이유는

full-batch로 epoch마다 weight를 수정하지 않고 빠르게 mini-batch로 weight를 수정하면서 학습하기 위해서 입니다.

 

여기서 α는 learning rate라고 하고 loss function의 최저값을 찾아가는 step의 크기를 조절해주는 역할을 합니다.

https://bioinformaticsandme.tistory.com/130

위의 그림을 보면 learning rate의 중요성을 알 수 있습니다.

유튜브의 한경훈 교수님의 강의를 토대로 진행하였습니다.

 

이제 SGD를 직접 손으로 계산해 보겠습니다.

 

 

 

 


Momentum

Momentum은 경사하강법에 관성의 법칙을 적용한 것입니다.

관성의 법칙을 적용함으로써 local minimum에 빠지는 현상을 줄여줄 수 있습니다.

local minimum

 

위와 같이 local minimum에 빠지게 되면 더 좋은 학습을 진행할 수 없게 됩니다.

 

그러므로 위와 같이 관성을 이용하여 local minimum을 빠져나오는 원리 입니다.

Momentum

α : 관성계수

η : learning rate

 

손으로 계산

Momentum

 

 

 


NAG (Nesterov Accelrated Gradient)

NAG는 Momentum보다 공격적(?)으로 경사하강법을 진행합니다.

일단 공식을 보면

NAG (Nesterov Accelrated Gradient)

위와 같이 이루어져 있습니다.

공식을 보면 이전 속도만큼 더 간 후에 그 위치에서 Gradient를 계산해줍니다.

그래서 Momentum보다 더욱 공격적(?)이라고 할 수 있습니다.

 

손으로 계산

NAG (Nesterov Accelrated Gradient)

 

 

 


AdaGrad

지금까지는 일정한 learning rate를 사용해왔습니다.

여기서 AdaGrad는 learning rate를 바꿔가며 학습을 진행하는 아이디어에서 AdaGrad가 나왔습니다.

AdaGrad

시간이 지날수록 learning rate가 작아지는데

큰 변화를 겪은 변수의 learning rate는 작아지고

작은 변화를 겪은 변수의 learning rate는 커집니다.

큰 변화를 겪은 변수는 이미 최적에 가까워 졌고,

작은 변화를 겪은 변수는 최적에 아직 멀다고 생각하기 때문입니다.

 

손으로 계산

AdaGrad

 

 

 


RMSProb

위의 AdaGrad에서는 문제점이 있습니다.

학습이 오랫동안 진행될 경우 learning rate   \(\eta \frac{1}{\sqrt{h_{n}}}\) 가 너무 작아져 버려 weight가 0에 가까운 수로 수렴이 되게 되므로

학습이 더이상 진행이 되지 않습니다.

그래서 RMSprob이 나오게 되었습니다.

 

RMSProb

AdaGrad의 식과 다른 점은 γ(감마)가 추가 되었습니다.

γ의 값은 0과 1사이의 값이며, 커질수록 과거, 작을수록 현재에 더욱 치중됩니다.

 

손으로 계산

 

 

 


Adam

드디어 Adam까지 왔습니다.

Adam은 Momentum과 RMSProb 두가지 방법을 합친 것이라고 보시면 되겠습니다.

보정값

위와 같은 식으로 이루어져 있습니다.

 

손으로 계산

Adam

 

 

출처:

https://www.youtube.com/watch?v=5fwD1p9ymx8&list=PLBiQZMT3oSxXNGcmAwI7vzh2LzwcwJpxU&index=1&t=2481s

+ Recent posts