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

확률적 경사하강법(Stochastic Gradient Descent, SGD)은 기계 학습 및 최적화 문제에서 중요한 알고리즘이다. 이 방법은 경사하강법(Gradient Descent)의 변형으로, 대규모 데이터셋을 사용하여 모델을 훈련할 때 발생하는 계산 비용 문제를 해결하기 위해 고안되었다. 확률적 경사하강법은 미니배치 경사하강법(Mini-batch Gradient Descent)과 구별되며, 각 단계에서 데이터셋 전체가 아니라 임의로 선택된 하나의 데이터 포인트를 사용하여 모델을 업데이트한다.

#### 이론적 배경

경사하강법은 미분 가능한 함수의 최소값을 찾기 위한 방법이다. 일반적인 경사하강법에서는 손실 함수의 전체 기울기를 계산하여 매 반복마다 파라미터를 업데이트한다. 이는 파라미터 공간에서의 탐색 방향을 결정하는 데 있어 최적의 방향을 제공하지만, 큰 데이터셋에서는 계산 비용이 매우 높아진다. 특히, 수백만 개 이상의 샘플이 있는 데이터셋에서는 매 반복마다 전체 데이터셋을 참조해야 하는 문제가 발생한다.

확률적 경사하강법은 이러한 문제를 해결하기 위해 고안되었다. 이 방법에서는 각 반복마다 하나의 샘플 또는 소량의 샘플(일반적으로 1)을 무작위로 선택하여 기울기를 계산한다. 이렇게 함으로써 계산 비용이 크게 줄어들며, 빠른 반복이 가능해진다. 그러나, 이로 인해 기울기의 노이즈가 증가할 수 있으며, 최적화 과정에서 진동이나 발산이 발생할 수 있다. 이러한 문제는 학습률을 적절히 조정하거나, 모멘텀(momentum) 등의 기법을 도입하여 완화할 수 있다.

#### 수학적 설명

확률적 경사하강법의 목표는 다음과 같은 최적화 문제를 해결하는 것이다.

$$
\min\_{\theta} \frac{1}{n} \sum\_{i=1}^{n} L(\theta; x\_i, y\_i)
$$

여기서 $ \theta $는 최적화할 파라미터, $ L(\theta; x\_i, y\_i) $는 모델 파라미터 $ \theta $에 대한 손실 함수, $ x\_i $와 $ y\_i $는 각각 입력과 대응되는 출력이다. 경사하강법에서는 전체 데이터셋에 대해 손실 함수의 기울기를 계산하여 파라미터를 업데이트한다:

$$
\theta := \theta - \eta \nabla\_{\theta} \frac{1}{n} \sum\_{i=1}^{n} L(\theta; x\_i, y\_i)
$$

확률적 경사하강법에서는 전체 데이터셋 대신 단일 데이터 포인트를 사용하여 파라미터를 업데이트한다:

$$
\theta := \theta - \eta \nabla\_{\theta} L(\theta; x\_j, y\_j)
$$

여기서 $ x\_j $와 $ y\_j $는 데이터셋에서 무작위로 선택된 샘플이며, $ \eta $는 학습률을 나타낸다.

#### 수렴 특성

확률적 경사하강법은 일반적인 경사하강법에 비해 계산량이 적고, 각 반복에서 데이터의 일부만을 사용하기 때문에 더 빠르게 수렴할 수 있다. 그러나, 노이즈가 포함된 기울기를 사용하기 때문에 파라미터 업데이트가 정확하지 않으며, 이로 인해 최종 수렴이 불안정할 수 있다. 이 문제를 해결하기 위해, 학습률을 점차적으로 줄이는 방법을 사용할 수 있다. 일반적으로 학습률은 다음과 같은 방식으로 조정된다:

$$
\eta\_t = \frac{\eta\_0}{1 + \lambda t}
$$

여기서 $ \eta\_0 $는 초기 학습률, $ \lambda $는 감소율, $ t $는 반복 횟수이다. 이 방법을 통해 초기 학습 단계에서는 큰 폭으로 파라미터를 업데이트하고, 수렴 단계에서는 작은 폭으로 업데이트하여 안정성을 확보할 수 있다.

#### 장점과 단점

확률적 경사하강법의 주요 장점은 다음과 같다. 첫째, 대규모 데이터셋에서 계산 효율성을 크게 개선할 수 있다. 둘째, 미분이 어려운 복잡한 손실 함수에서도 효과적으로 작동한다. 셋째, 지역 최소점에서 탈출하여 더 좋은 글로벌 최소점을 찾을 가능성이 높아진다.

그러나, 단점도 존재한다. 첫째, 노이즈가 포함된 기울기를 사용하므로 수렴이 불안정할 수 있다. 둘째, 학습률 및 기타 하이퍼파라미터의 적절한 조정이 필요하다. 셋째, 최종 수렴점이 전통적인 경사하강법에 비해 덜 정확할 수 있다.

#### 확률적 경사하강법의 변형들

확률적 경사하강법은 다양한 변형이 존재한다. 대표적인 예로는 모멘텀(Momentum), 네스테로프 가속 경사(Nesterov Accelerated Gradient), Adagrad, RMSprop, Adam 등이 있다. 이들 변형은 기본적인 SGD의 단점을 보완하기 위해 고안되었으며, 각각의 알고리즘은 학습률 조정, 기울기 계산의 방법, 파라미터 업데이트 방식에서 차이를 보인다.

모멘텀 방법은 이전 기울기의 방향을 고려하여 파라미터를 업데이트함으로써 수렴 속도를 높인다. 네스테로프 가속 경사는 모멘텀의 개선된 버전으로, 좀 더 정확한 업데이트 방향을 제공한다. Adagrad는 학습률을 개별 파라미터마다 조정하여 자주 업데이트되는 파라미터에 대해 학습률을 낮추고, 드물게 업데이트되는 파라미터에 대해 학습률을 높인다. RMSprop은 Adagrad의 개선 버전으로, 학습률의 조정 방식을 변경하여 과도한 학습률 감소를 방지한다. Adam은 모멘텀과 RMSprop을 결합한 방법으로, 안정적인 수렴을 제공하면서도 빠른 학습이 가능한다.

***

관련 자료:

* Bottou, L. (2010). Large-Scale Machine Learning with Stochastic Gradient Descent. In Proceedings of COMPSTAT’2010.
* Ruder, S. (2016). An overview of gradient descent optimization algorithms. arXiv preprint arXiv:1609.04747.
* Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
