Q : 확률적 경사하강법과 경사하강법의 차이는 무엇이고 언제 사용하나요?

A : 확률적 경사하강법(stochastic gradient descent)과 경사하강법(gradient descent) 두 알고리즘은 데이터에 대한 매개변수를 평가를 하고 값을 조정하면서 손실함수(Loss Function)을 최소화하는 값을 구하는 접근 방법입니다. 특히 함수가 어렵고 복잡하여 수학적 접근 방법으로 풀기 어려운 문제에도 잘 동작을 합니다.
경사 하강법은 모든 훈련 데이터에서 대해서 값을 평가하고 매개변수 업데이트를 진행하기 때문에 속도가 느립니다. 하지만 확률적 경사하강법은 확률적으로 선택한 데이터에 대해서 값을 평가하고 매개변수를 업데이트를 하기 때문에 경사 하강법에 비해서 빠른 속도를 보장합니다.
예를 들어 설명해 보겠습니다. 직원이 10만명 되는 회사가 있다고 가정합니다. 이 회사에 작업복을 도입할 예정입니다. 직원들의 신체 치수를 정확히 모르기 때문에 작업복을 제작하기 위해서 직원들의 치수를 전체 다 측정하여 제작에 필요한 최적의 치수와 치수별 수량을 계산한다면 경사하강법 방식이고, 확률적으로 높은 분포의 임의의 사람 또는 그룹들을 선정하여 치수를 재고 그에 따른 최적의 치수와 치수별 수량을 계산하여 생산하는 방식이 확률적 경사하강법입니다. 전자는 시간이 많이 걸릴 것이고, 후자는 그에 비해서 빠르게 진행할 수 있을 것입니다.
경사하강법은 이론적으로 확률적 경사하강법보다 오류 기능을 최소화합니다. 그러나 확률적 경사하강법는 데이터 집합이 커지면 훨씬 빠르게 값에 수렴합니다. 즉 작은 데이터 세트의 경우 경사 하강법이 바람직하지만 큰 데이터 세트의 경우 확률적 경사하강법이 더 좋습니다. 그러나 실제로 확률적 경사하강법은 대부분의 응용 프로그램에 사용됩니다. 왜냐하면 확률적 경사하강법은 오류 기능을 충분히 최소화하면서 대용량 데이터 세트에 더 빠르고 효율적으로 사용할 수 있기 때문입니다.