경사 하강법과 뉴럴 네트워크 최적화: 머신러닝 미적분 3장
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을 풀었습니다. 하지만 복잡한 함수에서는 방정식을 직접 풀기가 어렵습니다. 경사 하강법 은 현재 위치의 기울기(도함수)를 이용해 조금씩 이동하며 최솟값을 찾아가는 반복적 알고리즘입니다.
업데이트 규칙#
| 기호 | 의미 |
|---|---|
| 현재 위치 | |
| (알파) | 학습률 (learning rate) |
| 현재 위치의 기울기 |
원리:
- 기울기가 양수 (오른쪽이 오르막) → 왼쪽으로 이동
- 기울기가 음수 (왼쪽이 오르막) → 오른쪽으로 이동
- 기울기가 클수록 큰 폭으로 이동, 작을수록 작은 폭으로 이동
학습률의 역할#
학습률 는 이동 보폭을 조절합니다.
| 학습률 | 결과 |
|---|---|
| 너무 크면 | 최솟값을 지나쳐 발산할 수 있음 |
| 너무 작으면 | 수렴 속도가 매우 느려짐 |
| 적당하면 | 안정적으로 최솟값에 수렴 |
학습률은 정해진 최적값이 없습니다. 실험을 통해 결정합니다.
경사 하강법의 한계#
경사 하강법은 기울기를 따라 이동하므로 전역 최솟값(Global Minimum) 대신 극솟값(Local Minimum) 에 빠질 수 있습니다.
경사 하강법 — 2변수#
변수가 2개인 함수 에서는 그래디언트 벡터 방향의 반대로 이동합니다.
업데이트 규칙#
벡터 형태로:
선형 회귀에 적용 — 최소제곱법#
직선 를 피팅할 때 MSE 손실 를 경사 하강법으로 최소화합니다.
초기 에서 시작해 반복하면 손실이 최소인 최적 파라미터로 수렴합니다.
뉴럴 네트워크 최적화#
퍼셉트론 — 회귀#
퍼셉트론 은 선형 회귀를 수행하는 단일 노드입니다.
손실 함수 (MSE):
왜 ? 미분 시 나오는 계수 2를 상쇄해서 계산을 깔끔하게 만들기 위함입니다.
경사 하강법으로 와 를 반복 업데이트하며 손실을 최소화합니다.
퍼셉트론 — 분류와 시그모이드 함수#
분류 문제에서는 선형 조합 결과를 확률(0~1) 로 변환하기 위해 활성화 함수(activation function) 를 추가합니다.
시그모이드 함수 :
- 입력: 임의의 실수
- 출력: 사이의 값 → 확률로 해석 가능
- 이면 , 이면
시그모이드의 미분 (연쇄법칙으로 유도):
미분 결과가 시그모이드 자신으로 표현됩니다 — 역전파 계산이 매우 효율적입니다.
분류 손실 — 로그 손실 (Log Loss)#
분류에는 MSE 대신 로그 손실(Log Loss / Cross-Entropy) 을 사용합니다.
왜 로그 손실?
- 출력이 확률이므로 확률론적 해석 이 자연스러움
- 수학적으로 MLE(최대 우도 추정)와 동일
- 연산이 안정적이고 미분 형태가 깔끔함
역전파 (Backpropagation)#
개념#
역전파 는 손실 함수를 각 파라미터(가중치, 편향)에 대해 편미분하는 과정입니다. 연쇄법칙(Chain Rule) 을 반복 적용해 출력층에서 입력층 방향으로 계산합니다.
이름의 유래: 오차를 출력층 → 은닉층 → 입력층 방향으로 역방향 전파하기 때문
연쇄법칙 적용#
퍼셉트론 분류에서 가중치 에 대한 편미분:
각 항 계산:
| 항 | 값 |
|---|---|
| (시그모이드 미분) | |
정리하면:
결론: 오차 에 입력 를 곱한 형태로 매우 간결합니다.
다층 뉴럴 네트워크#
여러 층으로 구성된 네트워크에서는 각 층의 파라미터에 대해 연쇄법칙을 반복 적용합니다. 상위 첨자 은 층(layer) 번호를 나타냅니다.
뉴턴 방법 (Newton's Method)#
기본 원리#
뉴턴 방법은 원래 의 근 을 찾는 알고리즘입니다.
최적화에 적용#
최적화(극솟값 찾기)에서는 인 점을 찾아야 합니다. 뉴턴 방법을 에 적용하면:
| 방법 | 사용하는 정보 |
|---|---|
| 경사 하강법 | 1차 도함수 |
| 뉴턴 방법 | 1차 도함수 + 2차 도함수 |
뉴턴 방법의 장점: 더 빠르게 수렴합니다. 단점: 2차 도함수 계산 비용이 크고, 초기값에 민감합니다.
2차 도함수의 역할#
1차 도함수가 0인 지점이 극솟값인지 극댓값인지 판단할 수 없습니다. 2차 도함수 가 이를 알려줍니다.
| 조건 | 의미 |
|---|---|
| 아래로 볼록 (concave up) → 극솟값 | |
| 위로 볼록 (concave down) → 극댓값 | |
| 변곡점 또는 판단 불가 |
헤시안 (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> --- 다음 글에서는 **미적분 전체 과정을 정리**하고, 머신러닝 실무에서 이 개념들이 어떻게 연결되는지 다룰 예정입니다.관련 포스트
확률·통계 실무 개념 과제: ML 현장에서 마주치는 추론 문제들
확률 기초, 베이즈 정리, 분포, MLE/MAP, 신뢰구간, 가설검정까지 — 머신러닝 실무 시나리오로 배우는 확률통계 개념 과제 모음입니다.
확률·통계 코딩 과제: Python으로 구현하는 ML 통계 도구
베이즈 업데이트, 분포 시뮬레이션, CLT 검증, MLE/MAP 구현, 신뢰구간, 가설검정, A/B 테스트 파이프라인까지 — 확률통계 1~4장을 코드로 구현합니다.
신뢰구간과 가설검정: 머신러닝 확률통계 4장
신뢰구간의 개념과 계산, t분포, 가설검정의 원리(귀무/대립가설, p값, 기각역, 검정력), 다양한 t검정과 A/B 테스트까지 정리했습니다.