MACHINE LEARNING/Artificial Neural Network

Gradient Descent / Stochastic Gradient Descent 개념적 비교

24_bean 2022. 8. 4. 20:47

 

* 각각의 개념들에 대해선 다른 게시글에서 확인바랍니다 *

* 이 게시글은 두 알고리즘을 비교하기 위해 만들어졌습니다 *


Gradient Descent (GD) : 경사 하강법

- 1차 근삿값 발견용 최적화 알고리즘

 - 기본 개념은 함수의 기울기(approximate gradient)를 구하고 경사의 반대 방향으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것.

Stochastic Gradient Descent (SGD) : 확률적 경사 하강법

 - 학습 데이터셋에서 무작위로 한 개의 샘플 데이터 셋을 추출하고, 그 샘플에 대해서만 기울기를 계산하는 것이 특징.

 


mini-Batch Gradient Descent (mini-BGD) : 미니 배치 경사 하강법

 

여기서 mini-BGD가 나오는 이유는 너무 자연스럽다.

mini-BGD이 어떻게 동작하는 지를 보자

 

우선 Batch 크기를 줄이고, SGD를 사용하는 기법이다.

각각의 mini-Batch 하나당 한번씩 SGD를 진행하는데 예를 들어 다음과 같은 상황이 있다 가정해보자

 

train data : 100

batch-size : 10

 

1개의 batch를 기준으로 100개의 train data를 돌기위해 iteration은 10이 되고 이 과정이 모두 끝나야 epoch이 1이 된다.

 

이 과정을 수행하는 mini-Batch Gradient Descent를 일반적으로 SGD라고 한다.

그냥 single-Batch Gradient Descent를 SGD라고 이해하자.


다음은 GD와 SGD를 나타내는 수식이다

Gradient Descent
Stochastic Gradient Descent

 

위의 설명에서도 설명했지만 식을 보게되면 명확한 의미를 찾을 수 있다.

 

Gradient Descent 는 Linear한 과정을 갖게 되고

Stochastic Gradient Descent는 back&forth한 과정으로 목적지에 다다르게 된다.

(여기서 말하는 목적지란 loss의 최소값)

 

즉, 다음의 그림과 같이 설명할 수 있다.