AI

SGD and Batch, Mini-Batch

땅콩새싹 2021. 7. 21. 13:00

 


 

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

배치 경사 하강법이란, 전체 학습 데이터를 하나의 배치로 묶어 학습시키는 경사 하강법입니다.

전체 데이터에 대한 모델의 오차의 평균을 구하고 이를 미분을 통해 경사를 산출하고 최적화를 진행합니다. 보통 딥러닝 라이브러리에서 배치를 지정하지 않으면 이 방법을 쓰고 있다고 생각할 수 있습니다.

배치 경사 하강법은 전체 데이터를 통해 학습시키기 때문에 가장 업데이트 횟수가 적습니다. (1 Epoch 당 1회 업데이트) 그리고 전체 데이터를 모두 한번에 처리하기 때문에 메모리가 가장 많이 필요합니다. 전체 데이터에 대해 경사를 구하기 때문에 수렴이 안정적입니다.

 

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

확률적 경사 하강법은 전체 데이터 중 단 하나의 데이터를 이용하여 경사 하강법을 1회 진행하는 방법입니다(배치 크기가 1이다). 전체 학습 데이터 중 랜덤하게 선택된 하나의 데이터로 학습을 하기 때문에 확률적 이라고 부릅니다.

배치 경사 하강법에 비해 적은 데이터로 학습할 수 있고, 속도가 빠른 장점이 있습니다. 각 데이터에 대한 손실값의 기울기는 약간씩 다르기 때문에 손실값의 평균이 아닌 개별 데이터에 대해 미분을 수행하면 기울기의 방향이 매번 크게 바뀌게 됩니다.

학습 데이터 전체에 대해 보편적으로 좋은 값을 내는 방향으로 수렴하지만 최저점에 안착하기는 어렵습니다.

Shooting은 최적화가 지역 최저점에 빠질 확률을 줄여줍니다.

 

미니배치 경사 하강법(Minibatch Gradient Descent, MGD)

SGD와 BGD의 절충안으로 전체 데이터를 batch_size개씩 나눠 배치로 학습시키는 것 입니다. Shooting이 발생하기는 하지만 한 배치의 손실값의 평균으로 경사하강을 진행하기 때문에 Shooting이 심하지 않습니다.

 

'AI' 카테고리의 다른 글

결정 트리 (Decision Tree)  (0) 2021.07.22
SGD 실습(SGDClassifier scikit-learn)  (0) 2021.07.21
경사 하강법  (0) 2021.07.21
손실함수(Loss Function)의 종류  (1) 2021.07.20
[머신러닝] 로지스틱 회귀(logistic regression)  (0) 2021.07.17