본문 바로가기

【1】Deep Learning 시작하기/최적화가 가장 중요하다!

최적화(Optimizer)가 뭐였지? 확률적 경사 하강법(SGD)

여러분은 1.2 경사 하강법이 기억나는가? 경사 하강법은 오차를 가장 작게 만드는 방향으로 가중치를 업데이트 하면서 최적 값을 찾는 방법이다. 이렇게 파라미터의 최적 값을 찾는 문제를 최적화(optimizer)라고 하며 최적화는 정답에 가까운 출력을 만드는 신경망의 목표인만큼 중요하지만 어려운 문제다. 앞에서 최적화의 방법으로 경사 하강법을 언급했는데 시간이 지나면서 더욱 발전된 기술들이 등장하기 시작했다. 지금부터 그 종류를 하나씩 살펴보겠다.  

 

 

확률적 경사 하강법(SGD) 

 

“GD보다 조금 보되 빠르게 찾자!“

 

 

우리가 앞에서 다룬 경사 하강법(Gradient Descent)은 모든 데이터 셋에 대하여 검토하므로 확실하지만 방대한 계산량으로 인해 속도가 느리다는 단점이 있다. 이 문제를 보완해서 등장한 기술이 확률적 경사 하강법(Stochasic Gradient Descent, SGD)이다. 확률적 경사 하강법은 전체 데이터가 아닌 일부 데이터만를 이용해 기울기를 계산하며, 조금 보되 빠르게 찾자는 아이디어이다. 이때, 일부 데이터는 전체 데이터에서 랜덤하게 추출하므로 확률적이라는 이름이 붙게 되었다.

 

 

그림에서 보듯 경사 하강법은 천천히 자료를 전부 검토해서 방향을 찾아가는데 반해 확률적 경사 하강법은 랜덤한 일부데이터를 가지고 빠르게 방향을 찾아간다.  수식은 기존의 경사 하강법과 다르지 않지만 가중치는 샘플링 된 데이터의 가중치라는 점을 잊지 말자.

 

 

 

경사 하강법에 비해 훨씬 적은 계산으로도 최적 값을 찾을 수 있다는 점에서 경사 하강법의 대안으로 사용되는 기술이다. 

 

하지만 확률적 경사 하강법에도 역시나 문제점이 존재하는데 바로 탐색 방향과 탐색 거리에 대한 문제이다. 전자는 랜덤하게 선택된 데이터 이므로 최적 값을 향해 가는 방향이 뒤죽박죽 엉키는 문제가 생길 수 있다는 것이며, 후자는 이전에 언급한 학습률(Learning rate)에 대한 이야기이다. 학습률은 얼만큼 이동해야 할지를 결정하는 값으로 이 전에도 언급했듯이 적절한 탐색 거리를 찾는 것은 어려운 문제중 하나이다.


탐색 방향에 대한 문제를 해결하고자 Momentum 이 등장, 탐색 거리에 대한 문제를 해결하고자 Adagrad가 등장했는데 각 기술에 대해서 다음 글에서 자세히 설명해보도록 하겠다.

 

 

 

 

 

 

 

 


작성자 홍다혜 ghdek11@gmail.com / 이원재 wonway333@gmail.com