석박사/연구노트

Stochastic Gradient descent

밍이의 꿈 2020. 8. 29. 15:04

"Stochastic Gradient descent 란 무엇인가?"

Stochastic Gradient descent 가 무엇인지 알기 위해서는 Gradient descent 가 무엇인지 먼저 알아야한다.

 

Gradient descent란 무엇인가?

한국말로는 경사 하강법으로 함수의 기울기(경사)를 구해서 기울기가 낮은 쪽으로 계속 이동시켜 극값에 이를때까지 반복시키는 방법을 말한다. 

일반적인 선형 회귀(linear regression) 함수를 근사(fitting) 하는 과정을 생각해보자. 우선은 기울기가 정해진 상태에서 최적 y 절편 (intercept)을 구해내는 문제를 생각해보자. 

y절편을 0에서 부터 시작해 점점 값을 키워나가며 잔차(실제값과 예측값의 차이)의 제곱 합(sum of squared residuals)을 오른쪽 그래프처럼 표현한다고 생각해보자. 이차 함수의 형태를 띄는 잔차제곱합이 최소가 되는 값이 최적 값일 것이다. (여기서 잔차 제곱합은 함수가 얼마나 데이터를 잘 표현하는지를 나타내는 기능을 하는 수많은 loss function 중 하나이다.)

 

하지만 이런 방식은 비효율적이기 때문에 Gradient descent 가 등장한다. 최적값에서 멀때는 값을 드문 드문 구하고, 최적값에 가까워질 수록 값을 여러번 구해서 효율적인 방식으로 최적값에 다가갈 수 있다.  

수식으로 표현하면 다음과 같다. 

위의 수식을 찬찬히 뜯어보면 알겠지만 잔차 제곱합을 intercept 와 slope 으로 편미분한 식에 관찰한 데이터 값들을 집어 넣어 최적 값을 탐색하기 위한 다음 스텝의 방향과 크기를 정해주고, 이로서 업데이트된 Intercept, slope 값을 구해내는 방식으로 작동한다. 

하지만 위의 예제에서와 같이 데이터가 3개인 상황이 아니라 100,000개 혹은 더 많아지면 어떨까? 앞서 SSR의 편미분 값을 구했듯, 사용하는 loss function의 편미분 값들을 무수히 많은 데이터 수만큼 구해야할 것이다. 즉, 느리고 비효율적인 방식이 될 것이다. 여기서 Stochastic gradient descent 의 필요성이 등장한다. 

 

Stochastic gradient descent

Stochastic gradient descent 는 intercept, slope을 업데이트하는 각각의 단계에서 모든 데이터 포인트를 업데이트 시키지 않고 랜덤하게 1개의 데이터만 골라내어 loss function을 구한다. 당연히 여러개의 데이터를 골라낼 수도 있고 이를 mini-batch 라 한다. 

 

Stochastic gradient descent의 활용

Stochastic gradient descent가 가지는 또 하나의 장점은 학습 도중 새로운 데이터셋이 유입됐을 때이다. 이때 처음부터 학습을 다시 시킬 필요 없이 다음 스텝에서 데이터를 학습시켜주면 되기때문에 효율적인 학습이 가능하다. 또한 분산처리에 적합하다는 장점이 있다.

 


출처

www.youtube.com/watch?v=sDv4f4s2SB8

medium.com/@shivvidhyut/a-brief-introduction-to-distributed-training-with-gradient-descent-a4ba9faefcea