# 경사하강법 분야: CS·데이터사이언스 학교급: 대학 정식 URL: https://pi.devxdev.xyz/wiki/math/%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95 --- ## 정의 경사하강법(gradient descent)은 미분 가능한 함수 $f:\mathbb{R}^n \to \mathbb{R}$의 지역 최솟값(local minimum)을 반복적으로 근사하는 최적화 알고리즘이다. 현재 지점 $x_k$에서 그래디언트(gradient) $\nabla f(x_k)$(내블라 $f$라 읽는다. $f$의 각 변수에 대한 도함수를 성분으로 갖는 벡터 $\left(\dfrac{\partial f}{\partial x_1}, \dots, \dfrac{\partial f}{\partial x_n}\right)$이다)를 계산하고, 그 반대 방향으로 이동해 다음 지점을 구한다. $$x_{k+1} = x_k - \eta \nabla f(x_k)$$ 여기서 $\eta > 0$(에타)는 학습률(learning rate)로, 한 번에 이동하는 보폭을 결정하는 상수다. 이 과정을 $\nabla f(x_k)$가 충분히 0에 가까워질 때까지 반복한다. ## 직관 안개가 짙게 낀 산에서 가장 낮은 곳을 찾아 내려간다고 생각해 보자. 전체 지형을 볼 수는 없지만, 발밑의 경사만은 느낄 수 있다. 매 순간 가장 가파르게 내려가는 방향으로 한 걸음씩 내딛으면 결국 골짜기(최솟값)에 도달할 가능성이 높다. 그래디언트 $\nabla f(x)$는 $f$가 가장 빠르게 증가하는 방향을 가리키므로, 그 반대 방향 $-\nabla f(x)$가 바로 "가장 가파른 내리막"이다. 학습률 $\eta$는 보폭의 크기이며, 너무 크면 골짜기를 넘어뛰어 반대편으로 튕겨 나가고(발산), 너무 작으면 한없이 느리게 내려간다. ## 성질 - $f$가 볼록함수(convex function)이고 $\eta$가 적절히 작으면, $x_k$는 전역 최솟값으로 수렴한다. - $f$가 볼록하지 않으면 지역 최솟값이나 안장점(saddle point, $\nabla f = 0$이지만 최솟값도 최댓값도 아닌 점)에 갇힐 수 있다. - 정지 조건은 보통 $\lVert \nabla f(x_k) \rVert$가 미리 정한 허용오차보다 작아지는 순간이다. - 학습률이 너무 크면 반복값이 발산하거나 진동하고, 너무 작으면 수렴 속도가 매우 느려진다. ## 예시 $f(x) = (x-3)^2$의 최솟값을 경사하강법으로 근사해 보자. $f'(x) = 2(x-3)$이고, $x_0 = 0$, $\eta = 0.1$로 시작한다. - $x_1 = x_0 - 0.1 \cdot f'(x_0) = 0 - 0.1 \cdot(-6) = 0.6$ - $x_2 = x_1 - 0.1 \cdot f'(x_1) = 0.6 - 0.1 \cdot(-4.8) = 1.08$ - $x_3 = 1.08 - 0.1 \cdot(2(1.08-3)) = 1.08 + 0.384 = 1.464$ 반복할수록 $x_k$는 실제 최솟값인 $x=3$에 점점 가까워진다. 그래프: y=(x-3)^2 (정의역 -2~8) ## 🌍 실생활 예시 딥러닝 모델(신경망)을 학습시킬 때, 모델의 예측과 실제 정답의 차이를 나타내는 손실 함수(loss function)를 최소화해야 한다. 이때 손실 함수의 변수는 모델이 가진 수백만 개의 가중치(weight)이며, 역전파(backpropagation)로 각 가중치에 대한 그래디언트를 계산한 뒤 경사하강법으로 가중치를 조금씩 갱신한다. 사진 분류기, 음성 인식기, 챗봇 등 대부분의 딥러닝 모델이 이 방식으로 학습된다. ## ⚠️ 흔한 실수 - **잘못된 생각**: 학습률 $\eta$는 클수록 더 빨리 수렴한다. → **왜 틀렸는지**: $\eta$가 너무 크면 최솟값을 지나쳐 반대편으로 넘어가는 진동이 생기고, 심하면 $x_k$가 점점 커지며 발산한다. 적절한 크기의 $\eta$를 골라야 안정적으로 수렴한다. - **잘못된 생각**: 경사하강법은 항상 전역 최솟값을 찾아준다. → **왜 틀렸는지**: $f$가 볼록하지 않으면 지형에 여러 골짜기가 있을 수 있고, 출발점에 따라 알고리즘은 전역 최솟값이 아닌 근처의 지역 최솟값에서 멈출 수 있다. - **잘못된 생각**: $\nabla f(x) = 0$이면 그 지점은 무조건 최솟값이다. → **왜 틀렸는지**: 그래디언트가 0인 점은 극댓값이거나 안장점일 수도 있다. 최솟값인지 확인하려면 이계도함수(헤시안 행렬)의 부호를 추가로 살펴야 한다. ## 확인 문제 1. $f(x) = x^2 - 4x + 6$에서 $x_0 = 0$, $\eta = 0.1$로 두 번 반복하여 $x_2$를 구하고, 반복을 계속하면 어떤 값으로 수렴할지 $f'(x)=0$을 풀어 확인하라. 2. $f(x) = (x-1)^2$에서 $\eta = 1.2$로 경사하강법을 두 번 반복하면 $x_k$가 오히려 출발점보다 최솟값에서 멀어짐을 계산으로 보여라. 왜 이런 일이 생기는지 설명하라. 3. $f(x,y) = x^2 + y^2$의 그래디언트 $\nabla f(x,y)$를 구하고, 이 함수의 최솟값이 왜 원점 $(0,0)$인지 설명하라. 정답 보기: 1. $f'(x) = 2x-4$. $x_1 = 0 - 0.1(-4) = 0.4$, $x_2 = 0.4 - 0.1(2\cdot0.4-4) = 0.4 - 0.1(-3.2) = 0.72$. $f'(x)=0$을 풀면 $x=2$이므로, 반복할수록 $x_k$는 2로 수렴한다. 2. $f'(x) = 2(x-1)$, $x_0=0$이라 하면 $x_1 = 0 - 1.2\cdot 2(0-1) = 0+2.4 = 2.4$. $x_2 = 2.4 - 1.2\cdot2(2.4-1) = 2.4 - 3.36 = -0.96$. 최솟값 $x=1$에서 점점 멀어지며 진동·발산한다. $\eta$가 너무 커서 한 걸음에 골짜기를 크게 지나쳐버리기 때문이다. 3. $\nabla f(x,y) = (2x, 2y)$. 이는 $(0,0)$에서만 $(0,0)$이 되고, $f(x,y)=x^2+y^2 \geq 0$이며 등호는 $x=y=0$일 때만 성립하므로 원점이 전역 최솟값이다. ## 관련 개념 - 도함수 — 그래디언트를 계산하는 데 필요한 기본 도구 - 벡터 — 다변수 함수에서 그래디언트를 벡터로 표현 - 함수의 극한 — 수렴 개념의 기초 - 로지스틱 회귀와 시그모이드 함수 — 경사하강법으로 학습되는 대표적 모델 - 최소제곱법 — 손실 함수를 최소화한다는 점에서 경사하강법과 목적이 유사 --- 관련 개념: - 도함수 (/wiki/math/%EB%8F%84%ED%95%A8%EC%88%98) - 벡터 (/wiki/math/%EB%B2%A1%ED%84%B0) - 함수의 극한 (/wiki/math/%ED%95%A8%EC%88%98%EC%9D%98_%EA%B7%B9%ED%95%9C) - 로지스틱 회귀와 시그모이드 함수 (/wiki/math/%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1_%ED%9A%8C%EA%B7%80%EC%99%80_%EC%8B%9C%EA%B7%B8%EB%AA%A8%EC%9D%B4%EB%93%9C_%ED%95%A8%EC%88%98) - 최소제곱법 (/wiki/math/%EC%B5%9C%EC%86%8C%EC%A0%9C%EA%B3%B1%EB%B2%95)