검색
← 모듈 로드맵

최적화 기초: 경사 하강법 · 볼록성 · 라그랑주 승수

강의 · 준전문가 · KAITABASE 정리

경사 하강과 학습률 · 볼록성 · 안장점 · SGD와 미니배치 · 뉴턴법 · 라그랑주 승수를 숫자로 익히는 최적화 기초

먼저 알아야 할 것

기울기 · 경사 하강헤세 행렬 · 고유값평균 · 표준편차

다루는 내용

학습을 수학적으로 보면 최적화입니다. 이차 함수로 학습률에 따른 수렴 · 진동 · 발산과 수렴 조건 η < 2/곡률을 확인하고, 볼록 함수의 정의 · 젠센 부등식 · 지역=전역 최솟값 성질과 볼록하지 않은 함수의 여러 골짜기 · 안장점을 비교합니다. 미니배치 크기와 기울기 잡음의 관계를 실험으로 보이고, 뉴턴법과 라그랑주 승수 · KKT · 정규화와의 연결까지 다룹니다.

해설

최적화 기초: 경사 하강법 · 볼록성 · 라그랑주 승수

머신러닝의 "학습"은 수학적으로는 최적화, 즉 손실 함수를 가장 작게 만드는 파라미터 찾기입니다. 이 수업은 경사 하강법이 학습률에 따라 어떻게 수렴 · 진동 · 발산하는지, 볼록 함수에서는 왜 안심할 수 있고 신경망처럼 볼록하지 않은 함수에서는 무엇을 조심해야 하는지, 확률적 경사 하강(SGD)과 미니배치가 왜 쓰이는지, 제약이 있을 때 라그랑주 승수로 푸는 법을 작은 숫자로 계산합니다.

항목내용
참고 자료Dive into Deep Learning 12.2절 'Convexity' · d2l.ai/chapter_optimization/convexity.html, 같은 책 12장의 경사 하강 · SGD · 미니배치 절
트랙 · 수준수학 · 중급
이 수업의 범위최적화 문제의 꼴, 경사 하강과 학습률(수렴 조건), 볼록 집합 · 볼록 함수, 젠센 부등식, 지역 최솟값 = 전역 최솟값, 2차 미분 판정, 볼록하지 않은 함수 · 안장점, 확률적 경사 하강 · 미니배치 · 에포크, 뉴턴법, 등식 제약과 라그랑주 승수, 벌점 · 투영
먼저 알면 좋은 것미분 최소한의 기울기 · 헤세 행렬, 선형대수 2의 고유값

들어가기 전에

한눈에 보기

  • 경사 하강법에서 학습률이 너무 작으면 느리고, 너무 크면 진동 · 발산한다는 것을 숫자로 확인합니다.
  • 볼록 함수는 지역 최솟값이 곧 전역 최솟값이라 "내려가기만 하면 된다"는 것을 압니다.
  • 신경망 손실처럼 볼록하지 않은 함수에서는 시작점에 따라 다른 골짜기에 빠질 수 있음을 봅니다.
  • SGD · 미니배치가 기울기를 "싸고 시끄럽게" 어림하는 방법이며, 배치 크기와 잡음의 관계를 압니다.
  • 제약 조건이 있는 최적화를 라그랑주 승수로 풀고, 정규화 · SVM과의 연결을 압니다.

1. 최적화 문제의 꼴

θ∗=arg⁡min⁡θL(θ),L(θ)=1n∑i=1nℓ(fθ(xi),yi)\boldsymbol{\theta}^* = \arg\min_{\boldsymbol{\theta}} L(\boldsymbol{\theta}), \qquad L(\boldsymbol{\theta}) = \frac{1}{n}\sum_{i=1}^{n} \ell(f_{\boldsymbol{\theta}}(\mathbf{x}_i), y_i)
기호뜻
θ\boldsymbol{\theta}파라미터 벡터
LL전체 손실 — 예제별 손실 ℓ\ell의 평균
arg⁡min⁡\arg\min값을 가장 작게 만드는 "입력"

왜 "평균"인가: 손실이 예제별 손실의 평균이라는 구조 덕분에, 일부 예제만 뽑아 평균을 내도 전체 기울기를 어림할 수 있습니다. 이것이 5절의 SGD를 가능하게 합니다. 단, 최적화와 학습은 목표가 조금 다릅니다. 최적화는 학습 데이터의 손실을 줄이는 것이 목표지만, 학습은 새 데이터에서 잘 맞는 것이 목표입니다. 이 차이는 모델 평가와 과적합에서 다룹니다.

2. 경사 하강법과 학습률

직관(해설용 비유): 안개 낀 산에서 골짜기로 내려가려면, 발밑의 경사를 느끼고 내리막 쪽으로 한 걸음씩 갑니다. 보폭(학습률)이 너무 작으면 해가 지도록 못 내려가고, 너무 크면 골짜기를 건너뛰어 맞은편 비탈로 갔다가 다시 넘어오기를 반복합니다.

xt+1=xt−η f′(xt)x_{t+1} = x_t - \eta\, f'(x_t)

숫자로 해 보기(해설용, 파이썬으로 실행): f(x)=(x−3)2f(x) = (x - 3)^2, f′(x)=2(x−3)f'(x) = 2(x - 3), 시작 x0=0x_0 = 0. 최솟값은 x=3x = 3입니다.

학습률 η\etax1,x2,x3,x4,x5x_1, x_2, x_3, x_4, x_5결과
0.10.6, 1.08, 1.464, 1.771, 2.017천천히 수렴
0.53, 3, 3, 3, 3한 번에 도착
1.06, 0, 6, 0, 6영원히 진동
1.16.6, −1.32, 8.18, −3.22, 10.47발산

왜 이런 일이 생기나: 이 함수에서 한 걸음은 xt+1−3=(1−2η)(xt−3)x_{t+1} - 3 = (1 - 2\eta)(x_t - 3)입니다. 최솟값까지의 거리에 매번 (1−2η)(1 - 2\eta)를 곱하는 셈이라

  • ∣1−2η∣<1|1 - 2\eta| < 1, 즉 0<η<10 < \eta < 1이면 거리가 줄어 수렴하고,
  • η=0.5\eta = 0.5이면 00을 곱해 한 번에 도착하고,
  • η=1\eta = 1이면 −1-1을 곱해 진동, η>1\eta > 1이면 거리가 커져 발산합니다.

일반적으로 곡률(2차 미분, 다차원에서는 헤세 행렬의 가장 큰 고유값)이 aa인 이차 함수에서 경사 하강이 수렴하려면 η<2/a\eta < 2/a여야 합니다. 방향마다 곡률이 다르면 가장 가파른 방향이 학습률의 상한을 정하고, 완만한 방향은 그 학습률로는 느리게 움직입니다. 이 "곡률 차이" 문제를 모멘텀 · Adam이 줄여 줍니다(옵티마이저와 학습률 스케줄).

3. 볼록성: 내려가기만 하면 되는 함수

직관: 그릇처럼 생긴 함수는 어디서 출발하든 내려가면 바닥 하나에 닿습니다. 이런 함수가 볼록 함수(convex function)입니다. 그래프 위 아무 두 점을 이은 선분이 항상 그래프 위쪽(또는 위)에 놓입니다.

f(λx+(1−λ)y)≤λf(x)+(1−λ)f(y),0≤λ≤1f(\lambda x + (1 - \lambda) y) \le \lambda f(x) + (1 - \lambda) f(y), \qquad 0 \le \lambda \le 1
기호뜻
λx+(1−λ)y\lambda x + (1-\lambda) yxx와 yy 사이의 한 점
왼쪽그 점에서의 함수값 (그래프)
오른쪽두 끝점을 이은 선분의 높이

숫자로 해 보기(해설용): f(x)=x2f(x) = x^2, x=−1x = -1, y=3y = 3, λ=0.5\lambda = 0.5이면 가운데 점은 11, f(1)=1f(1) = 1이고 선분 높이는 (1+9)/2=5(1 + 9)/2 = 5입니다. 1≤51 \le 5 ✓. 이 부등식을 확률로 일반화한 것이 젠센 부등식(Jensen's inequality) f(E[X])≤E[f(X)]f(\mathbb{E}[X]) \le \mathbb{E}[f(X)]이고, 변분 오토인코더의 ELBO 유도에 쓰입니다.

볼록 함수의 좋은 성질

  1. 지역 최솟값 = 전역 최솟값. 주변보다 낮은 곳을 찾으면 그곳이 전체에서 가장 낮습니다.
  2. 2차 미분 판정: 한 변수면 f′′(x)≥0f''(x) \ge 0, 여러 변수면 헤세 행렬이 양의 준정부호(고유값이 모두 0 이상)이면 볼록입니다.
  3. 볼록 함수의 합 · 양수배도 볼록이라, "볼록 손실 + L2 정규화"도 볼록입니다.
함수볼록?머신러닝에서
x2x^2, ∥w∥2\Vert\mathbf{w}\Vert^2예제곱 오차, L2 정규화
∣x∣\lvert x \rvert, ∥w∥1\Vert\mathbf{w}\Vert_1예 (꺾인 점 있음)L1 정규화
exe^x, −ln⁡x-\ln x예로그 손실의 재료
선형 회귀의 MSE예정규방정식으로 바로 풀림
로지스틱 회귀의 로그 손실예경사 하강이 전역 최솟값으로 감
신경망의 손실아니요여러 골짜기 · 안장점

4. 볼록하지 않은 함수: 골짜기가 여럿

숫자로 해 보기(해설용, 파이썬으로 실행): f(x)=x4−3x2+xf(x) = x^4 - 3x^2 + x에 학습률 0.01로 200걸음 경사 하강을 합니다.

시작점도착점ff
−2.0-2.0−1.301-1.301−3.514-3.514 (전역 최솟값)
2.02.01.1311.131−1.070-1.070 (지역 최솟값)
0.50.51.1311.131−1.070-1.070 (지역 최솟값)

같은 알고리즘이 시작점에 따라 다른 골짜기에 멈춥니다. 오른쪽 골짜기에서는 기울기가 0이라 더 나아갈 이유가 없습니다.

안장점(saddle point): f(x,y)=x2−y2f(x, y) = x^2 - y^2의 원점은 기울기가 0이지만 xx 방향으로는 바닥, yy 방향으로는 꼭대기입니다. 헤세 행렬 diag(2,−2)\mathrm{diag}(2, -2)의 고유값 부호가 섞여 있으면 안장점입니다. D2L 12.1절은 차원이 높으면 기울기 0인 점에서 헤세 고유값 중 일부가 음수일 가능성이 매우 커서, 안장점이 지역 최솟값보다 더 흔하다고 설명합니다. SGD의 잡음과 모멘텀이 이런 곳을 빠져나오는 데 도움이 됩니다.

그런데도 신경망 학습이 되는 이유: 볼록하지 않아 전역 최솟값을 보장할 수는 없지만, 실무에서는 좋은 초기화(초기화 · 정규화 · 규제), 적절한 학습률 스케줄, 충분히 큰 모델로 "충분히 좋은" 지점을 꾸준히 찾습니다. 목표는 가장 낮은 점이 아니라 새 데이터에서 잘 맞는 점입니다.

5. 확률적 경사 하강과 미니배치

직관(해설용 비유): 전교생 1만 명의 평균 키를 알고 싶을 때 매번 모두를 재는 대신 무작위로 100명만 재도 꽤 정확합니다. 손실의 기울기도 예제별 기울기의 평균이므로, 일부만 뽑아 평균을 내면 "싸지만 약간 시끄러운" 어림값이 됩니다.

gB=1∣B∣∑i∈B∇θℓi(θ),E[gB]=∇L(θ),θ←θ−η gB\mathbf{g}_B = \frac{1}{|B|}\sum_{i \in B} \nabla_{\boldsymbol{\theta}} \ell_i(\boldsymbol{\theta}), \qquad \mathbb{E}[\mathbf{g}_B] = \nabla L(\boldsymbol{\theta}), \qquad \boldsymbol{\theta} \leftarrow \boldsymbol{\theta} - \eta\, \mathbf{g}_B
용어뜻
배치 경사 하강매 걸음 전체 데이터의 기울기 — 정확하지만 비쌈
확률적 경사 하강(SGD)매 걸음 예제 1개 — 싸지만 잡음이 큼
미니배치 SGD매 걸음 예제 BB개(보통 수십~수천) — 실무 표준
에포크(epoch)학습 데이터를 한 바퀴 다 쓰는 단위
반복(iteration, step)파라미터를 한 번 갱신하는 단위

숫자로 해 보기(해설용, 파이썬으로 실행): 예제 1,000개인 선형 회귀에서 w=0w = 0일 때 전체 기울기는 −5.856-5.856입니다. 미니배치 크기별로 2,000번 뽑아 기울기 어림값의 평균과 흔들림(표준편차)을 쟀습니다(무작위로 만든 데이터에서 한 번 잰 예시값이라, 데이터 · 시드에 따라 소수점 아래 값은 달라집니다).

배치 크기 BB어림값 평균표준편차
1−5.478.20
10−5.872.95
100−5.830.89

평균은 모두 전체 기울기 근처(편향 없음)이고, 흔들림은 배치를 10배 키울 때마다 대략 1/10≈0.321/\sqrt{10} \approx 0.32배로 줄었습니다. 배치를 키우면 정확해지지만 계산도 그만큼 늘어나므로, GPU 메모리와 속도에 맞춰 고릅니다.

계산해 보기: 학습 데이터 50,000개, 배치 128이면 한 에포크는 ⌈50000/128⌉=391\lceil 50000 / 128 \rceil = 391걸음입니다.

왜 미니배치가 표준인가: ① 전체 기울기를 기다리지 않고 자주 갱신해 같은 시간에 더 멀리 갑니다. ② GPU는 수십~수백 개 예제를 한꺼번에 계산할 때 효율이 좋습니다. ③ 적당한 잡음이 안장점 · 날카로운 골짜기를 피하는 데 도움이 되기도 합니다.

mermaid
flowchart LR
  A[학습 데이터 섞기] --> B[미니배치 B개 뽑기]
  B --> C[순전파: 예측 · 손실]
  C --> D[역전파: 기울기 g_B]
  D --> E[θ ← θ − η g_B]
  E --> F{에포크 끝?}
  F -- 아니요 --> B
  F -- 예 --> G[검증 손실 확인 · 학습률 조정]
  G --> A

6. 뉴턴법: 곡률까지 쓰기

직관: 경사 하강은 기울기(1차 정보)만 씁니다. 뉴턴법(Newton's method)은 곡률(2차 정보)까지 써서 "이 지점에서 함수를 포물선으로 어림했을 때의 바닥"으로 단숨에 갑니다.

xt+1=xt−f′(xt)f′′(xt),다차원: θ←θ−H−1∇Lx_{t+1} = x_t - \frac{f'(x_t)}{f''(x_t)}, \qquad \text{다차원: } \boldsymbol{\theta} \leftarrow \boldsymbol{\theta} - \mathbf{H}^{-1}\nabla L

숫자로 해 보기(해설용): f(x)=(x−3)2f(x) = (x - 3)^2에서 x0=0x_0 = 0이면 f′=−6f' = -6, f′′=2f'' = 2, x1=0−(−6)/2=3x_1 = 0 - (-6)/2 = 3 — 이차 함수는 한 번에 끝납니다. 하지만 파라미터가 dd개면 헤세 행렬이 d×dd \times d라 딥러닝(dd가 수백만 이상)에서는 그대로 쓰기 어렵습니다. Adam 같은 방법은 곡률을 값싸게 어림하는 방향으로 이 아이디어를 빌려 씁니다.

7. 제약이 있는 최적화: 라그랑주 승수

직관(해설용 비유): 산에서 가장 낮은 곳을 찾되 "정해진 등산로 위에서만" 움직여야 한다고 합시다. 등산로 위의 가장 낮은 점에서는 등산로가 그 점의 등고선에 딱 스치듯 닿습니다. 이때 함수의 기울기와 제약의 기울기가 같은 방향(평행)이 됩니다.

min⁡xf(x)  s.t.  g(x)=c⇒∇f(x)=λ∇g(x),  g(x)=c\min_{\mathbf{x}} f(\mathbf{x}) \ \ \text{s.t.}\ \ g(\mathbf{x}) = c \quad\Rightarrow\quad \nabla f(\mathbf{x}) = \lambda \nabla g(\mathbf{x}),\ \ g(\mathbf{x}) = c

라그랑주 함수 L(x,λ)=f(x)−λ(g(x)−c)\mathcal{L}(\mathbf{x}, \lambda) = f(\mathbf{x}) - \lambda(g(\mathbf{x}) - c)의 모든 편미분을 0으로 놓은 것과 같습니다.

기호뜻
g(x)=cg(\mathbf{x}) = c등식 제약 (등산로)
λ\lambda라그랑주 승수 — 두 기울기의 비율, 제약을 조금 풀 때 최솟값이 바뀌는 비율

숫자로 해 보기(해설용): x+y=1x + y = 1 위에서 x2+y2x^2 + y^2(원점까지 거리의 제곱)을 최소로 합니다.

  1. ∇f=(2x,2y)\nabla f = (2x, 2y), ∇g=(1,1)\nabla g = (1, 1)
  2. 2x=λ2x = \lambda, 2y=λ2y = \lambda → x=yx = y
  3. 제약 x+y=1x + y = 1 → x=y=0.5x = y = 0.5, λ=1\lambda = 1
  4. 최솟값 0.52+0.52=0.50.5^2 + 0.5^2 = 0.5

검산: 제약 위의 다른 점 (1,0)(1, 0)은 11, (0.3,0.7)(0.3, 0.7)은 0.580.58로 모두 0.5보다 큽니다.

머신러닝과의 연결

  • 정규화 = 제약: "∥w∥2≤r\|\mathbf{w}\|^2 \le r을 지키며 손실 최소화"는 라그랑주 승수를 통해 "손실 +λ∥w∥2+ \lambda\|\mathbf{w}\|^2 최소화"와 연결됩니다. 릿지 회귀 · 가중치 감쇠의 다른 얼굴입니다.
  • 부등식 제약과 KKT 조건: 제약이 g(x)≤cg(\mathbf{x}) \le c이면 카루시-쿤-터커(KKT) 조건으로 일반화합니다. 서포트 벡터 머신의 쌍대 문제와 서포트 벡터가 여기서 나옵니다.
  • 최대 엔트로피: "확률의 합 = 1" 제약 아래 엔트로피를 최대로 하면 균등 분포가 나오는 것도 같은 방법으로 보입니다.

D2L 12.2절은 제약을 다루는 세 방법으로 라그랑주 함수, 벌점(penalty), 투영(projection)을 소개합니다. 벌점은 제약 위반에 비용을 매겨 손실에 더하는 방식, 투영은 한 걸음 간 뒤 허용 영역 안의 가장 가까운 점으로 되돌리는 방식입니다(예: 기울기 클리핑).

연습 문제

1. f(x)=2x2f(x) = 2x^2에서 경사 하강이 수렴하는 학습률 범위는?

풀이: f′′=4f'' = 4이므로 xt+1=(1−4η)xtx_{t+1} = (1 - 4\eta)x_t, ∣1−4η∣<1|1 - 4\eta| < 1 → 0<η<0.50 < \eta < 0.5입니다. η=0.25\eta = 0.25이면 한 번에 도착합니다.

2. f(x)=x3f(x) = x^3은 볼록인가요?

풀이: f′′(x)=6xf''(x) = 6x는 x<0x < 0에서 음수이므로 전체 실수에서 볼록이 아닙니다(x≥0x \ge 0에서만 볼록).

3. 학습 데이터 12,000개, 배치 크기 64로 10 에포크 학습하면 파라미터 갱신은 몇 번인가요?

풀이: 한 에포크 ⌈12000/64⌉=188\lceil 12000/64 \rceil = 188걸음(마지막 배치는 32개), 10 에포크면 1,880번입니다.

4. x+2y=5x + 2y = 5 위에서 x2+y2x^2 + y^2의 최솟값은?

풀이: (2x,2y)=λ(1,2)(2x, 2y) = \lambda(1, 2) → y=2xy = 2x, x+4x=5x + 4x = 5 → x=1x = 1, y=2y = 2, 최솟값 55, λ=2\lambda = 2입니다.

스스로 점검

  1. 학습 손실이 줄지 않고 계속 커지거나 nan이 나면 가장 먼저 의심할 것은?
    • 답: 학습률이 너무 큰 경우입니다. 2절처럼 곡률에 비해 걸음이 크면 진동하다 발산합니다. 학습률을 줄이거나 웜업을 써 봅니다.
  2. 로지스틱 회귀는 경사 하강으로 전역 최솟값을 찾을 수 있는데 신경망은 왜 보장이 없나요?
    • 답: 로지스틱 회귀의 손실은 볼록이라 지역 최솟값이 곧 전역 최솟값이지만, 신경망 손실은 볼록하지 않아 골짜기와 안장점이 여럿이기 때문입니다.
  3. 미니배치를 키우면 무엇이 좋아지고 무엇이 나빠지나요?
    • 답: 기울기 어림의 잡음이 줄어 걸음이 안정되지만, 한 걸음의 계산과 메모리가 늘고 한 에포크당 갱신 횟수가 줄어듭니다.

용어 정리

용어쉬운 뜻
최적화(optimization)함수를 가장 작게(크게) 만드는 입력 찾기
학습률(learning rate)경사 하강 한 걸음의 크기
수렴 · 진동 · 발산최솟값에 가까워짐 · 왔다 갔다 함 · 점점 멀어짐
볼록 함수(convex function)두 점을 이은 선분이 그래프 위에 있는 그릇 모양 함수
젠센 부등식(Jensen's inequality)볼록 함수에서 f(EX)≤Ef(X)f(\mathbb{E}X) \le \mathbb{E}f(X)
지역 · 전역 최솟값주변에서 가장 낮은 점 · 전체에서 가장 낮은 점
안장점(saddle point)기울기 0이지만 어떤 방향은 오르막, 어떤 방향은 내리막인 점
확률적 경사 하강(SGD)일부 예제의 기울기로 전체 기울기를 어림해 갱신
미니배치(mini-batch)한 번 갱신에 쓰는 예제 묶음
에포크(epoch)학습 데이터 한 바퀴
뉴턴법(Newton's method)곡률까지 써서 포물선의 바닥으로 가는 방법
라그랑주 승수(Lagrange multiplier)제약 최적화에서 두 기울기의 비율 λ\lambda
KKT 조건부등식 제약까지 다루는 최적 조건

더 깊이 보려면

D2L 12장 '최적화 알고리즘'은 최적화와 딥러닝의 관계, 볼록성(12.2절: 볼록 집합 · 볼록 함수 · 젠센 부등식, 지역 최솟값 = 전역 최솟값, 2차 미분 판정, 라그랑주 · 벌점 · 투영), 경사 하강, SGD, 미니배치 SGD, 모멘텀, Adagrad, RMSProp, Adadelta, Adam, 학습률 스케줄링을 차례로 다룹니다. 더 엄밀한 내용은 머신러닝을 위한 수학의 7장(Continuous Optimization)이 제약 최적화 · 라그랑주 쌍대 · 볼록 최적화를 정리합니다.

다음에 볼 것

라이선스

이 글은 원문 번역이 아니라 KAITABASE가 직접 쓴 해설이며, 숫자 예는 모두 설명용으로 만들고 파이썬으로 다시 계산해 확인했습니다. 참고 자료 D2L은 CC BY-SA 4.0으로 공개되어 있습니다.

출처

AI 원리부터 이해하기 · 수학 모듈

수학 모듈 학습

이 글은 수학 모듈의 학습 자료입니다. 전체 9개 자료 중 4번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 D2L(CC BY-SA 4.0)