devlog.

경사 하강법과 뉴럴 네트워크 최적화: 머신러닝 미적분 3장

·13분 읽기·

2장에서는 최적화, 편미분, 그래디언트를 배웠습니다. 이번 글에서는 그 그래디언트를 실제로 활용해 반복적으로 최솟값을 찾아가는 경사 하강법(Gradient Descent) 과, 이를 뉴럴 네트워크에 적용하는 역전파(Backpropagation), 그리고 대안적 최적화 방법인 뉴턴 방법(Newton's Method) 을 다룹니다.

이 글은 DeepLearning.AI의 Mathematics for Machine Learning and Data Science — Calculus 3주차 내용을 기반으로 정리했습니다.

이번 글에서 배우는 것#

  • 경사 하강법 (1변수) — 학습률과 업데이트 규칙
  • 경사 하강법 (2변수) — 그래디언트 벡터로 이동
  • 퍼셉트론 회귀 — MSE 손실과 경사 하강법
  • 퍼셉트론 분류 — 시그모이드 함수와 로그 손실
  • 역전파 (Backpropagation) — 연쇄법칙으로 편미분 계산
  • 뉴턴 방법 — 2차 도함수를 이용한 빠른 최적화
  • 헤시안 (Hessian) — 다변수 함수의 2차 도함수 행렬

경사 하강법 — 1변수#

핵심 아이디어#

2장에서 최솟값을 찾을 때 도함수 = 0을 풀었습니다. 하지만 복잡한 함수에서는 방정식을 직접 풀기가 어렵습니다. 경사 하강법 은 현재 위치의 기울기(도함수)를 이용해 조금씩 이동하며 최솟값을 찾아가는 반복적 알고리즘입니다.

업데이트 규칙#

xnew=xoldαf(xold)x_{\text{new}} = x_{\text{old}} - \alpha \cdot f'(x_{\text{old}})

기호의미
xoldx_{\text{old}}현재 위치
α\alpha (알파)학습률 (learning rate)
f(xold)f'(x_{\text{old}})현재 위치의 기울기

원리:

  • 기울기가 양수 (오른쪽이 오르막) → 왼쪽으로 이동
  • 기울기가 음수 (왼쪽이 오르막) → 오른쪽으로 이동
  • 기울기가 클수록 큰 폭으로 이동, 작을수록 작은 폭으로 이동

학습률의 역할#

학습률 α\alpha 는 이동 보폭을 조절합니다.

학습률결과
너무 크면최솟값을 지나쳐 발산할 수 있음
너무 작으면수렴 속도가 매우 느려짐
적당하면안정적으로 최솟값에 수렴

학습률은 정해진 최적값이 없습니다. 실험을 통해 결정합니다.

경사 하강법의 한계#

경사 하강법은 기울기를 따라 이동하므로 전역 최솟값(Global Minimum) 대신 극솟값(Local Minimum) 에 빠질 수 있습니다.


경사 하강법 — 2변수#

변수가 2개인 함수 f(x,y)f(x, y) 에서는 그래디언트 벡터 방향의 반대로 이동합니다.

업데이트 규칙#

xnew=xoldαfxx_{\text{new}} = x_{\text{old}} - \alpha \cdot \frac{\partial f}{\partial x}

ynew=yoldαfyy_{\text{new}} = y_{\text{old}} - \alpha \cdot \frac{\partial f}{\partial y}

벡터 형태로:

[xy]new=[xy]oldαf\begin{bmatrix} x \\ y \end{bmatrix}_{\text{new}} = \begin{bmatrix} x \\ y \end{bmatrix}_{\text{old}} - \alpha \cdot \nabla f

선형 회귀에 적용 — 최소제곱법#

직선 y^=mx+b\hat{y} = mx + b 를 피팅할 때 MSE 손실 E(m,b)E(m, b) 를 경사 하강법으로 최소화합니다.

mnew=moldαEmm_{\text{new}} = m_{\text{old}} - \alpha \cdot \frac{\partial E}{\partial m}

bnew=boldαEbb_{\text{new}} = b_{\text{old}} - \alpha \cdot \frac{\partial E}{\partial b}

초기 (m,b)(m, b) 에서 시작해 반복하면 손실이 최소인 최적 파라미터로 수렴합니다.


뉴럴 네트워크 최적화#

퍼셉트론 — 회귀#

퍼셉트론 은 선형 회귀를 수행하는 단일 노드입니다.

y^=w1x1+w2x2+b\hat{y} = w_1 x_1 + w_2 x_2 + b

손실 함수 (MSE):

L(w,b)=12(y^y)2\mathcal{L}(w, b) = \frac{1}{2}(\hat{y} - y)^2

12\frac{1}{2}? 미분 시 나오는 계수 2를 상쇄해서 계산을 깔끔하게 만들기 위함입니다.

dLdy^=y^y\frac{d\mathcal{L}}{d\hat{y}} = \hat{y} - y

경사 하강법으로 wwbb 를 반복 업데이트하며 손실을 최소화합니다.

퍼셉트론 — 분류와 시그모이드 함수#

분류 문제에서는 선형 조합 결과를 확률(0~1) 로 변환하기 위해 활성화 함수(activation function) 를 추가합니다.

z=w1x1+w2x2+bz = w_1 x_1 + w_2 x_2 + b

y^=σ(z)=11+ez\hat{y} = \sigma(z) = \frac{1}{1 + e^{-z}}

시그모이드 함수 σ(z)\sigma(z):

  • 입력: 임의의 실수
  • 출력: (0,1)(0, 1) 사이의 값 → 확률로 해석 가능
  • z+z \to +\infty 이면 σ1\sigma \to 1, zz \to -\infty 이면 σ0\sigma \to 0

시그모이드의 미분 (연쇄법칙으로 유도):

σ(z)=σ(z)(1σ(z))=y^(1y^)\sigma'(z) = \sigma(z)(1 - \sigma(z)) = \hat{y}(1 - \hat{y})

미분 결과가 시그모이드 자신으로 표현됩니다 — 역전파 계산이 매우 효율적입니다.

분류 손실 — 로그 손실 (Log Loss)#

분류에는 MSE 대신 로그 손실(Log Loss / Cross-Entropy) 을 사용합니다.

L(y,y^)=[ylogy^+(1y)log(1y^)]\mathcal{L}(y, \hat{y}) = -[y \log \hat{y} + (1-y) \log(1-\hat{y})]

왜 로그 손실?

  • 출력이 확률이므로 확률론적 해석 이 자연스러움
  • 수학적으로 MLE(최대 우도 추정)와 동일
  • 연산이 안정적이고 미분 형태가 깔끔함

역전파 (Backpropagation)#

개념#

역전파 는 손실 함수를 각 파라미터(가중치, 편향)에 대해 편미분하는 과정입니다. 연쇄법칙(Chain Rule) 을 반복 적용해 출력층에서 입력층 방향으로 계산합니다.

이름의 유래: 오차를 출력층 → 은닉층 → 입력층 방향으로 역방향 전파하기 때문

연쇄법칙 적용#

퍼셉트론 분류에서 가중치 ww 에 대한 편미분:

Lw=Ly^y^zzw\frac{\partial \mathcal{L}}{\partial w} = \frac{\partial \mathcal{L}}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z} \cdot \frac{\partial z}{\partial w}

각 항 계산:

Ly^\frac{\partial \mathcal{L}}{\partial \hat{y}}yy^+1y1y^-\frac{y}{\hat{y}} + \frac{1-y}{1-\hat{y}}
y^z\frac{\partial \hat{y}}{\partial z}y^(1y^)\hat{y}(1-\hat{y}) (시그모이드 미분)
zw\frac{\partial z}{\partial w}xx

정리하면:

Lw=(y^y)x\frac{\partial \mathcal{L}}{\partial w} = (\hat{y} - y) \cdot x

결론: 오차 (y^y)(\hat{y} - y) 에 입력 xx 를 곱한 형태로 매우 간결합니다.

다층 뉴럴 네트워크#

여러 층으로 구성된 네트워크에서는 각 층의 파라미터에 대해 연쇄법칙을 반복 적용합니다. 상위 첨자 [l][l] 은 층(layer) 번호를 나타냅니다.

Lw[1]=Ly^y^z[2]z[2]a[1]a[1]z[1]z[1]w[1]\frac{\partial \mathcal{L}}{\partial w^{[1]}} = \frac{\partial \mathcal{L}}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z^{[2]}} \cdot \frac{\partial z^{[2]}}{\partial a^{[1]}} \cdot \frac{\partial a^{[1]}}{\partial z^{[1]}} \cdot \frac{\partial z^{[1]}}{\partial w^{[1]}}


뉴턴 방법 (Newton's Method)#

기본 원리#

뉴턴 방법은 원래 f(x)=0f(x) = 0 의 근 을 찾는 알고리즘입니다.

xnew=xoldf(xold)f(xold)x_{\text{new}} = x_{\text{old}} - \frac{f(x_{\text{old}})}{f'(x_{\text{old}})}

최적화에 적용#

최적화(극솟값 찾기)에서는 f(x)=0f'(x) = 0 인 점을 찾아야 합니다. 뉴턴 방법을 f(x)f'(x) 에 적용하면:

xnew=xoldf(xold)f(xold)x_{\text{new}} = x_{\text{old}} - \frac{f'(x_{\text{old}})}{f''(x_{\text{old}})}

방법사용하는 정보
경사 하강법1차 도함수 ff'
뉴턴 방법1차 도함수 ff' + 2차 도함수 ff''

뉴턴 방법의 장점: 더 빠르게 수렴합니다. 단점: 2차 도함수 계산 비용이 크고, 초기값에 민감합니다.

2차 도함수의 역할#

1차 도함수가 0인 지점이 극솟값인지 극댓값인지 판단할 수 없습니다. 2차 도함수 가 이를 알려줍니다.

조건의미
f(x)>0f''(x) > 0아래로 볼록 (concave up) → 극솟값
f(x)<0f''(x) < 0위로 볼록 (concave down) → 극댓값
f(x)=0f''(x) = 0변곡점 또는 판단 불가

헤시안 (Hessian)#

정의#

다변수 함수에서 2차 편미분 을 모아 만든 행렬입니다.

\frac{\partial^2 f}{\partial x^2} & \frac{\partial^2 f}{\partial x \partial y} \\ \frac{\partial^2 f}{\partial y \partial x} & \frac{\partial^2 f}{\partial y^2} \end{bmatrix}$$ ### 헤시안과 오목성 헤시안의 **고유값(eigenvalues)** 으로 극값의 성질을 판단합니다. | 고유값 | 의미 | |---|---| | 모두 **양수** | 아래로 볼록 → **극솟값** | | 모두 **음수** | 위로 볼록 → **극댓값** | | 양수·음수 **혼재** | **안장점 (Saddle Point)** | > **안장점**: 어떤 방향에서는 최솟값, 다른 방향에서는 최댓값인 지점. 뉴럴 네트워크 학습에서 자주 등장하는 문제입니다. ### 다변수 뉴턴 방법 다변수 함수에서 뉴턴 방법은 2차 도함수 대신 **헤시안 행렬의 역행렬** 을 사용합니다. $$\mathbf{x}_{\text{new}} = \mathbf{x}_{\text{old}} - H^{-1} \nabla f(\mathbf{x}_{\text{old}})$$ --- ## 핵심 정리 | 개념 | 설명 | |---|---| | **경사 하강법** | 기울기 반대 방향으로 반복 이동해 최솟값 탐색 | | **학습률 $\alpha$** | 이동 보폭 조절; 너무 크면 발산, 작으면 느림 | | **시그모이드** | 실수 → $(0,1)$ 확률 변환, $\sigma' = \sigma(1-\sigma)$ | | **로그 손실** | 분류 문제의 손실 함수, MLE와 동일 | | **역전파** | 연쇄법칙으로 출력→입력 방향 편미분 계산 | | **뉴턴 방법** | 2차 도함수 활용, 경사 하강법보다 빠른 수렴 | | **헤시안** | 2차 편미분 행렬, 고유값으로 극값 유형 판단 | | **안장점** | 일부 방향 최솟값 + 일부 방향 최댓값인 지점 | --- <br /> ## 퀴즈 **Q1. 경사 하강법에서 학습률이 너무 크면 어떤 문제가 발생하나요?** <details> <summary>정답 보기</summary> 최솟값을 **지나쳐** 발산할 수 있습니다. 기울기에 비례해 이동하는데 보폭이 너무 크면 최솟값 주변을 진동하거나 값이 점점 커져 수렴하지 못합니다. 반대로 학습률이 너무 작으면 수렴은 하지만 매우 느립니다. 적절한 학습률은 실험으로 결정해야 합니다. </details> --- **Q2. 시그모이드 함수 $\sigma(z) = \frac{1}{1+e^{-z}}$ 의 도함수를 구하세요.** <details> <summary>정답 보기</summary> $$\sigma'(z) = \sigma(z)(1 - \sigma(z))$$ 유도: $$\sigma'(z) = \frac{e^{-z}}{(1+e^{-z})^2} = \frac{1}{1+e^{-z}} \cdot \frac{e^{-z}}{1+e^{-z}} = \sigma(z)(1 - \sigma(z))$$ $\hat{y} = \sigma(z)$ 로 표기하면 $\sigma'(z) = \hat{y}(1 - \hat{y})$ 입니다. 역전파에서 이미 계산한 $\hat{y}$ 를 재사용할 수 있어 효율적입니다. </details> --- **Q3. 역전파(Backpropagation)에 대한 설명으로 옳은 것을 모두 고르세요.** 1. 입력층에서 출력층 방향으로 계산한다 2. 손실 함수를 각 파라미터에 대해 편미분하는 과정이다 3. 연쇄법칙(Chain Rule)을 반복 적용한다 4. 경사 하강법과 동일한 개념이다 <details> <summary>정답 보기</summary> **2번, 3번** - 1번 ❌: 역전파는 **출력층 → 입력층** 방향 (역방향) - 2번 ✅: 손실을 각 가중치·편향에 대해 편미분하는 과정 - 3번 ✅: 합성함수 미분인 연쇄법칙을 층마다 반복 적용 - 4번 ❌: 역전파는 **편미분 계산** 방법, 경사 하강법은 **파라미터 업데이트** 방법 — 서로 다른 개념 </details> --- **Q4. 함수 $f(x) = x^4 - 8x^2$ 의 극솟값과 극댓값을 2차 도함수 판정법으로 구하세요.** <details> <summary>정답 보기</summary> **1단계: 1차 도함수 = 0** $$f'(x) = 4x^3 - 16x = 4x(x^2 - 4) = 0$$ $$x = 0, \quad x = 2, \quad x = -2$$ **2단계: 2차 도함수 계산** $$f''(x) = 12x^2 - 16$$ **3단계: 판정** | $x$ | $f''(x)$ | 판정 | |---|---|---| | $0$ | $-16 < 0$ | **극댓값** | | $2$ | $32 > 0$ | **극솟값** | | $-2$ | $32 > 0$ | **극솟값** | </details> --- **Q5. 헤시안 행렬의 고유값이 하나는 양수, 하나는 음수일 때 해당 점은?** 1. 전역 최솟값 2. 극댓값 3. 안장점 (Saddle Point) 4. 변곡점 <details> <summary>정답 보기</summary> **3번 — 안장점 (Saddle Point)** 고유값이 양수·음수 혼재하면 어떤 방향에서는 최솟값, 다른 방향에서는 최댓값처럼 보이는 안장점입니다. 딥러닝에서는 극솟값보다 안장점이 훨씬 더 자주 나타나며, 경사 하강법이 안장점 근처에서 느려지는 문제가 발생할 수 있습니다. </details> --- 다음 글에서는 **미적분 전체 과정을 정리**하고, 머신러닝 실무에서 이 개념들이 어떻게 연결되는지 다룰 예정입니다.

관련 포스트