콘텐츠로 이동

P2-6.3 경사하강법(gradient descent)의 직관

Section ID: P2-6.3 Version: v2026.09.15

경사하강법(gradient descent)은 현재 파라미터에서 목적 함수의 그래디언트(gradient)를 계산하고, 그 반대 방향으로 파라미터를 바꾸는 방법입니다. 학습률(learning rate)은 그래디언트에 곱하는 값으로 이동량을 조절합니다.

직선 모델의 현재 손실

공부 시간으로 점수를 예측하는 데이터를 사용합니다.

학생 공부 시간 x 실제 점수 y
A 1 55
B 2 65
C 3 80
D 4 90

현재 직선을 \(\hat{y} = 8x + 45\)로 두면 예측값은 53, 61, 69, 77입니다. 실제값보다 각각 2, 4, 11, 13만큼 낮습니다. 평균 제곱 오차는 (4 + 16 + 121 + 169) / 4 = 77.5입니다.

기울기 a와 절편 b를 바꿔 이 손실을 줄이는 것이 목표입니다.

이 이동을 학습 루프로 보면 다음처럼 읽을 수 있습니다.

flowchart TD
  P["현재 파라미터 a, b"]
  L["네 학생의 예측과 MSE"]
  G["같은 현재 위치에서<br/>두 편미분 계산"]
  U["[a, b] − η × 그래디언트"]
  P --> L --> G --> U --> P

현재 위치의 기울기

경사하강법은 산에서 내려오는 비유로 자주 설명됩니다. 높은 곳에 서 있을 때 주변 경사를 보고 더 낮아지는 방향으로 조금씩 내려간다는 설명입니다.

이 비유는 처음 이해하기에 좋습니다. 현재 위치는 현재 모델 파라미터를, 높이는 손실 값을, 내려가는 방향은 손실이 줄어드는 방향을 뜻한다고 보면 됩니다.

하지만 이 비유를 너무 믿으면 오해가 생깁니다. 실제 모델 학습에서는 산의 전체 지도를 한눈에 보는 것이 아닙니다. 현재 위치 근처의 방향을 읽고, 조금 움직인 뒤, 다시 확인합니다.

그래서 경사하강법은 한 번에 정답으로 뛰어가는 방법이 아니라, 현재 정보로 조금씩 개선하려는 반복 방법입니다.

공부 시간-점수 예시에서도 그렇습니다. 현재 직선이 학생 C, D를 전반적으로 낮게 예측한다면, 한 번에 완벽한 직선을 찍기보다 기울기 a를 조금 키우면 손실이 줄어드는가, 절편 b를 조금 조정하면 더 나아지는가를 반복해서 확인합니다.

그래디언트의 반대 방향

그래디언트(gradient)는 현재 위치에서 함수값이 가장 빠르게 증가하는 방향과 연결됩니다. 손실 함수(loss function)를 생각하면, 그래디언트 방향은 손실이 커지는 방향입니다.

AI 학습에서는 보통 손실을 줄이고 싶습니다. 그래서 그래디언트가 가리키는 방향 그대로 움직이지 않고, 그 반대 방향으로 움직입니다. 그래디언트 방향은 손실이 커지는 쪽이고, 그래디언트의 반대 방향은 손실이 줄어드는 쪽입니다.

이것이 descent라는 말의 핵심입니다. gradient를 계산하지만, 목표는 올라가는 것이 아니라 내려가는 것입니다.

미분 가능한 목적 함수에서 그래디언트가 0이 아닐 때, 반대 방향으로 충분히 작게 이동하면 목적 함수값이 줄어듭니다. 이동량이 크면 같은 방향으로 움직여도 손실이 늘 수 있습니다.

학습률과 이동 크기

손실이 줄어드는 방향을 알았다고 해서 멀리 뛰어가면 되는 것은 아닙니다. 현재 위치의 그래디언트는 현재 근처의 정보입니다. 너무 크게 움직이면 더 낮은 곳으로 가는 대신 지나쳐 버릴 수 있습니다.

그래서 경사하강법에는 학습률(learning rate)이 필요합니다. 학습률은 한 번에 얼마나 움직일지 정하는 값입니다. 학습률이 너무 작으면 너무 천천히 움직이고, 적절하면 손실이 안정적으로 줄어들 수 있으며, 너무 크면 좋은 위치를 지나치거나 손실이 흔들릴 수 있습니다.

실제 이동량은 학습률과 그래디언트의 곱입니다. 학습률이 같아도 그래디언트의 크기가 달라지면 이동 거리도 달라집니다.

예를 들어 기울기 a를 한 번에 너무 크게 올리면 학생 D 쪽 오차는 줄어도 학생 A, B 쪽에서는 오히려 지나칠 수 있습니다. 반대로 너무 조금만 바꾸면 손실이 줄어드는 방향을 알아도 개선이 매우 느립니다. 학습률은 이 보폭을 정합니다.

경사하강법 업데이트 식

경사하강법은 보통 다음과 같은 모양의 식으로 표현됩니다.

\[ \theta_{\text{new}} = \theta_{\text{old}} - \eta \nabla J(\theta_{\text{old}}) \]

기호는 다음 값을 나타냅니다.

기호 입문적 의미
\(\theta\) 모델이 조정하는 파라미터(parameter)
\(J(\theta)\) 줄이고 싶은 목적 함수(objective function)
\(\nabla J(\theta)\) 현재 위치에서 손실이 커지는 방향 정보
\(\eta\) 학습률(learning rate), 그래디언트에 곱하는 이동량 계수
\(-\eta \nabla J(\theta)\) 손실이 줄어드는 쪽으로 조금 움직이는 양

이 모델에서 \(\theta\)는 [a, b]이고 목적 함수 \(J\)는 네 학생의 평균 제곱 오차입니다. 식은 현재 파라미터 − 학습률 × 그래디언트라는 계산을 압축합니다.

기울기와 절편의 한 번 업데이트

각 학생의 예측값 − 실제값을 \(r_i\)로 쓰면 현재 오차는 −2, −4, −11, −13입니다. 평균 제곱 오차를 각 파라미터에 대해 미분하면 다음과 같습니다.

\[ \frac{\partial J}{\partial a}=\frac{2}{4}\sum_{i=1}^{4}r_i x_i =\frac{2}{4}(-2-8-33-52)=-47.5 \]
\[ \frac{\partial J}{\partial b}=\frac{2}{4}\sum_{i=1}^{4}r_i =\frac{2}{4}(-2-4-11-13)=-15 \]

a를 바꾸면 공부 시간 x가 큰 학생의 예측이 더 많이 변하므로 첫 식에는 x_i가 곱해집니다. b를 바꾸면 모든 학생의 예측이 같은 양만큼 바뀝니다.

학습률이 0.01이면 업데이트 결과는 다음과 같습니다.

  • a_new = 8 − 0.01 × (−47.5) = 8.475
  • b_new = 45 − 0.01 × (−15) = 45.15

새 직선으로 다시 예측하면 MSE는 77.5에서 약 54.76으로 줄어듭니다. 다음 업데이트에서는 새 위치 [8.475, 45.15]의 그래디언트를 다시 계산합니다.

새 위치에서 다시 계산하기

첫 갱신은 두 파라미터 모두 갱신 전 위치 [8, 45]에서 계산한 그래디언트를 사용합니다. a만 먼저 바꾼 뒤 그 값으로 b의 그래디언트를 계산하는 방식과 구분합니다.

새 위치 [8.475, 45.15]에서의 예측값은 53.625, 62.1, 70.575, 79.05입니다. 오차 예측값 − 실제값도 −1.375, −2.9, −9.425, −10.95로 바뀌므로 그래디언트를 다시 계산해야 합니다.

갱신 전 위치 [a, b] 그 위치의 그래디언트 η=0.01로 갱신한 위치 갱신 후 MSE
[8, 45] [−47.5, −15] [8.475, 45.15] 약 54.7584
[8.475, 45.15] [−39.625, −12.325] [8.87125, 45.27325] 약 38.9750

두 번째 갱신은 a=8.475−0.01×(−39.625)=8.87125, b=45.15−0.01×(−12.325)=45.27325입니다. 학습률은 같아도 그래디언트가 달라져 이동량이 달라집니다. 매번 네 학생 전체의 손실로 그래디언트를 계산하므로 이 사례는 전체 배치 경사하강법입니다.

전체 배치 경사하강법 20회 갱신에 따른 평균 제곱 오차

그래프의 가로축은 갱신 횟수이고 세로축은 그때의 MSE입니다. 같은 네 학생의 데이터를 사용하고, [8, 45]에서 학습률 0.01로 시작해 매번 그래디언트를 다시 계산했습니다. 0회는 갱신 전 손실입니다. 이 그래프는 파라미터 공간의 지형이 아니라 20회 갱신 동안의 손실 기록입니다.

학습률별 손실 비교

같은 시작점 [8, 45]와 같은 그래디언트 [-47.5, -15]에서 학습률만 바꿔 한 번 이동해 봅니다.

학습률 새 a 새 b 이동 후 MSE
0.001 8.0475 45.015 약 75.04
0.01 8.475 45.15 약 54.76
0.2 17.5 48 약 409.63

세 경우 모두 그래디언트의 반대 방향으로 움직였지만, 학습률 0.2에서는 손실이 크게 늘었습니다. 0.001에서는 손실이 줄어드는 폭이 작습니다. 방향을 정하는 일과 적절한 이동량을 정하는 일은 함께 필요합니다.

수렴에 영향을 주는 조건

경사하강법은 강력하지만, 완벽한 답을 자동으로 보장하는 방법은 아닙니다.

결과는 여러 조건에 영향을 받습니다.

조건 왜 중요한가
시작 위치(initialization) 어디서 출발하느냐에 따라 경로가 달라질 수 있다
학습률(learning rate) 너무 작으면 느리고, 너무 크면 불안정할 수 있다
손실 함수의 모양(loss landscape) 골짜기, 평평한 구간, 여러 낮은 지점이 있을 수 있다
데이터(data) 손실은 데이터에서 계산되므로 데이터 품질에 영향을 받는다
반복 횟수(iterations) 너무 적으면 덜 학습되고, 너무 많으면 과적합될 수 있다

경사하강법은 주어진 기준과 조건 안에서 더 나은 방향으로 움직이는 방법입니다. 현실의 모든 조건을 자동으로 해결하지 않습니다.

수렴과 학습 종료

수렴은 반복하면서 파라미터나 목적 함수값의 변화가 작아져 일정한 값에 가까워지는 상태입니다. 구현에서는 최대 반복 횟수를 정하고, 연속 갱신 사이의 손실 변화나 그래디언트 크기가 정한 허용치보다 작은지 확인할 수 있습니다. 손실 변화가 작다는 이유만으로 최적점에 도달했다고 단정할 수는 없습니다. 학습률이 지나치게 작아 거의 움직이지 못하는 경우도 있기 때문입니다.

반면 학습의 조기 종료(early stopping)는 검증 데이터의 성능을 기준으로 결정할 수 있습니다. 훈련 손실은 줄어도 검증 손실이 일정 기간 개선되지 않으면 중단하는 방식입니다. 목적 함수의 수렴 여부와 새 데이터에 대한 성능은 서로 다른 판단입니다. 테스트 데이터는 이런 반복적인 종료 시점 선택에 사용하지 않습니다.

이전 그래디언트를 재사용하면

첫 갱신 후 [8.475, 45.15]에서, 새 그래디언트를 구하지 않고 처음의 [-47.5, -15]를 다시 사용해 보세요. 학습률 0.01로 계산한 다음 파라미터는 무엇인가요? 위 표의 두 번째 갱신과 비교하세요.

풀이: a=8.95, b=45.3이 됩니다. 현재 위치에서 다시 계산한 결과 [8.87125, 45.27325]와 다릅니다. 이 사례에서는 예전 그래디언트를 사용해도 MSE가 약 36.1588로 줄지만, 한 번 더 크게 줄었다는 사실이 다음 갱신에서도 그 방향과 크기가 적절함을 보장하지는 않습니다. 기본 경사하강법의 갱신은 현재 위치의 그래디언트를 사용합니다.

체크리스트

  • 경사하강법(gradient descent)을 손실을 낮추기 위한 반복 이동 방법으로 설명할 수 있다.
  • 그래디언트(gradient)가 현재 위치에서 손실이 커지는 방향과 연결됨을 설명할 수 있다.
  • 손실을 줄이기 위해 그래디언트 반대 방향으로 움직인다는 점을 설명할 수 있다.
  • 학습률(learning rate)을 한 번에 움직이는 크기로 설명할 수 있다.
  • 경사하강법 업데이트 식을 현재 값에서 그래디언트 반대 방향으로 조금 이동한다는 구조로 읽을 수 있다.
  • 경사하강법이 시작 위치, 학습률, 손실 함수 모양, 데이터, 반복 횟수에 영향을 받는다는 점을 설명할 수 있다.
  • 손실을 줄인다는 말이 실제로 파라미터를 어떻게 바꾸는지까지 연결해 설명할 수 있다.
  • 그래디언트 방향과 그 반대 방향 이동이 왜 필요한지 구분할 수 있다.

출처와 참고 자료

  • Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, Chapter 8: Optimization for Training Deep Models, MIT Press, 2016, 확인 날짜: 2026-09-15. 딥러닝 최적화에서 비용 함수, 파라미터, 그래디언트 기반 이동, 경사하강법, 학습률의 역할을 설명하는 근거로 사용했다.
  • Stephen Boyd, Lieven Vandenberghe, Convex Optimization, Cambridge University Press, 2004, 확인 날짜: 2026-07-20. 최적화 문제와 그래디언트 기반 반복 이동을 수학적 최적화 맥락에서 확인하는 보조 근거로 사용했다.