https://hajinnote.tistory.com/26
이번시간에는 경사하강법을 보완한 다양한 방법들을 알아보자.
Momentum
모멘텀은 최소 값으로 진행하는 속도에 관성을 줘서 경사하강법이 가진 단점인 평탄한 곳에 빠지거나 속도가 느린점을 보완하는 방법이다. 이전 gradient에 대한 정보가 담긴 모멘텀 벡터를 추가해서 얼마나 업데이트를 할지 결정한다. 너무 빠르게 진행되지 않도록 γ 파라미터를 추가해 속도를 제어 한다. (ex. 이전 기울기 값이 양수라면 양수 값이 계속 더해져서 스텝사이즈가 너무 커지는 것을 방지)
$$ v = \alpha v + \eta \frac{\partial L}{\partial W} $$
$$ W = W+v $$
Neserov accelerated gradient NAG
모멘텀의 변형으로 모멘텀에서는 현재위치의 gradient를 계산했었다면 NAG는 모멘텀 방향으로 조금 더 나아가서 측정한 gradient를 사용하는 방법이다. 모멘텀에서 기존 기울기를 바탕으로 업데이트를 해서 움직이는 반면 NAG는 움직인 후의 기울기를 고려하기 때문에 진동이 줄어들고 더 빨리 수렴하게 된다.
Adagrad
앞선 모멘텀 같은 경우 가속을 받아 가는 기울기의 방햐엥 초점을 두어 SGD를 보완했다면 Adagrad 같은 경우 스텝 사이즈에 초점을 맞춘 알고리즘이다. 이전 기울기의 제곱들이 누적되어 더해지게 되며 이를 사용해 학습률을 조정한다.
$$ \theta_{t+1,i} = \theta - \frac{\eta}{\sqrt{G_{t,ii}+\epsilon}} \cdot g_{t,i} $$
수식을 보면 Gt,ii 는 gradient 정보인 제곱의 합, 입실론은 0으로 나눠주는 것을 피하기 위해 추가한 작은 값을 의미한다.
Gt,ii는 대각행렬으로 기울기 제곱값이 대각 성분에만 추가 되며 이를 지금까지의 기울기 행렬 gt와 element wise 곱을 한다. 이렇게 하면 각각의 지금까지의 변해온 정도에 반비례하는 학습률 값을 곱하게 된다. 이렇게 과거 기울기 값을 토대로 학습을 하면서 학습률을 조절해나간다. 그래서 학습이 많이 된 변수라면 최적점에 이미 가까이 갔을 것이라 판단, 학습이 덜 된 드물게 등장한 변수라면 학습을 더 빨리 하게 함으로 최적점으로 이끈다. 하지만 학습이 진행될수록 Gt가 계속 누적되어 값이 계속해서 커질 수 밖에 없는 단점이 있다.
RMSprop
adagrad의 학습 속도가 급격히 감소하는 문제를 해결하기 위해 개발된 알고리즘. 기울기를 단순 누적하지 않고 지수 가중 이동 평균을 사용하여 이전 기울기 값들을 지수형태로 감소하게 만들었다. 학습을 진행하면서 이전 기울기는 점점 잊혀지고 최신 기울기를 더 크게 반영하게 된다.
ADAM
adaptive moment estimaion의 줄임말로 모멘텀과 RMSprop의 아이디어를 합친 것. 딥러닝을 처음 배웠을 때 잘모르면 adam을 써라 라는 말이 있을만큼 성능이 좋게 나온다.
첫번째 수식이 모멘텀, 두번째가 RMSProp이다. 초기 M(0)과 V(0)항은 0값이 되어 사라지게 된다. 뒤에 남는 값은 0.1과 0.001로(논문에서 제시한 default β1은 0.9, β2는 0.999) 값 차이가 많이 나서 편향된 값추정이 발생 할 수 있다. 따라서 이를 방지 하기 위해 1-β 값을 나누어 바이어스 보정을 해주는 것이 세네번째 수식이다. 마지막 수식을 보면 결국 보정한 모멘텀과 RMSProp 수식을 합친 것이 ADAM이라는 것을 알 수 있다. (마치 좋은거+좋은거=더 좋은거의 느낌..)
딥러닝으로 학습을 한다는 것은 이렇게 다양한 알고리즘을 통해 loss를 줄이고 최적점을 찾아가는 것이 목표인 것이다. 여기 적은거 말고도 정말 다양한 변형이 존재하며 각 task 마다 알맞는 방법을 사용해야 한다.
'머신러닝 > 딥러닝' 카테고리의 다른 글
FastText, Glove (0) | 2022.07.04 |
---|---|
가중치 초기화 (0) | 2022.07.03 |
배치 정규화, 레이어 정규화 (0) | 2022.07.03 |
역전파 Backpropagation (0) | 2022.06.19 |
경사하강법 Gradient Descent (1) (0) | 2022.06.17 |