확률적 경사 하강법(종종 SGD로 약칭)은 미분 가능성 또는 하위 미분 가능성과 같은 적절한 매끄러움 성질을 갖는 목적 함수를 최적화하기 위한 반복적 방법이다. 이는 전체 데이터 집합에서 계산된 실제 경사를 무작위로 선택된 데이터 부분 집합에서 계산된 추정치로 대체한다는 점에서 경사 하강법 최적화의 확률적 근사로 간주할 수 있다. 특히 고차원 최적화 문제에서 이는 매우 높은 계산 부담을 줄여주며, 더 낮은 수렴률과 교환하여 더 빠른 반복을 달성한다. 확률적 근사의 기본 아이디어는 1950년대의 Robbins–Monro 알고리즘으로 거슬러 올라갈 수 있다. 오늘날 확률적 경사 하강법은 기계 학습 및 관련 분야에서 중요한 최적화 방법이 되었다.
통계적 추정과 기계 학습은 모두 합의 형태를 갖는 목적 함수를 최소화하는 문제를 고려한다: Q(w) = (1/n) Σ Q_i(w), 여기서 Q(w)를 최소화하는 매개변수 w가 추정되어야 한다. 각 합항 함수 Q_i는 일반적으로 훈련에 사용되는 데이터 집합의 i번째 관측치와 연관된다. 고전 통계학에서 합 최소화 문제는 최소 제곱법과 독립 관측치에 대한 최대 우도 추정에서 발생한다. 합의 최소화로 발생하는 추정량의 일반적인 클래스를 M-추정량이라고 한다. 그러나 통계학에서는 일부 최대 우도 추정 문제에 대해 국소 최소화조차 요구하는 것이 너무 제한적이라는 것이 오랫동안 인식되어 왔다. 따라서 현대 통계 이론가들은 종종 우도 함수의 정류점, 또는 그 도함수인 점수 함수의 영점 및 기타 추정 방정식을 고려한다. 합 최소화 문제는 또한 경험적 위험 최소화에서 발생하는데, 여기서 Q_i(w)는 i번째 예제에서의 손실 함수 값이고 Q(w)는 경험적 위험이다.
위 함수를 최소화하는 데 사용될 때, 표준(또는 "배치") 경사 하강법은 다음 반복을 수행할 것이다: w := w - η ∇Q(w) = w - (η/n) Σ ∇Q_i(w). 단계 크기는 η로 표시되며, 기계 학습에서는 때때로 학습률이라고도 하며, ":="는 알고리즘에서 변수의 업데이트를 나타낸다. 많은 경우에, 합항 함수는 합 함수와 합 경사의 저렴한 평가를 가능하게 하는 간단한 형태를 갖는다. 예를 들어, 통계학에서 단일 매개변수 지수족은 경제적인 함수 평가와 경사 평가를 가능하게 한다. 그러나 다른 경우에는 합 경사를 평가하는 데 모든 합항 함수의 경사에 대한 값비싼 평가가 필요할 수 있다. 훈련 집합이 방대하고 간단한 공식이 존재하지 않을 때, 경사를 평가하려면 모든 합항 함수의 경사를 평가해야 하므로 합 경사의 합계를 평가하는 것은 매우 비용이 많이 든다. 매 반복마다 계산 비용을 절약하기 위해, 확률적 경사 하강법은 각 단계에서 합항 함수의 부분 집합을 샘플링한다. 이는 대규모 기계 학습 문제에서 매우 효과적이다.
반복 방법
확률적(또는 "온라인") 경사 하강법에서 Q(w)의 실제 경사는 단일 샘플에서의 경사로 근사된다: w := w - η ∇Q_i(w). 알고리즘이 훈련 집합을 훑어 나가면서 각 훈련 샘플에 대해 위 업데이트를 수행한다. 알고리즘이 수렴할 때까지 훈련 집합을 여러 번 통과할 수 있다. 이렇게 하는 경우, 주기를 방지하기 위해 각 통과마다 데이터를 섞을 수 있다. 일반적인 구현은 수렴을 위해 적응형 학습률을 사용할 수 있다. 의사 코드에서 확률적 경사 하강법은 다음과 같이 제시될 수 있다:
- 초기 매개변수 벡터 w와 학습률 η를 선택한다.
- 수렴할 때까지 반복:
- 훈련 샘플을 섞는다.
- 각 훈련 샘플 i에 대해:
- 경사 ∇Q_i(w)를 계산한다.
- 매개변수를 업데이트한다: w := w - η ∇Q_i(w).
실제 경사와 단일 샘플에서의 경사를 계산하는 것 사이의 절충안은 각 단계에서 둘 이상의 훈련 샘플, 즉 "미니 배치"에 대해 경사를 계산하는 것이다. 이는 각 단계를 별도로 계산하는 대신 코드가 벡터화 라이브러리를 활용할 수 있기 때문에 설명된 "진정한" 확률적 경사 하강법보다 훨씬 더 나은 성능을 발휘할 수 있으며, 이는 1986년 논문에서 "번치 모드 역전파 알고리즘"이라고 불리며 처음으로 제시되었다. 또한 각 단계에서 계산된 경사가 더 많은 훈련 샘플에 대해 평균화되므로 더 매끄러운 수렴을 가져올 수 있다.
확률적 경사 하강법의 수렴은 볼록 최소화 및 확률적 근사 이론을 사용하여 분석되었다. 간단히 말해, 학습률 η가 적절한 비율로 감소하고 비교적 완만한 가정 하에서, 확률적 경사 하강법은 목적 함수가 볼록 또는 유사 볼록일 때 전역 최소값으로 거의 확실히 수렴하며, 그렇지 않으면 국소 최소값으로 거의 확실히 수렴한다. 이는 실제로 Robbins–Siegmund 정리의 결과이다.
선형 회귀
훈련 예제 집합 (x_i, y_i)에 직선 y = w^T x를 맞추고자 한다고 가정하자. 목적 함수는 평균 제곱 오차이다: Q(w) = (1/n) Σ (y_i - w^T x_i)^2. 단일 예제에 대한 경사는 ∇Q_i(w) = -2 (y_i - w^T x_i) x_i이다. 확률적 경사 하강법에서 업데이트 규칙은 w := w + 2η (y_i - w^T x_i) x_i가 된다. 이는 1960년에 버나드 위드로우와 Ted Hoff가 도입한 최소 평균 제곱(LMS) 알고리즘, 즉 Widrow-Hoff 규칙과 동일하다. LMS 알고리즘은 확률적 근사의 고전적인 예이며 적응 신호 처리에서 널리 사용되어 왔다.
기계 학습에서의 응용
확률적 경사 하강법은 기계 학습에서 광범위하게 사용되는 최적화 도구이다. 신경망 훈련에서 역전파와 함께 사용되어 모델 가중치를 효율적으로 업데이트한다. 대규모 데이터 집합을 다루는 심층 학습에서는 전체 데이터의 경사를 계산하는 것이 비현실적이므로 SGD 또는 그 변형이 사실상 표준이다. 또한 서포트 벡터 머신, 로지스틱 회귀, 행렬 분해 등 다양한 모델의 훈련에도 적용된다. SGD의 변형으로는 모멘텀, AdaGrad, RMSProp, Adam 등이 있으며, 이들은 수렴 속도와 안정성을 개선하기 위해 개발되었다.
확률적 경사 하강법(SGD)은 신경망과 딥러닝 모델을 포함한 학습의 핵심 최적화 알고리즘이다. 현대 딥러닝에서 SGD와 그 변형들은 분류 문제의 교차 엔트로피나 회귀 문제의 평균 제곱 오차와 같은 손실 함수를 최소화하는 데 사용된다. 이 알고리즘은 대규모 데이터셋을 효율적으로 처리할 수 있어 대규모 언어 모델에 사용되는 방대한 말뭉치로 모델을 학습시키는 데 필수적이다. 예를 들어, 야코프 우슈코라이트, 루카스 카이저 등이 2017년 논문 "Attention Is All You Need"에서 소개한 트랜스포머 기반 모델의 학습은 SGD 또는 아담 옵티마이저와 같은 적응형 변형에 의존한다.
SGD는 컴퓨터 비전, 자연어 처리, 강화 학습을 포함한 인공지능의 다른 영역에서도 사용된다. 강화 학습에서 SGD는 정책 경사 방법과 같이 정책 및 가치 함수의 매개변수를 업데이트하는 데 사용된다. 이 알고리즘의 확률적 특성은 비볼록 최적화 문제에서 지역 최솟값을 벗어날 수 있게 해주며, 이는 복잡한 손실 지형을 가진 심층 신경망을 학습시키는 데 특히 중요하다.
변형 및 개선
수렴성과 안정성을 개선하기 위해 확률적 경사 하강법의 여러 변형이 개발되었다. 일반적인 개선 방법 중 하나는 운동량(momentum)을 사용하는 것으로, 속도 벡터를 축적하여 일관된 방향의 경사를 가속하고 진동을 완화한다. 또 다른 방법은 네스테로프 가속 경사(Nesterov accelerated gradient)로, 예측 지점에서 경사를 계산한다. 아담 옵티마이저와 같은 적응형 학습률 방법은 경사의 1차 및 2차 모멘트 추정치를 기반으로 매개변수별 학습률을 조정한다. 이러한 방법들은 실제로 널리 사용되며 신경망 학습을 위한 기본 옵티마이저로 간주되는 경우가 많다.
기타 관련 기법으로는 시간에 따라 학습률을 조정하는 학습률 스케줄과 큰 경사를 축소하여 기울기 폭발을 방지하는 기울기 클리핑이 있다. 배치 정규화와 층 정규화는 SGD와 함께 사용되어 학습을 안정화하고 더 높은 학습률을 허용하는 경우가 많다. 또한 Xavier 또는 He 초기화와 같은 가중치 초기화 전략은 효과적인 SGD 학습에 중요하다.
과제 및 고려 사항
확률적 경사 하강법의 주요 과제 중 하나는 학습률 선택이다. 학습률이 너무 높으면 알고리즘이 발산할 수 있고, 너무 낮으면 수렴이 느려질 수 있다. 실제로는 학습률 스케줄이나 적응형 방법을 사용하여 이 문제를 완화한다. 또 다른 과제는 데이터의 부분 집합을 사용함으로써 발생하는 노이즈로, 이로 인해 손실이 변동할 수 있다. 그러나 이러한 노이즈는 알고리즘이 날카로운 최솟값을 벗어나 일반화 성능이 더 좋은 평평한 최솟값을 찾는 데 도움이 될 수 있으므로 유익할 수도 있다.
SGD는 특성의 스케일링에 민감하므로 특성 정규화가 권장된다. 미니 배치 크기의 선택도 성능에 영향을 미친다. 배치가 작을수록 노이즈는 더 많아지지만 메모리 요구량은 줄어들고, 배치가 클수록 경사가 더 부드러워지지만 일반화 성능이 나빠질 수 있다. 분산 학습에서 SGD는 텐서플로 및 PyTorch와 같은 프레임워크에서 구현된 동기식 또는 비동기식 업데이트와 같은 기법을 사용하여 병렬화할 수 있다.
역사적 배경
확률적 경사 하강법의 기원은 1951년 허버트 로빈스와 서튼 먼로가 개발한 로빈스-먼로 알고리즘으로 거슬러 올라가며, 이는 근 찾기를 위한 확률적 근사의 개념을 도입했다. 1960년대에는 버나드 위드로와 테드 호프가 개발한 LMS 알고리즘이 적응형 필터링에 유사한 원리를 적용했다. 신경망 학습과의 연관성은 1980년대 역전파의 대중화와 함께 확립되었다. 1986년 데이비드 럼멜하트, 제프리 힌턴, 로널드 윌리엄스는 SGD를 사용한 역전파가 내부 표현 학습에 효과적임을 보여주는 논문을 발표했다. 그 이후로 SGD는 머신러닝의 초석이 되었으며 이미지 인식, 음성 인식, 자연어 처리와 같은 분야에서 혁신을 가능하게 했다.
2010년대에는 딥러닝의 부상과 대규모 데이터셋 및 엔비디아와 AMD의 GPU와 같은 강력한 하드웨어의 가용성이 SGD의 채택을 가속화했다. 스탠포드 AI 연구소, 버클리 AI 연구, 토론토 대학교와 같은 연구 기관들이 이론적 및 실용적 발전에 기여했다. 오늘날 SGD는 일반화 특성에 대한 이해와 새로운 변형 개발에 대한 지속적인 연구가 이루어지는 활발한 연구 분야로 남아 있다.