미분과 경사하강 — 기계가 '배우는' 방식

2026-04-30

3편에서 학습의 목적을 손에 넣었습니다 — 손실을 최소로, 음의 로그가능도를 최소로 만들라는 것. 그런데 "최소로 만들라"는 목적과, "실제로 그 최소를 찾아가는" 방법은 전혀 다른 문제입니다. 손실 L(θ)L(\theta)를 가장 작게 하는 θ\theta를, 우리는 대체 어떻게 찾을까요.

답은 놀랄 만큼 단순한 발상입니다 — 깜깜한 산에서 가장 낮은 곳으로 내려가려면, 발밑에서 가장 가파르게 내려가는 방향으로 한 걸음씩 디디면 된다. 그 방향을 알려 주는 것이 미분입니다.

규칙 — 학습이란 손실을 최소화하는 것이고, 그 최소로 내려가는 방향을 미분이 알려 준다. 기계는 경사의 반대로 한 걸음씩 디디며 배운다.

이 편에서 그 '한 걸음'을 밑바닥부터 세웁니다.

미분 — 기울기, 그리고 극값의 신호

한 변수 함수 f(x)f(x)의 **미분(도함수)**은 그 점에서의 순간 변화율입니다. 아주 작은 변화 hh에 대한 변화량의 비를, hh를 0으로 보내며 잡습니다.

f(x)=limh0f(x+h)f(x)hf'(x) = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}

기하학적으로 이건 그 점에서 그래프에 그은 접선의 기울기예요. 기울기가 양수면 오르막, 음수면 내리막, 그리고 0이면 봉우리나 골짜기(극값)의 후보입니다. 여기서 최적화의 첫 단서가 나옵니다 — 최소를 찾고 싶다면 f(x)=0f'(x) = 0인 곳을 보라는 것.

간단한 문제라면 f(x)=0f'(x) = 0을 풀어 곧장 답을 얻을 수도 있습니다. 하지만 손실함수가 파라미터 수백만 개에 걸쳐 복잡하게 휘어 있으면, 그 방정식을 손으로 풀 길은 없어요. 그래서 방정식을 '푸는' 대신, 기울기를 나침반 삼아 한 걸음씩 내려가는 쪽을 택합니다. 그러려면 먼저 미분을 여러 변수로 확장해야 합니다.

그래디언트 — 여러 변수의 기울기

파라미터가 여럿이면(θ=(θ1,,θn)\theta = (\theta_1, \dots, \theta_n)), 나머지를 붙잡아 두고 한 변수로만 미분한 편미분 fθi\frac{\partial f}{\partial \theta_i}을 각 방향마다 잽니다. 이들을 벡터로 모은 것이 **그래디언트(gradient)**입니다.

f(θ)=(fθ1, fθ2, , fθn)\nabla f(\theta) = \left( \frac{\partial f}{\partial \theta_1},\ \frac{\partial f}{\partial \theta_2},\ \dots,\ \frac{\partial f}{\partial \theta_n} \right)

그래디언트는 1편에서 세운 벡터입니다 — 방향과 크기를 가진. 그리고 이 벡터에는 결정적인 성질이 하나 있어요. 그래디언트는 함수가 가장 가파르게 증가하는 방향을 가리킨다. 이건 그냥 외울 사실이 아니라, 앞 편들의 도구로 증명할 수 있습니다.

왜 그래디언트가 최급 방향인가 — 코시-슈바르츠로

어떤 단위 방향 u\mathbf{u}(u=1\|\mathbf{u}\| = 1)로 움직일 때 함수가 얼마나 빨리 변하는지를 방향도함수라 하고, 그 값은 그래디언트와 그 방향의 내적으로 나옵니다.

Duf=fuD_{\mathbf{u}} f = \nabla f \cdot \mathbf{u}

여기서 2편코시-슈바르츠 부등식을 그대로 불러옵니다. 내적은 두 노름의 곱을 넘지 못하죠.

Duf=fufu=fD_{\mathbf{u}} f = \nabla f \cdot \mathbf{u} \le \|\nabla f\|\,\|\mathbf{u}\| = \|\nabla f\|

그리고 등호(즉 변화율이 최대)는 두 벡터가 같은 방향일 때u\mathbf{u}f\nabla f와 나란할 때만 성립합니다. 다시 말해 그래디언트 방향으로 갈 때 함수가 가장 빨리 증가하고, 그 반대 방향(f-\nabla f)으로 갈 때 가장 빨리 감소합니다. 2편에서 코사인을 가둔 그 부등식이, 여기서는 "내려갈 방향"을 정확히 짚어 주는 거예요. 손실을 줄이고 싶다면 답은 명확합니다 — L-\nabla L 방향으로 가라.

규칙 회수 — 방향도함수는 그래디언트와 방향의 내적이고, 코시-슈바르츠가 그 최댓값을 그래디언트 방향으로 못 박는다. 그래서 가장 빨리 내려가는 길은 그래디언트의 반대다.

경사하강법 — 한 걸음의 규칙

이제 규칙을 식으로 씁니다. 손실 L(θ)L(\theta)를 줄이려면, 현재 위치에서 그래디언트의 반대로 조금 움직이면 됩니다. 이것이 **경사하강법(gradient descent)**입니다.

θt+1=θtηL(θt)\theta_{t+1} = \theta_t - \eta\,\nabla L(\theta_t)

  • L(θt)\nabla L(\theta_t): 지금 위치에서 손실이 가장 가파르게 증가하는 방향.
  • 앞의 마이너스: 그래서 반대로 — 가장 가파르게 감소하는 쪽으로.
  • η\eta (에타): 학습률(learning rate) — 한 걸음의 보폭.

이 한 줄을 반복하는 것이 거의 모든 AI 학습의 심장입니다. 신경망도, 선형회귀도, 트랜스포머도, 결국 이 업데이트를 수백만 번 도는 것이죠. 산 정상에서 눈을 감고, 발밑에서 가장 가파른 내리막을 더듬어 한 걸음, 또 한 걸음 — 그렇게 골짜기로 내려갑니다.

학습률의 딜레마

보폭 η\eta는 사소해 보이지만 학습의 성패를 가릅니다.

  • 너무 크면: 한 걸음이 골짜기를 건너뛰어 반대편 비탈로 튕겨 오릅니다. 진동하거나 아예 발산해 버려요.
  • 너무 작으면: 안전하지만 한없이 느립니다. 골짜기에 닿기 전에 계산 예산이 바닥나죠.

그래서 η\eta는 세심히 골라야 하고, 실전에선 처음엔 크게 뒀다가 점점 줄이는 스케줄을 씁니다. 학습률을 자동으로 조절하는 옵티마이저(Adam 등)도 결국 이 딜레마를 다루는 장치예요. 붙잡을 것은 — 방향은 그래디언트가 정하지만, 보폭은 우리가 정해야 하고, 그게 어렵다는 것.

볼록성과 국소최소 — 내려간 곳이 정말 바닥일까

경사하강은 "발밑에서 가장 낮은 쪽"으로만 갑니다. 그런데 거기가 전체에서 가장 낮은 곳이라는 보장은 없어요. 이걸 가르는 성질이 **볼록성(convexity)**입니다. 함수가 볼록하다는 건, 그래프 위 두 점을 이은 선분이 항상 그래프보다 위에 있다는 뜻이에요.

f(λx+(1λ)y)λf(x)+(1λ)f(y),0λ1f\bigl(\lambda x + (1-\lambda)y\bigr) \le \lambda f(x) + (1-\lambda) f(y), \qquad 0 \le \lambda \le 1

볼록함수는 골짜기가 하나뿐이라, 어떤 국소 최소든 곧 전역 최소입니다. 경사하강이 어디서 출발해도 진짜 바닥에 닿죠(선형회귀의 손실이 이렇습니다 — 5편에서 봅니다). 하지만 신경망의 손실은 비볼록이에요. 골짜기가 여럿이고, 능선과 안장점(한 방향은 오목, 다른 방향은 볼록해 그래디언트가 0이 되는 곳)이 널려 있습니다. 그래서 경사하강이 진짜 최저점을 찾는다는 보장은 원리적으로 없습니다.

그런데도 딥러닝이 잘 되는 건 흥미로운 반전입니다 — 고차원에서는 나쁜 국소최소보다 안장점이 훨씬 흔하고, 다음에 볼 SGD의 잡음이 그 안장점을 흔들어 빠져나오게 돕거든요. 이론적 보장과 실전의 성공 사이의 이 간극은, 이 시리즈가 여러 번 마주칠 주제입니다.

규칙 회수 — 볼록함수는 국소최소가 곧 전역최소라 경사하강이 진짜 바닥에 닿는다. 신경망은 비볼록이라 그 보장이 없지만, 고차원의 지형과 잡음 덕에 실전에서는 잘 내려간다.

확률적 경사하강 — 전부 안 보고 한 걸음

한 걸음마다 그래디언트를 정확히 계산하려면, 데이터 전체에 대한 손실의 기울기를 매번 구해야 합니다. 데이터가 수백만 개면 한 걸음이 너무 비싸요. 그래서 미니배치 — 데이터의 작은 무작위 표본 BB — 로 그래디언트를 근사합니다. 이것이 **확률적 경사하강(SGD)**입니다.

L(θ)1BiBi(θ)\nabla L(\theta) \approx \frac{1}{|B|} \sum_{i \in B} \nabla \ell_i(\theta)

이 근사가 정당한 이유는 3편기댓값에 있습니다. 미니배치를 무작위로 고르면, 미니배치 그래디언트의 기댓값이 전체 그래디언트와 같아요(편향 없는 추정량입니다).

EB ⁣[1BiBi]=L\mathbb{E}_B\!\left[\frac{1}{|B|}\sum_{i \in B} \nabla \ell_i\right] = \nabla L

즉 매 걸음은 부정확하지만, 평균적으로는 옳은 방향을 가리킵니다. 게다가 이 부정확함 — 그래디언트에 섞인 잡음 — 은 공짜 이득이 있어요. 위에서 말한 안장점이나 얕은 국소최소를 흔들어 탈출을 돕고, 종종 더 잘 일반화되는 해로 이끕니다. 3편의 확률이 4편의 최적화 속으로 이렇게 스며듭니다.

규칙 회수 — 미니배치 그래디언트는 전체의 편향 없는 추정(기댓값이 같다)이라, 싸면서도 평균적으로 옳다. 그 잡음이 오히려 나쁜 지점을 탈출하게 돕는다.

연쇄법칙 — 역전파의 씨앗

마지막으로, 신경망으로 가는 다리를 놓습니다. 1편에서 신경망은 선형변환을 합성한 것이라 했죠(W2(W1x)W_2(W_1\mathbf{x})처럼, 사이에 비선형을 끼워). 그러면 이 합성함수의 그래디언트는 어떻게 구할까요. 답은 미적분의 연쇄법칙입니다. 합성함수의 미분은 바깥과 안의 미분을 곱한 것이에요.

ddxf(g(x))=f(g(x))g(x)\frac{d}{dx} f\bigl(g(x)\bigr) = f'\bigl(g(x)\bigr)\cdot g'(x)

신경망은 함수를 여러 겹 합성한 것이므로, 그 그래디언트는 각 층의 미분을 출력에서 입력 쪽으로 거슬러 곱해 나가며 구합니다. 이것이 바로 **역전파(backpropagation)**예요 — 대단한 새 원리가 아니라, 연쇄법칙을 층층이 적용해 그래디언트를 효율적으로 모으는 것입니다. 오늘 세운 경사하강이 "어느 방향으로 갈까"라면, 역전파는 "그 방향(그래디언트)을 어떻게 계산할까"의 답이죠. 이 둘이 만나는 곳이 6편, 신경망 편입니다.

왜 이것이 AI의 바닥인가 — 조망

  • 모든 학습이 경사하강이다. 선형회귀부터 거대 언어 모델까지, 파라미터를 θt+1=θtηL\theta_{t+1} = \theta_t - \eta\nabla L로 갱신하는 이 골격을 공유합니다. 규모와 손실만 다를 뿐이죠.
  • 역전파는 연쇄법칙이다. 딥러닝 프레임워크의 자동미분은 오늘의 연쇄법칙을 기계적으로 적용하는 것입니다.
  • 옵티마이저는 이 식의 변주다. 모멘텀·Adam·RMSProp… 모두 "방향은 그래디언트, 보폭은 어떻게"라는 오늘의 틀 위에서 학습률과 관성을 다듬은 것입니다.

정직하게 — 내려간다는 것의 한계

강력한 메커니즘이지만, 경사하강은 만능이 아닙니다.

  • 미분 가능해야 한다 — 대체로는. 경사하강은 그래디언트가 있어야 도는데, 실전의 함수엔 꺾인 점이 있습니다(예: ReLU는 0에서 미분 불가). 다행히 이런 점은 드물어 하위 그래디언트로 우회하지만, 원리적으로는 매끄러움을 가정하고 있다는 걸 알아야 합니다.
  • 학습률 튜닝은 여전히 고통이다. 방향은 수학이 정하지만 보폭은 실험이 정합니다. 잘못 고르면 발산하거나 기어가고, 최적값은 문제마다 달라요. 자동 옵티마이저가 많이 덜어 줬지만 완전히 없애진 못했습니다.
  • 그래디언트는 소실되고 폭발한다. 층이 깊으면 연쇄법칙의 곱이 길어져, 작은 수를 계속 곱하면 그래디언트가 0으로 사라지고(학습이 멈춤), 큰 수를 곱하면 폭발합니다. 이 문제가 딥러닝의 오랜 난제였고, 여러 기법(정규화·잔차 연결·게이팅)이 이를 달래려 나왔습니다.
  • 볼록성은 규칙이 아니라 예외다. 우리가 최적화하는 함수는 대개 비볼록이라, 경사하강이 도달한 곳이 전역 최소라는 보장은 없습니다. "잘 되더라"는 경험이지 정리가 아니에요 — 이 간극을 잊으면 과신하게 됩니다.

이 넷을 알고 쓰면, 경사하강은 기계가 배우는 가장 단단하고 보편적인 방법이 됩니다.

정리 — 한 걸음씩 내려가기

  • 미분: 순간 변화율이자 접선 기울기. 기울기 0은 극값의 신호.
  • 그래디언트: 편미분을 모은 벡터. 방향도함수 = 그래디언트와의 내적, 코시-슈바르츠가 그래디언트를 최급증가 방향으로 못 박는다.
  • 경사하강: θt+1=θtηL\theta_{t+1} = \theta_t - \eta\nabla L. 방향은 그래디언트의 반대, 보폭은 학습률.
  • 학습률: 크면 발산, 작으면 느림. 방향은 수학이, 보폭은 우리가 정한다.
  • 볼록성: 볼록이면 국소=전역. 신경망은 비볼록이라 보장은 없지만 실전에선 내려간다.
  • SGD: 미니배치로 그래디언트를 근사. 기댓값이 같아 편향 없고, 그 잡음이 탈출을 돕는다.
  • 연쇄법칙: 합성함수의 미분은 곱. 층층이 거슬러 곱하면 역전파가 된다.
  • 정직하게: 미분가능성 가정, 학습률 튜닝, 그래디언트 소실·폭발, 볼록성은 예외라는 것.

다음 편에서는 이 모든 도구 — 벡터·거리·확률·경사하강 — 를 처음으로 하나의 완결된 학습에 합칩니다. 선형회귀, 가장 단순한 학습을 손실 정의부터 정확해(closed-form)와 경사하강 두 길로, 끝까지 유도합니다.

핵심 한 줄 — 기계는 손실이라는 산을 경사의 반대로 한 걸음씩 내려가며 배운다. 그 방향은 그래디언트가 정하고(코시-슈바르츠가 그것이 최급 방향임을 보장하며), 보폭은 우리가 정하고, 그래디언트 자체는 연쇄법칙으로 층을 거슬러 계산된다.