[DL] 경사 하강법(Gradient Descent)

[코드스테이츠, #46] 딥러닝 경사하강법 종류

배치 경사 하강법 (Batch Gradient Descent, BGD)

6.png

Untitled

<aside> ✔️ 일반 경사 하강법의 경우, **Gradient를 한번 업데이트 하기 위해 모든 학습 데이터를 사용(batch size = train data 수)**함 (전체 데이터셋에 대한 error 구한 후 기울기를 한번만 계산하여 parameter 업데이트함)

</aside>

[문제점] 학습샘플의 개수가 증가한다면 계산량이 지나치게 많아짐 & 시간 많이..... 😭

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

7.png

Untitled

<aside> ✔️

**SGD**의 경우, Gradient를 한번 업데이트 하기 위해 일부의 데이터(batch size = 1)만을 사용

</aside>

<aside> ✔️ 전체 훈련세트 중, 랜덤하게 하나의 데이터를 선택해 기울기를 업데이트하기 때문에 **'확률적'(Stochastic)**이라고 부릅

</aside>

미니 배치 확률적 경사하강법 (Mini-Batch Stochastic Gradient Descent, MSGD)

Untitled

<aside> ✔️ 배치 경사하강법(BGD)과 확률적 경사하강법(SGD)의 절충안으로, 전체 훈련세트를 1~M 사이의 적절한 batch size로 나누어 학습 (ex. 전체 훈련세트가 5000000개일 때, 배치 사이즈를 100000개라고 한다면, 50개의 묶음이 나오게 되므로 기울기는 1 Epoch 당 50번 업데이트)

</aside>