경사하강법: 기울기를 따라 손실을 최소화하는 법

손실함수의 기울기를 따라 파라미터를 갱신하는 경사하강법의 작동 원리와 배치·SGD·미니배치, 모멘텀·Adam 등 개선 기법을 정리한다.

2026-08-13 · 최초 발행 2025-05-23

손실을 숫자로 표현하는 손실함수

손실함수(Loss Function)는 머신러닝 모델이 예측한 값과 실제 타깃값 사이의 차이를 수치화한 함수다. 예측값과 실제값의 차이를 측정해 모델의 성능을 평가하고, 이 함수값을 최소화하는 모델 파라미터를 찾는 것이 학습의 목표다.

각 머신러닝 모델 유형과 문제 상황에 따라 적합한 손실함수가 따로 있다.

  • 회귀 문제: 제곱오차(Squared Error), 평균제곱오차(MSE), 평균절대오차(MAE)
  • 분류 문제: 로지스틱 손실함수, 크로스 엔트로피 손실함수
  • 강화학습: 정책 손실함수, 가치 손실함수

제곱오차로 손실을 계산하는 법

가장 간단한 손실함수 중 하나인 제곱오차 함수(SE)는 다음과 같이 정의된다.

SE = (y - y_hat)²

여기서 y는 실제 타깃값, y_hat은 모델이 예측한 값이다.

선형 회귀 모델에서 예측값은 다음과 같이 계산된다.

y_hat = w * x + b

w는 가중치(weight), b는 편향(bias), x는 입력 특성(feature)이다.

따라서 손실함수는 다음과 같이 표현된다.

SE = (y - (w * x + b))²

손실함수는 왜 포물선 모양을 그리는가

제곱오차 손실함수를 가중치 w에 대해 그래프로 표현하면 포물선(2차함수) 형태가 나타난다.

손실함수최적의 w값기울기=0

이 포물선에서 최소값은 접선의 기울기가 0인 지점에 위치한다. 경사하강법은 이 최소값을 찾는 알고리즘이다.

기울기를 따라 파라미터를 조정하는 절차

경사하강법은 다음 절차를 반복한다.

  1. 기울기 계산: 현재 파라미터에서 손실함수의 기울기(그래디언트)를 계산
  2. 파라미터 업데이트: 기울기의 반대 방향으로 파라미터를 조정
  3. 반복: 수렴할 때까지 위 과정을 반복

수식으로 표현하면 다음과 같다.

w_new = w_old - η * ∂SE/∂w
b_new = b_old - η * ∂SE/∂b

η는 학습률(learning rate)로 파라미터를 얼마나 조정할지 결정하는 하이퍼파라미터이고, ∂SE/∂w·∂SE/∂b는 각각 가중치·편향에 대한 손실함수의 편미분값이다.

편미분으로 기울기를 직접 계산해보면

SE = (y - (w * x + b))²w로 편미분하면 다음과 같다.

∂SE/∂w = -2 * (y - (w * x + b)) * x

b로 편미분하면 다음과 같다.

∂SE/∂b = -2 * (y - (w * x + b))

이 기울기 계산을 통해 손실을 최소화하는 방향으로 파라미터를 업데이트한다.

배치·확률적·미니배치 경사하강법의 차이

**배치 경사하강법(Batch Gradient Descent)**은 전체 데이터셋을 사용해 한 번에 기울기를 계산한다. 안정적으로 수렴하지만 대용량 데이터셋에서는 계산 비용이 높다.

**확률적 경사하강법(Stochastic Gradient Descent, SGD)**은 각 반복마다 무작위로 선택된 하나의 샘플을 사용한다. 계산이 빠르고 지역 최소값을 탈출할 가능성도 있지만, 수렴 과정이 불안정할 수 있다.

**미니배치 경사하강법(Mini-batch Gradient Descent)**은 무작위로 선택된 소규모 데이터 배치를 사용해 배치와 확률적 방법의 장점을 결합한다. 다만 배치 크기를 따로 조정해야 한다.

경사하강법배치 GD확률적 GD미니배치 GD전체 데이터 사용단일 샘플 사용소규모 배치 사용

학습률 하나로 수렴 여부가 갈린다

학습률(η)은 경사하강법에서 가장 민감한 하이퍼파라미터다. 학습률이 너무 작으면 수렴이 매우 느려지고, 너무 크면 발산하거나 최소값을 넘어가 버린다.

너무 작은 학습률느린 수렴적절한 학습률효율적 수렴너무 학습률발산

모멘텀부터 Adam까지 개선된 변형들

기본 경사하강법의 한계를 극복하기 위한 변형들이 등장했다.

  • 모멘텀(Momentum): 이전 업데이트 방향을 고려해 관성 효과를 부여한다. 지역 최소값을 탈출하고 진동을 줄이는 효과가 있다.
  • AdaGrad(Adaptive Gradient): 파라미터별로 다른 학습률을 적용한다. 자주 업데이트되는 파라미터는 작은 학습률을, 그렇지 않은 파라미터는 큰 학습률을 쓴다.
  • RMSProp: AdaGrad의 학습률 감소 문제를 해결하며, 최근 기울기에 더 큰 가중치를 준다.
  • Adam(Adaptive Moment Estimation): 모멘텀과 RMSProp의 장점을 결합한 방식으로, 현재 가장 널리 쓰이는 최적화 알고리즘 중 하나다.

Python으로 경사하강법 구현해보기

간단한 선형 회귀에 경사하강법을 적용하면 다음과 같다.

# 간단한 선형 회귀에 경사하강법 적용 예시
import numpy as np
import matplotlib.pyplot as plt

# 데이터 생성
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)

# 초기 파라미터
w = 0
b = 0
learning_rate = 0.1
n_iterations = 1000

# 손실 기록
losses = []

# 경사하강법 구현
for i in range(n_iterations):
    # 예측
    y_pred = w * X + b

    # 손실 계산
    loss = np.mean((y - y_pred) ** 2)
    losses.append(loss)

    # 기울기 계산
    dw = -2 * np.mean(X * (y - y_pred))
    db = -2 * np.mean(y - y_pred)

    # 파라미터 업데이트
    w = w - learning_rate * dw
    b = b - learning_rate * db

print(f"최종 파라미터: w = {w}, b = {b}")

딥러닝 모델 학습에 실제로 쓰이는 곳

경사하강법은 컨볼루션 신경망(CNN), 순환 신경망(RNN), 변환기(Transformer) 등 대부분의 딥러닝 모델 학습에 쓰인다. 자연어 처리에서는 Word2Vec·GloVe 같은 단어 임베딩 학습에 확률적 경사하강법이 활용되고, 컴퓨터 비전에서는 객체 검출·이미지 분류 모델의 파라미터 최적화에, 추천 시스템에서는 사용자-아이템 상호작용 모델링과 최적화에 쓰인다.

지역 최소값과 기울기 소실, 자주 만나는 한계

  • 지역 최소값 문제: 비볼록 함수에서는 전역 최소값 대신 지역 최소값에 수렴할 위험이 있다.
  • 학습률 설정의 어려움: 문제마다 최적 학습률이 다르며 자동 조정이 필요하다.
  • 기울기 소실/폭발 문제: 깊은 신경망에서 기울기가 너무 작아지거나 커져 학습이 불안정해진다.
  • 계산 복잡성: 대규모 모델과 데이터셋에서는 계산 비용이 높다.

이런 한계를 보완하려는 시도가 모멘텀이나 Adam 같은 변형들이며, 이 방향의 연구는 계속되고 있다.

경사하강법머신러닝최적화딥러닝손실함수