경사 하강법(GD)은 목적 함수를 반복적으로 최소화하는 최적화 알고리즘입니다. 머신 러닝(ML)의 맥락에서 경사 하강은 지도 학습 모델의 훈련 단계에서 성능을 향상시키는 데 기본이 됩니다. 신경망과 같은 머신 러닝 모델은 복잡하고 비선형적이며 고차원적입니다. 따라서 이러한 모델에는 선형 회귀와 달리 최적의 가중치를 계산할 수 있는 정규 방정식이 존재하지 않습니다 . 대신 경사 하강법의 변형, 뉴턴의 방법 및 기대 최대화와 같은 근사 방법을 사용할 수 있습니다.
모든 모델에는 비용 함수라고도 하는 손실 함수가 있습니다. 이 함수는 모델의 예측이 실제 데이터 포인트에서 얼마나 멀리 떨어져 있는지 측정합니다. 이는 모델의 예측이 얼마나 '잘못되었는지'를 측정하는 척도라고 생각하면 됩니다. 예를 들어, 평균 제곱 오차는 회귀 문제에서 손실 함수로 사용되는 경우가 많습니다. 모델 훈련 단계는 이러한 손실을 최소화하는 매개변수 값을 찾도록 설계되었습니다. 경사 하강은 이러한 이유로 훈련에 사용되는 최적화 기술인 경우가 많습니다. 알고리즘은 모형 매개변수에 대한 손실의 경사 또는 경사를 계산합니다. 이 경사를 사용하면 손실을 줄이기 위해 반대 방향으로 한 걸음 더 나아갑니다. 학습률(단계 크기 또는 알파라고도 함)은 단계의 크기이며 모든 모델 매개변수에 대해 고정된 상태로 유지됩니다. 이 프로세스는 모델이 최소에 가까운 수렴을 달성할 때까지 반복됩니다.
수렴은 이상적으로는 전역 최소값에서 발생합니다. 다음 시각화에서 손실 값이 로컬 최소값에서 바로 주변 영역보다 낮지만 전체 값이 반드시 가장 낮은 것은 아님을 확인할 수 있습니다. 전역 최소값은 전체 도메인에서 손실 함수의 절대적으로 가장 낮은 값으로, 문제에 대한 최상의 솔루션을 나타냅니다.
학습률이 충분히 작지 않으면 알고리즘이 로컬 최소값으로 수축되는 경우가 많습니다. 잘 선택된 비율은 손실 함수를 최소화하고 전역 최소값에서 수렴을 달성하는 데 필수적입니다.
이 시각화는 학습률이 수렴에 미치는 영향을 보여줍니다. 학습률이 낮으면 느리지만 안정적인 수렴으로 이어지는 반면(왼쪽), 학습률이 높으면 오버슈팅과 불안정성이 발생할 수 있습니다(오른쪽).
기존 경사 하강법과 확률적 경사 하강법의 주요 차이점은 SGD가 한 번에 하나의 훈련 예시를 사용하여 모델 가중치를 업데이트한다는 것입니다. 예시는 각 반복에서 무작위로 선택됩니다.1 경사 하강법은 전체 훈련 데이터 세트를 사용하여 각 매개변수가 업데이트되기 전에 경사를 계산합니다. 이러한 데이터 사용량의 차이로 인해 SGD는 계산 비용이 훨씬 적게 들고 대규모 데이터 세트에 대해 확장하기 쉽습니다. 또는 SGD의 수렴 동작은 하나의 예시 데이터 포인트가 데이터 세트를 잘 나타내지 않을 수 있기 때문에 GD의 노이즈보다 더 시끄럽습니다. 이러한 잘못된 표현은 요점을 약간 '잘못된' 방향으로 업데이트합니다. 그러나 이러한 무작위성 덕분에 SGD는 얕은 로컬 최소값 또는 새들 포인트에서 벗어날 수 있기 때문에 비볼록 최적화 문제에서 더 빠르고 때로는 더 나은 결과를 얻을 수 있습니다.
엄밀히 말하면 SGD는 원래 한 번에 정확히 하나의 훈련 샘플을 사용하여 매개변수를 업데이트하도록 정의되었습니다. 오늘날 'SGD'라는 용어는 한 번에 작은 배치의 훈련 데이터를 사용하는 GD의 변형인 '미니배치 경사 하강'을 의미하는 느슨한 의미로 사용됩니다. 단일 샘플 대신 데이터의 하위 집합을 사용할 때의 주요 이점은 경사가 미니배치의 손실 평균과 동일하기 때문에 노이즈 수준이 낮다는 것입니다. 이러한 이유로 미니배치 경사 하강은 딥 러닝의 기본값입니다. 반대로 엄격한 SGD는 실제로 거의 사용되지 않습니다. 이러한 용어는 PyTorch 및 TensorFlow와 같은 대부분의 머신 러닝 라이브러리에서도 혼동됩니다. 옵티마이저는 일반적으로 미니배치를 사용하지만 종종 'SGD'라고 불립니다.
다음 그림은 훈련 데이터의 샘플 크기를 늘리면 진동과 '노이즈'가 어떻게 줄어드는지 더 명확하게 보여줍니다.
속도, 안정성 및 수렴을 개선하는 메커니즘을 추가하여 기본 경사 하강법을 기반으로 구축된 GD의 몇 가지 다른 변형이 있습니다.
모멘텀은 일정한 경사가 있는 차원에서는 모멘텀을 축적하고 경사가 변화하는 차원에서는 업데이트를 완화함으로써 SGD가 진동이 적고 빠르게 수렴하는 데 도움이됩니다.2
AdaGrad 및 RMSProp과 같은 적응형 학습률 방법은 각 매개변수에 대한 학습률을 개별적으로 조정한다는 점에서 독특합니다. 이 접근 방식은 모든 매개변수에 대해 고정된 학습률을 사용하는 SGD 방법과 대조됩니다.
AdaGrad(적응형 경사 알고리즘): 이전 경사를 기반으로 각 매개변수에 대한 학습 속도를 조정합니다. 덜 자주 나타나는 기능은 학습률이 높고, 빈번한 기능은 학습률이 낮습니다. 이 접근 방식은 SGD를 사용할 때보다 드물게 발생하는 기능을 더 빠르게 학습할 수 있음을 의미합니다. 이러한 적응형 학습 속도는 특징 빈도의 편차가 큰 희박한 데이터를 사용하는 자연어 처리(NLP) 및 추천 시스템에 적합한 방법이라는 것을 의미합니다.2
RMSProp(루트 평균 제곱 전파): 최근 제곱 경사의 이동 평균을 사용하여 각 매개변수에 대한 학습 속도를 조정하는 또 다른 적응형 학습 속도 최적화 기법입니다. 과거의 경사 지식은 폐기되고 현재의 경사 지식만 보존됩니다.4 학습률은 경사가 작은 매개변수의 경우 더 커지고 경사가 큰 매개변수의 경우 더 작아집니다. 이 방법은 AdaGrad의 학습률 감소 문제를 해결합니다. RMSProp은 딥러닝, 특히 순환 신경망(RNN)과 같은 모델의 안정적인 훈련을 돕고 강화 학습과 같이 목표가 계속 바뀌는 문제에서 잘 작동합니다.
SGD 및 기타 GD 변형은 훈련 시간이 병목 현상일 때 유용합니다.5
| 변형 | 단계당 사용된 데이터 | 주요 기능 | 일반적인 용도 |
|---|---|---|---|
| GD | 모든 데이터 | 안정적이지만 느림 | 소규모 데이터 세트 |
| SGD | 클래식 SGD용 샘플 1개 | 시끄럽지만 빠름 | 온라인 학습 |
| 미니 배치 GD | 적은 수의 샘플 | 균형 잡힌 확장성 | 딥 러닝 |
| 모멘텀 | 배치/미니 배치 | 올바른 방향으로 가속화 | 신경망 |
| NAG | 배치/미니 배치 | 예측 모멘텀 | 더 빠른 수렴 |
| AdaGrad | 미니 배치 | 적응형 학습률 | 희소 데이터 |
| RMSProp | 미니 배치 | AdaGrad 붕괴 수정 | RNN, 딥 넷 |
| Adam | 미니 배치 | 모멘텀 + RMSProp | 현재 기본 선택 사항 |
SGD의 목표는 모델의 예측을 실제 값에 최대한 가깝게 만드는 매개변수를 찾는 것입니다 . 즉, 손실 함수를 최소화하고 .
선형 회귀의 경우 해당 매개변수는 (가중치) 및 (편향)입니다. 따라서 이 경우 을(를) 최소화하는 것은 다음을 최소화하는 것과 동일합니다. .
경사 하강법을 가르칠 때 일반적으로 사용되는 비유는 GD가 계곡에 도달할 때까지 산을 내리막길을 걷는 것과 같다는 것입니다(최소 손실). 손실 함수의 경사를 상상해 보세요. , 오르막을 가리키고 내리막으로 이동하려면 반대 방향으로 나아가야 합니다.
매개변수 에 대한 일반 업데이트 규칙은 다음과 같습니다.
여기에서 은(는) 학습률이고은(는) 손실에 대한 경사입니다. .
SGD는 무작위로 선택된 단일 샘플 만 사용하여 경사를 근사화합니다.
참고로, 소문자 은(는) 단일 훈련 예시의 손실을 나타냅니다. 반면 대문자 은(는) 전체 손실 함수(데이터 세트 전체의 모든 개별 손실의 평균)입니다. 이 전역 오류는 훈련에서 최소화하려고 하는 것입니다.
이제 SGD를 사용한 선형 회귀의 예를 살펴보겠습니다.
하나의 샘플에 대해 , 예측은 다음과 같습니다.
로컬 손실은 한 샘플에 대한 제곱 오차입니다.
이제 역전파(Backpropagation) 중에 모델의 매개변수는 각 매개변수에 대한 손실 함수의 경사를 계산하는 연쇄 규칙을 사용하여 업데이트됩니다.5 경사(파생)는 다음과 같습니다.
SGD를 사용하면 이러한 각 매개변수를 업데이트합니다. 및 , 다음 규칙을 사용합니다.
SGD는 전체 데이터 세트에 걸쳐 무거운 평균 경사를 계산하는 대신 경량 무작위 추정치를 사용합니다.
머신 러닝 프레임워크로 작업할 때 사용할 수 있는 기본 제공 SGD 옵티마이저 클래스가 있습니다. 예를 들어,
학습을 위해 SGD의 간단한 Python 구현을 처음부터 따라해 보겠습니다.
다시 말해, 목표는 손실 함수(예측이 얼마나 틀렸는지를 측정하는 척도)를 최소화하는 최적의 매개변수(모델 가중치)를 찾는 것입니다. 한 번에 하나의 샘플 또는 아주 작은 배치 크기로 업데이트할 것입니다.
먼저 매개변수 값(가중치)을 임의로 초기화할 수 있습니다. 다음으로 임의의 데이터 포인트 을(를) 선택할 수 있습니다. 여기에서 예측과 오류를 계산합니다. 이 간단한 데모를 위해 간단한 선을 맞춰 보겠습니다. . 프로세스의 다음 단계는 역전파입니다. 여기서 손실 함수의 경사는 매개변수를 기준으로 계산됩니다. 이러한 경사(파생)는 SGD 최적화 프로세스 중에 매개변수를 업데이트하는 데 사용됩니다. 그래디언트는 손실 함수의 증가 방향을 가리키기 때문에 SGD는 해당 현재 매개변수 값에서 각 그래디언트를 뺍니다. 이를 손실 함수를 줄이기 위해 경사의 반대 방향으로 이동하는 것으로 생각할 수 있습니다. 따라서 확률론적 경사 하강의 "하강"입니다. 고정된 에포크 수까지 또는 손실이 허용 오차보다 작을 때까지 이 단계를 반복합니다. 후자는 손실이 거의 변하지 않고 더 이상 목적 함수를 개선하지 않는다는 것을 의미합니다. 즉, 알고리즘이 수렴하면 중지합니다.
SGD는 심층 신경망을 훈련하는 가장 일반적인 최적화 방법입니다. 더 광범위한 데이터 과학 분야에 속하는 머신 러닝의 하위 집합인 딥 러닝에서 목표는 컴퓨터가 인간 두뇌의 복잡한 의사 결정 능력을 시뮬레이션하는 것입니다. 기존 ML 모델은 하나 또는 두 개의 계층으로 구성된 간단한 신경망을 사용합니다. 반면 딥 러닝 모델은 3개 이상의 계층을 사용합니다. 일반적으로 모델을 훈련시키기 위해 수백 또는 수천 개의 계층이 필요합니다. SGD는 대규모 훈련 세트에 맞게 쉽게 확장할 수 있으므로 심층 신경망을 훈련하기 위한 접근 방식인 경우가 많습니다. SGD 훈련의 다른 애플리케이션에는 릿지 회귀, 정규화된 로지스틱 회귀 및 선형 커널을 사용하는 서포트 벡터 머신(SVM)에 사용되는 힌지 손실 함수의 최적화가 포함됩니다.
SGD는 한 번에 하나의 데이터 샘플을 사용하여 머신 러닝 모델의 손실 함수를 최소화하는 GD의 변형입니다. 이 접근 방식은 경사를 계산하기 위해 각 단계에서 전체 데이터 세트에 의존하는 GD와 다릅니다. 모멘텀 기반 또는 적응형 학습 방법으로 그룹화할 수 있는 몇 가지 다른 GD 변형이 있습니다. 운동량 경사 하강과 네스테로프 가속 경사가 전자의 예입니다. 이러한 방법은 일관된 경사가 있는 차원에서는 누적된 모멘텀을 활용하고 경사가 변화하는 차원에서는 업데이트를 완화합니다. 따라서 SGD가 더 빠르고 더 적은 진동으로 수렴할 수 있도록 도와줍니다. AdaGrad 및 RMSProp과 같은 적응형 학습률 방법은 고정된 학습률을 사용하는 기존 SGD와 달리 각 매개변수에 대한 학습률을 개별적으로 조정합니다. 또한 Adam과 같은 하이브리드 방식은 모멘텀 기반 GD와 RMSProp의 강점을 결합하여 강력한 대안을 제시합니다.
AI 빌더를 위한 차세대 엔터프라이즈 스튜디오인 IBM watsonx.ai로 생성형 AI, 파운데이션 모델 및 머신 러닝 기능을 학습, 검증, 조정 및 배포하세요. 적은 데이터로 짧은 시간 내에 AI 애플리케이션을 구축하세요.
업계 최고의 AI 전문성과 솔루션 포트폴리오를 보유한 IBM과 함께 AI를 비즈니스에 활용하세요.
AI 추가를 통해 중요한 워크플로와 운영을 혁신함으로써 경험, 실시간 의사 결정 및 비즈니스 가치를 극대화합니다.
1 Bottou, L. (2010). Large-Scale Machine Learning with Stochastic Gradient Descent. Lechevallier, Y., Saporta, G. (eds) Proceedings of COMPSTAT’2010. Physica-Verlag HD.
2 Ruder, S. (2016). An overview of gradient descent optimization algorithms.
3 Tian, Y., Zhang, Y., & Zhang, H. (2023). Recent Advances in Stochastic Gradient Descent in Deep Learning. Mathematics, 11(3), 682.
4 Haji, S. H., & Abdulazeez, A. M. (2021). Comparison of optimization techniques based on gradient descent algorithm: A review. PalArch’s Journal of Archaeology of Egypt/Egyptology, 18(4), 2715-2743.
5 Bottou, L. (2012). Stochastic Gradient Descent Tricks. Montavon, G., Orr, G.B., Müller, KR. (eds) Neural Networks: Tricks of the Trade. Lecture Notes in Computer Science, vol 7700. Springer, Berlin, Heidelberg.