Broccoli's House

#5-(1) 학습 관련 기술 : 매개변수 갱신 본문

공부/딥러닝

#5-(1) 학습 관련 기술 : 매개변수 갱신

김콜리 2018. 3. 14. 03:27

※ 이 글의 내용은 O'REILLY의 <밑바닥부터 시작하는 딥러닝> 책을 기반으로 한다.




학습 관련 기술 : 매개변수 갱신



  • 매개변수 갱신
 - 최적화(Optimization) : 학습 모델과 실제 레이블과의 차이는 손실 함수로 표현되며, 학습의 목적은 오차, 손실 함수의 값을 최대한 작게 하도록하는 매개변수(가중치, 편향)를 찾는 것이다. 즉, 매개변수의 최적값을 찾는 문제이며, 이러한 문제를 푸는 것을 최적화라 한다. 


 - 손실 함수를 최소화하는 매개변수를 찾는 방법에는 여러 가지가 있다. 가장 간단하게는 손실 함수의 그래프에서 가장 낮은 지점을 찾아가도록 손실 함수의 기울기를 구해 최적값을 찾아가는 확률적 경사 하강법(SGD)과 이 방법의 단점을 보완한 모멘텀 및 AdaGrad, Adam 방법 등이 있다. 이것들을 하나하나 알아보도록 한다.




  • 확률적 경사 하강법


 - 확률적 경사 하강법(Stochastic Gradient Descent) : 확률적 경사 하강법은 학습 최적화에 있어서 가장 간단한 방식이다. 손실 함수의 기울기를 구하여, 그 기울기를 따라 조금씩 아래로 내려가 최종적으로는 손실 함수가 가장 작은 지점에 도달하도록 하는 알고리즘이다. 수식적으로는 위와 같이, 손실 함수(L)을 가중치로 미분한 값(기울기)에 η(학습률, Learning Rate)을 곱하여 그것을 현재의 매개변수(가중치)에서 뺀다. 이 값이 새로운 가중치가 되어 다시 손실 함수를 구하고, 그것을 토대로 가중치를 갱신하는 과정을 반복한다.




 - 확률적 경사 하강법(SGD)은 단순하며 구현하기가 쉽다. 그러나 문제에 따라서는 비효율적일 때가 많다. 손실함수 그래프에서 지역 최적점(local minimum)에 갇혀 전역 최적점(global minimum)을 찾지 못하는 경우가 많고, 손실 함수가 비등방성 함수(방향에 따라 기울기가 달라지는 함수)일 때에서는 최적화에 있어 위와 같이 매우 비효율적이고 오래 걸리는 탐색 경로를 보여준다. 이러한 경사 하강법의 단점을 개선해주는 기법 중에서 모멘텀, AdaGrad, Adam을 알아본다.




  • 모멘텀


 - 모멘텀(Momentum) : 모멘텀은 '운동량'을 뜻한다. 이 기법은 경사 하강법의 한 종류로써, 모멘텀이라고 하는 이유는 확률적 경사 하강법(SGD)에 속도라는 개념을 적용했기 때문이다. 즉, 기울기 방향으로 힘을 받으면 물체가 가속된다는 물리 법칙을 알고리즘에 적용한 것이다. v라는 속도 항에 기울기 값이 누적되고, 그 누적된 값이 가중치 갱신에 영향을 준다. 따라서 기울기가 줄어드는 최적점 근처에서 느리게 진행하는 확률적 경사 하강법(SGD)와는 다르게, 모멘텀 알고리즘은 기울기가 줄어들더라도 누적된 기울기 값으로 인해 빠르게 최적점으로 수렴하게 된다.




 - 모멘텀 알고리즘의 최적점 탐색 경로를 보면 알 수 있듯이, 공이 구르듯한 모습을 보여준다. 따라서 탐색 경로가 지그재그로 크게 변하는 확률적 경사 하강법(SGD)보다 탐색 경로의 변위가 줄어들어 빠르게 최적점으로 수렴한다.




  • AdaGrad

 - 학습률(Learning Rate) : 신경망 학습에서는 학습률(η) 값이 매우 중요하다. 이 값이 매개변수의 갱신 정도를 결정하기 때문이다. 학습률이 너무 크면 발산할 수 있고, 너무 작으면 학습 시간이 매우 길어진다. 확률적 경사 하강법(SGD)이나 모멘텀 방식에서는 이 학습률 값을 상수로 두기 때문에, 매번 비슷한 스텝으로 다음 매개변수가 결정된다. 그러나 최적점 근처에서 손실함수의 기울기는 감소하기 때문에, 최적점을 지나치지 않고 곧바로 수렴하려면 학습률 자체도 감소시키는 것이 좋다. 이것을 학습률 감소(Learning Rate Decay)라 한다.

 -  AdaGrad(Adaptive Gradient Algorithm) : 학습을 진행하면서 학습률을 점차 줄여나가는 학습률 감소 기법을 적용한 최적화 알고리즘이다. 손실함수의 기울기가 큰 첫 부분에서는 크게 학습하다가, 최적점에 가까워질수록 학습률을 줄여 조금씩 작게 학습하는 방식이다. 그렇다고 매개변수 전체의 학습률 값을 일괄적으로 낮추는 것이 아니라 각각의 매개변수에 맞는 학습률 값을 만들어주는 방식이다.




 - 수식을 보면, h라는 새로운 변수가 등장한다. h는 기존 손실함수의 기울기 값을 제곱하여 계속 더해준다. 그리고 매개변수를 갱신할 때 이 h의 제곱근을 나눠주어 학습률을 조정한다. 매개변수 중에서 크게 갱신된 원소는 h값이 커지고, 따라서 다음 번에는 학습률이 낮아져서 작게 갱신된다. 즉 h가 나눠지기 때문에 모든 가중치들이 학습을 하면서 줄어드는 경향을 보이나, 각 가중치가 이전에 갱신되었던 크기에 맞게 학습률이 결정되는 것이다. 




 - AdaGrad 기법의 최적점 탐색 경로를 보면, 최적점을 향해 매우 효율적으로 움직이는 것을 볼 수 있다. 처음에는 큰 폭으로 움직이지만, 그 큰 움직임에 비례하여 갱신 정도도 큰 폭으로 작아진다. 따라서 갱신 강도가 빠르게 약해지고, 지그재그 움직임이 눈에 띄게 줄어들어 빠르게 최적점으로 수렴한다.




  • Adam

 - Adam : Adam 기법의 이론은 복잡하지만, 직관적으로는 모멘텀과 AdaGrad를 융합한 듯한 방법이다. 이 기법을 사용하기 위해서는 학습률, 일차 모멘텀 계수, 이차 모멘텀 계수 이 세 개의 하이퍼 파라미터를 설정해야 한다. Adam 방식 뿐 아니라 여기서 언급하지 않은 기법들과 언급한 기법들에 대한 자세한 설명은 다음의 블로그를 참고하기 바란다.
(http://shuuki4.github.io/deep%20learning/2016/05/20/Gradient-Descent-Algorithm-Overview.html)




 - 모멘텀 방식과 AdaGrad 방식을 합친 것 같은 알고리즘이므로, 최적점 탐색 경로 또한 이 두 방식을 합친 것과 비슷한 양상으로 나타난다. 탐색 경로의 전체적인 경향은 모멘텀 방식 처럼 공이 굴러가는 듯하고, AdaGrad로 인해 갱신 강도가 조정되므로 모멘텀 방식보다 좌우 흔들림이 덜 한 것을 볼 수 있다.




  • 기법 비교


 - 위의 그림과 같이, 사용한 기법에 따라 갱신 경로가 달라진다. 그러나 모든 문제에서 항상 뛰어난 기법은 아직 존재하지 않고, 문제에 따라 가장 효율적인 기법이 달라진다. 확률적 경사 하강법(SGD)이 가장 좋아보이지 않으나, 아직까지도 많은 상황에서 사용된되는 기법이다. 




 - 위의 그래프는 각 기법들을 손글씨 숫자 인식 데이터인 MNIST 데이터 세트에 적용한 것이다. 확률적 경사 하강법(SGD)이 가장 느리게 최적점으로 수렴하고, 나머지 세 기법은 비슷한 속도로 수렴한다. 일반적으로 SGD보다 다른 세 기법이 빠르게 학습하고, 때로는 최종 정확도도 높게 나타난다.

Comments