Gradient Descent
경사 하강법은 손실의 그래디언트에 따라 가중치를 반복적으로 업데이트하여 모델을 학습합니다. 학습률, SGD, 모멘텀, Adam을 다룹니다.
경사 하강법은 선형 회귀부터 대규모 신경망까지 대부분의 머신러닝 모델을 학습하는 반복적 최적화 알고리즘입니다. 각 단계에서 손실 함수를 모든 모델 가중치에 대해 미분한 기울기를 계산하고, 손실이 가장 빠르게 감소하는 방향인 기울기의 반대 방향으로 각 가중치를 조금씩 이동합니다. 업데이트 규칙은 w ← w − η∇L(w)이며, 여기서 η는 학습률입니다. 흔히 짙은 안개 속에서 산을 내려가는 등산객에 비유합니다. 계곡을 볼 수 없는 등산객은 발밑의 경사를 느끼고 땅이 평평해질 때까지 계속해서 내리막으로 이동합니다.
경사 하강법의 작동 방식#
각 반복 단계는 세 부분으로 구성됩니다. 순전파는 예측값과 손실을 계산하고, 역전파는 모든 가중치에 대한 손실 기울기를 계산하며, 옵티마이저는 가중치를 업데이트합니다. 기울기는 손실 곡면의 오르막 방향을 가리키며 다변수 미적분학에서의 기울기 정의를 따릅니다. 따라서 기울기를 빼면 가중치는 내리막 방향으로 이동합니다.
각 단계에서 사용하는 데이터 양에 따라 경사 하강법의 변형이 달라집니다. 배치 경사 하강법은 전체 학습 데이터 세트에서 정확한 기울기를 계산하므로 정확하지만 대규모 데이터셋에서는 느립니다. 확률적 경사 하강법(SGD)은 단일 예제에서 기울기를 추정합니다. 딥러닝의 표준인 미니배치 경사 하강법은 배치 크기에 해당하는 수십~수천 개 예제의 평균을 계산해 GPU를 계속 가동합니다. 미니배치 기울기의 노이즈는 가중치가 안장점과 급격한 최솟값에서 벗어나는 데도 도움이 됩니다. 학습 세트 전체를 한 번 처리하는 것을 에포크라고 합니다.
학습률 선택하기#
학습률은 단계 크기를 정하며, 일반적으로 경사 하강법에서 가장 먼저 조정하는 하이퍼파라미터입니다. 학습률이 너무 낮으면 최솟값에 천천히 접근하느라 연산을 낭비하고, 너무 높으면 최솟값을 지나칩니다. 2차 손실 함수에서는 학습률이 손실 곡률의 2배보다 높으면 각 단계가 이전 단계보다 최솟값에서 더 멀리 도달합니다. 다음 코드는 PyTorch에서 곡률이 2인 (w − 2)²를 세 가지 학습률로 최소화합니다:
import torch
# Minimize loss(w) = (w - 2)^2, whose minimum is at w = 2, with three learning rates
for lr in [0.1, 0.5, 1.1]:
w = torch.tensor(5.0, requires_grad=True)
for step in range(20):
loss = (w - 2) ** 2
loss.backward() # w.grad now holds the slope 2 * (w - 2)
with torch.no_grad():
w -= lr * w.grad # step against the gradient
w.grad.zero_()
print(f"Learning rate {lr}: w = {w.item():.4f} after 20 steps")학습률 0.1에서는 20단계 후에도 가중치가 2.0346에 머뭅니다. 학습률 0.5는 곡률의 역수와 같으므로 정확히 2.0000에 도달합니다. 학습률 1.1은 단계마다 더 큰 폭으로 최솟값을 지나쳐 w가 117.0129에 도달합니다. 실제 학습 스케줄은 초기 단계를 안정적으로 유지하고 후반 단계에서 정확히 수렴할 수 있도록 짧은 워밍업으로 시작한 다음, 흔히 코사인 곡선을 따라 학습률을 낮춥니다.
모멘텀, Adam 및 최신 옵티마이저#
일반적인 경사 하강법은 손실 지표면의 좁은 골짜기에서 지그재그로 움직이므로, 학습에는 대부분 개선된 업데이트 규칙을 사용합니다. 모멘텀은 과거 경사의 이동 평균을 누적해 해당 방향으로 이동하여 진동을 줄이고 일관된 방향으로의 진행을 빠르게 합니다. Adam 옵티마이저는 각 파라미터의 제곱 경사도 추적해 가중치마다 적응적인 스텝 크기를 적용하며, AdamW는 가중치 감쇠를 업데이트와 분리합니다. Muon은 Newton-Schulz 반복을 사용해 각 2D 가중치 행렬의 모멘텀 업데이트를 직교화하여 특정 방향이 스텝을 지배하지 않도록 합니다. optimizer="auto"를 사용한 Ultralytics YOLO26 학습은 클래스 수에 맞춰 학습률을 설정하는 AdamW를 선택해 최대 10,000회 반복을 실행합니다. 장기 실행에는 합성곱 및 선형 가중치에 SGD와 Muon 방식의 직교화된 업데이트를 결합한 MuSGD를 사용합니다.
실제 적용 사례#
경사 하강법은 거의 모든 딥러닝 시스템을 학습시키는 엔진입니다. 자율주행차에서는 수백만 프레임에 걸쳐 보행자, 표지판, 차량의 예측 박스와 레이블 박스 간 차이를 줄이도록 객체 감지 네트워크를 조정합니다. 의료 영상 분석에서는 MRI 및 CT 스캔에서 종양과 건강한 조직을 구분하는 합성곱 신경망을 학습합니다. 대규모 언어 모델도 동일한 방식으로 학습하며, 일반적으로 수조 개 토큰에 대해 AdamW를 사용합니다.
경사 하강법과 관련 개념 비교#
- 역전파: 역전파는 연쇄 법칙을 사용해 기울기를 계산하고, 경사 하강법은 해당 기울기로 가중치를 업데이트합니다. 두 과정은 모든 학습 단계에서 연이어 실행되며 함께 언급되는 경우가 많습니다.
- 손실 함수: 손실 함수는 모델의 예측이 얼마나 잘못되었는지 점수화하며, 경사 하강법은 그 점수를 낮추는 절차입니다.
- 기울기 폭주: 심층 네트워크에서 기울기가 제어할 수 없이 커지면 경사 하강법이 파괴적인 단계를 수행합니다. 각 업데이트 전에 기울기 노름을 제한하는 기울기 클리핑으로 이를 방지할 수 있습니다.
- 진화 알고리즘: 이러한 그래디언트 프리 방법은 그래디언트를 계산하지 않고 후보를 샘플링하고 선택하여 탐색하므로, 하이퍼파라미터 선택처럼 미분할 수 없는 목적 함수에 적합합니다.










