devlog.

미적분 실무 개념 과제: ML 최적화 현장에서 마주치는 문제들

·10분 읽기·

이 글은 미적분 1~3장 에서 다룬 개념들을 머신러닝 실무 시나리오에 적용하는 연습 문제 모음입니다. 수식 계산보다 개념의 적용과 해석에 초점을 맞춥니다.


Part 1. 미분과 활성화 함수#

문제 1-1. 연쇄법칙과 활성화 함수 미분#

딥러닝에서 자주 쓰이는 활성화 함수 ReLU는 다음과 같이 정의됩니다.

ReLU(x)=max(0,x)\text{ReLU}(x) = \max(0, x)

역전파에서 dReLUdx\frac{d \text{ReLU}}{dx} 는 어떻게 되나요? 이것이 학습에 어떤 의미를 가지나요?

정답 보기

dReLUdx={1x>00x0\frac{d \text{ReLU}}{dx} = \begin{cases} 1 & x > 0 \\ 0 & x \leq 0 \end{cases}

학습 의미:

  • x>0x > 0 이면 그래디언트가 그대로 통과 → 깊은 레이어까지 오차 신호가 전달됨
  • x0x \leq 0 이면 그래디언트가 0 → 해당 뉴런은 업데이트되지 않음

이를 Dead ReLU 문제라고 합니다. 뉴런의 출력이 항상 0이 되면 그 뉴런은 다시는 활성화되지 않습니다.

해결책: Leaky ReLU (x0x \leq 0 일 때 0 대신 0.01x0.01x), ELU, GELU 등을 사용합니다.

시그모이드와 비교: 시그모이드의 미분은 σ(1σ)0.25\sigma(1-\sigma) \leq 0.25 로 항상 1보다 작아, 깊은 네트워크에서 그래디언트가 점점 줄어드는 그래디언트 소실 문제가 발생합니다. ReLU는 이를 해결합니다.


문제 1-2. 손실 함수의 미분 해석#

두 손실 함수의 미분을 비교하세요.

  • MSE: L=12(y^y)2\mathcal{L} = \frac{1}{2}(\hat{y} - y)^2
  • MAE: L=y^y\mathcal{L} = |\hat{y} - y|

각각을 y^\hat{y} 에 대해 미분하면? 실무에서 어떤 차이가 생기나요?

정답 보기

MSE 미분:

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

MAE 미분:

dLdy^=sign(y^y)={+1y^>y1y^<y\frac{d\mathcal{L}}{d\hat{y}} = \text{sign}(\hat{y} - y) = \begin{cases} +1 & \hat{y} > y \\ -1 & \hat{y} < y \end{cases}

특성MSEMAE
그래디언트 크기오차에 비례 (큰 오차 → 큰 업데이트)항상 ±1 (일정한 업데이트)
이상치 민감도높음 (오차 제곱 → 이상치 과잉 패널티)낮음 (오차 선형)
최솟값 근방그래디언트 → 0 (부드럽게 수렴)그래디언트 갑자기 부호 변경
미분 가능성전 구간y^=y\hat{y} = y 에서 불연속

실무 선택 기준:

  • 이상치가 많은 데이터 → MAE (이상치 영향 최소화)
  • 이상치를 페널티로 주고 싶은 경우 → MSE
  • 이상치에 강건하면서 미분 가능 → Huber Loss (MSE + MAE 결합)

문제 1-3. 연쇄법칙 추적#

f(x)=log(σ(wx+b))f(x) = \log(\sigma(wx + b))ww 에 대해 미분하세요. (σ\sigma = 시그모이드)

정답 보기

단계별 연쇄법칙 적용:

f=log(u),u=σ(v),v=wx+bf = \log(u), \quad u = \sigma(v), \quad v = wx + b

dfdw=dfdududvdvdw\frac{df}{dw} = \frac{df}{du} \cdot \frac{du}{dv} \cdot \frac{dv}{dw}

각 항:

  • dfdu=1u=1σ(v)\frac{df}{du} = \frac{1}{u} = \frac{1}{\sigma(v)}
  • dudv=σ(v)(1σ(v))\frac{du}{dv} = \sigma(v)(1 - \sigma(v))
  • dvdw=x\frac{dv}{dw} = x

결합:

dfdw=1σ(v)σ(v)(1σ(v))x=(1σ(wx+b))x\frac{df}{dw} = \frac{1}{\sigma(v)} \cdot \sigma(v)(1 - \sigma(v)) \cdot x = (1 - \sigma(wx+b)) \cdot x

직관: 분류 모델에서 손실의 그래디언트는 (1y^)x(1 - \hat{y}) \cdot x 형태로, 예측이 틀릴수록 (확률이 낮을수록) 큰 업데이트가 일어납니다.


Part 2. 손실 함수 최적화#

문제 2-1. 왜 MSE가 아닌 로그 손실을 쓰나요?#

분류 문제에서 MSE 대신 로그 손실을 쓰는 이유를 두 가지 관점에서 설명하세요: (1) 확률론적 관점, (2) 최적화 관점.

정답 보기

(1) 확률론적 관점 — MLE

시그모이드 출력 y^\hat{y} 는 확률입니다. 데이터 nn개의 우도(likelihood):

L=i=1ny^iyi(1y^i)1yiL = \prod_{i=1}^{n} \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1-y_i}

이를 최대화하는 것 = 로그 우도 최대화 = 네거티브 로그 손실 최소화:

logL=i[yilogy^i+(1yi)log(1y^i)]-\log L = -\sum_i [y_i \log \hat{y}_i + (1-y_i)\log(1-\hat{y}_i)]

MSE는 가우시안 분포를 가정할 때 MLE와 동치이므로, 확률(0~1) 출력에는 자연스럽지 않습니다.

(2) 최적화 관점 — 경사의 형태

분류에서 MSE를 쓰면:

MSEw=(y^y)σ(z)x=(y^y)y^(1y^)x\frac{\partial \text{MSE}}{\partial w} = (\hat{y} - y) \cdot \sigma'(z) \cdot x = (\hat{y} - y) \cdot \hat{y}(1 - \hat{y}) \cdot x

y^\hat{y} 이 0 또는 1에 가까울 때 σ(z)0\sigma'(z) \approx 0그래디언트 소실 발생.

로그 손실을 쓰면:

LogLossw=(y^y)x\frac{\partial \text{LogLoss}}{\partial w} = (\hat{y} - y) \cdot x

σ(z)\sigma'(z) 항이 깔끔하게 소거되어 그래디언트 소실 없이 학습 가능합니다.


문제 2-2. 편미분으로 최적 학습률 분석#

손실 함수가 L(α)=α24α+5L(\alpha) = \alpha^2 - 4\alpha + 5 형태로 주어졌을 때, 최적 학습률 α\alpha^* 를 구하세요. (여기서 α\alpha 는 학습률을 찾는 탐색 변수입니다.)

정답 보기

L(α)=2α4=0L'(\alpha) = 2\alpha - 4 = 0

α=2\alpha^* = 2

L(α)=2>0극솟값 확인L''(\alpha) = 2 > 0 \Rightarrow \text{극솟값 확인}

L(2)=48+5=1L(2) = 4 - 8 + 5 = 1

해석: 이 예시는 Line Search 의 원리입니다. 경사 하강법에서 각 스텝마다 이동 방향은 그래디언트로 결정하되, 이동 거리(학습률)는 해당 방향으로의 손실 함수를 최소화하는 값으로 정합니다. 이를 최적 선탐색(Optimal Line Search) 이라고 하며, 고정 학습률보다 빠른 수렴을 보입니다.


문제 2-3. 다변수 손실 함수의 최솟값#

손실 함수 E(m,b)=(m+b3)2+(2m+b5)2E(m, b) = (m + b - 3)^2 + (2m + b - 5)^2 를 최소화하는 (m,b)(m, b) 를 구하세요.

정답 보기

편미분 = 0 설정:

Em=2(m+b3)+4(2m+b5)=10m+6b26=0\frac{\partial E}{\partial m} = 2(m+b-3) + 4(2m+b-5) = 10m + 6b - 26 = 0

Eb=2(m+b3)+2(2m+b5)=6m+4b16=0\frac{\partial E}{\partial b} = 2(m+b-3) + 2(2m+b-5) = 6m + 4b - 16 = 0

연립방정식 풀기:

10m+6b=26(1)10m + 6b = 26 \quad \cdots (1) 6m+4b=16(2)6m + 4b = 16 \quad \cdots (2)

(1)×2(2)×3(1) \times 2 - (2) \times 3:

20m18m=52482m=4m=220m - 18m = 52 - 48 \Rightarrow 2m = 4 \Rightarrow m = 2

b=16124=1b = \frac{16 - 12}{4} = 1

검증: 점 (1,3)(1, 3)(2,5)(2, 5) 에 직선 y=2x+1y = 2x + 1 을 대입하면 완벽히 일치합니다 — 이 데이터에서는 해석적 최솟값이 오차 0입니다.


Part 3. 경사 하강법과 역전파#

문제 3-1. 학습률 진단#

모델 학습 중 다음 상황을 관찰했습니다. 각각 어떤 문제이고 어떻게 해결하나요?

(a) 손실이 초반에 급격히 감소하다가 갑자기 NaN 이 됩니다.

(b) 손실이 매우 천천히 감소하고 수천 에폭이 지나도 수렴하지 않습니다.

(c) 손실이 진동하며 일정 값 주변을 맴돌고 내려가지 않습니다.

정답 보기

(a) NaN 발생 → 학습률이 너무 큼

그래디언트가 매우 크거나, 학습률이 커서 발산합니다. 손실이 \infty 가 되면 NaN.

해결: 학습률을 10배 줄이거나, 그래디언트 클리핑(Gradient Clipping) 적용.

(b) 수렴 느림 → 학습률이 너무 작음

보폭이 너무 작아 최솟값까지 도달하는 데 너무 많은 스텝이 필요합니다.

해결: 학습률을 10배 높이거나, 학습률 스케줄러 사용 (초반엔 크게, 후반엔 작게).

(c) 진동 → 학습률이 약간 큼 or 극솟값 근방

최솟값을 계속 지나쳐 왔다 갔다 합니다.

해결: 학습률을 2~5배 줄이거나, 모멘텀(Momentum) 또는 Adam 옵티마이저 사용.


문제 3-2. 역전파 그래디언트 계산#

퍼셉트론 분류에서 y^=σ(wx+b)\hat{y} = \sigma(wx + b), 로그 손실 L=[ylogy^+(1y)log(1y^)]\mathcal{L} = -[y \log \hat{y} + (1-y)\log(1-\hat{y})] 일 때:

w=0.5w = 0.5, b=0.1b = 0.1, x=2x = 2, y=1y = 1 이면 Lw\frac{\partial \mathcal{L}}{\partial w} 는?

정답 보기

1단계: 포워드 패스

z=wx+b=0.5×2+0.1=1.1z = wx + b = 0.5 \times 2 + 0.1 = 1.1

y^=σ(1.1)=11+e1.10.7503\hat{y} = \sigma(1.1) = \frac{1}{1 + e^{-1.1}} \approx 0.7503

2단계: 역전파

로그 손실의 ww 에 대한 그래디언트:

Lw=(y^y)x=(0.75031)×2=0.4994\frac{\partial \mathcal{L}}{\partial w} = (\hat{y} - y) \cdot x = (0.7503 - 1) \times 2 = -0.4994

해석: 그래디언트가 음수이므로 ww증가 시켜야 손실이 줄어듭니다.

wnew=wα(0.4994)=0.5+0.4994αw_{\text{new}} = w - \alpha \cdot (-0.4994) = 0.5 + 0.4994\alpha

학습률 α=0.1\alpha = 0.1 이면 wnew0.5499w_{\text{new}} \approx 0.5499.


문제 3-3. 안장점에서 경사 하강법은?#

함수 f(x,y)=x2y2f(x, y) = x^2 - y^2 의 점 (0,0)(0, 0) 은 안장점입니다. 초기값 (0.01,0)(0.01, 0) 에서 경사 하강법을 적용하면 어떻게 되나요?

정답 보기

그래디언트 계산:

f=[2x2y]\nabla f = \begin{bmatrix} 2x \\ -2y \end{bmatrix}

초기값 (0.01,0)(0.01, 0) 에서:

f(0.01,0)=[0.020]\nabla f(0.01, 0) = \begin{bmatrix} 0.02 \\ 0 \end{bmatrix}

업데이트 방향:

xnew=0.01α×0.02(x 방향: 원점으로)x_{\text{new}} = 0.01 - \alpha \times 0.02 \quad \text{(x 방향: 원점으로)} ynew=0α×0=0(y 방향: 변화 없음)y_{\text{new}} = 0 - \alpha \times 0 = 0 \quad \text{(y 방향: 변화 없음)}

xx 방향으로는 극솟값(원점)으로 이동하지만, y=0y = 0 으로 고정된 채 원점에 수렴합니다. 그런데 원점은 yy 방향으로는 극댓값 입니다.

결론: 경사 하강법은 초기값에 따라 안장점에 수렴할 수 있습니다. 딥러닝에서는 SGD(확률적 경사 하강법) 의 노이즈나 모멘텀 이 안장점 탈출을 돕습니다.


문제 3-4. 헤시안으로 극값 판별#

함수 f(x,y)=x2+4xy+y2f(x, y) = x^2 + 4xy + y^2 의 정류점(그래디언트 = 0)을 찾고, 헤시안으로 극값 유형을 판별하세요.

정답 보기

그래디언트 = 0:

fx=2x+4y=0\frac{\partial f}{\partial x} = 2x + 4y = 0 fy=4x+2y=0\frac{\partial f}{\partial y} = 4x + 2y = 0

x=0,y=0x = 0, \quad y = 0

헤시안 계산:

H=[2fx22fxy2fyx2fy2]=[2442]H = \begin{bmatrix} \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} = \begin{bmatrix} 2 & 4 \\ 4 & 2 \end{bmatrix}

고유값 계산:

det(HλI)=(2λ)216=0\det(H - \lambda I) = (2-\lambda)^2 - 16 = 0 λ24λ12=0\lambda^2 - 4\lambda - 12 = 0 λ=6또는λ=2\lambda = 6 \quad \text{또는} \quad \lambda = -2

고유값이 양수(66)와 음수(2-2) 혼재 → 안장점.



퀴즈: 개념 종합#

Q1. 다음 중 역전파(Backpropagation)가 사용하는 미분 규칙은?

  1. 적분의 치환법
  2. 연쇄법칙 (Chain Rule)
  3. 곱의 법칙만
  4. L'Hôpital 법칙
정답 보기

2번 — 연쇄법칙

역전파는 합성함수를 단계별로 미분하는 연쇄법칙을 반복 적용해, 출력층에서 입력층 방향으로 그래디언트를 전파합니다.


Q2. 학습률(learning rate)을 0으로 설정하면 어떻게 되나요?

정답 보기

wnew=wold0L=woldw_{\text{new}} = w_{\text{old}} - 0 \cdot \nabla L = w_{\text{old}}

파라미터가 전혀 업데이트되지 않습니다. 모델이 초기 상태 그대로 유지되어 학습이 일어나지 않습니다.

반대로 학습률이 너무 크면 발산, 너무 작으면 수렴이 매우 느립니다. 실무에서는 10410^{-4} ~ 10210^{-2} 범위에서 시작합니다.


Q3. 시그모이드 함수가 "그래디언트 소실" 문제를 유발하는 이유는?

정답 보기

시그모이드의 미분: σ(z)=σ(z)(1σ(z))\sigma'(z) = \sigma(z)(1-\sigma(z))

  • zz 가 매우 크거나 작으면 σ(z)1\sigma(z) \to 1 또는 σ(z)0\sigma(z) \to 0
  • 따라서 σ(z)0\sigma'(z) \to 0

역전파에서 각 레이어의 그래디언트에 σ\sigma' 가 곱해집니다. 레이어가 깊어질수록:

그래디언트σ1σ2σn0\text{그래디언트} \propto \sigma'_1 \cdot \sigma'_2 \cdots \sigma'_n \to 0

그래디언트가 지수적으로 감소해 앞쪽 레이어가 거의 학습되지 않습니다. ReLU 는 양수 구간에서 σ=1\sigma' = 1 이므로 이 문제가 없습니다.


Q4. 뉴턴 방법이 경사 하강법보다 빠른 이유와, 딥러닝에서 잘 쓰이지 않는 이유를 설명하세요.

정답 보기

빠른 이유:

뉴턴 방법은 xnew=xffx_{\text{new}} = x - \frac{f'}{f''} 로, 2차 도함수(곡률 정보) 를 이용합니다. 현재 위치의 곡률을 알면 최솟값까지 한 번에 가는 이동량을 추정할 수 있어 수렴이 훨씬 빠릅니다 (이차 수렴).

경사 하강법은 1차 도함수만 사용하므로 단순히 기울기 방향으로 조금씩 이동합니다 (선형 수렴).

딥러닝에서 안 쓰이는 이유:

다변수 뉴턴 방법은 헤시안 행렬 HH 의 역행렬을 계산해야 합니다:

xnew=xH1f\mathbf{x}_{\text{new}} = \mathbf{x} - H^{-1} \nabla f

파라미터 수가 nn 이면 헤시안 크기가 n×nn \times n → GPT 같은 모델에서는 수십억 × 수십억 행렬.

  • 계산 복잡도: O(n3)O(n^3) (역행렬 계산)
  • 메모리: O(n2)O(n^2)

파라미터 10억 개인 모델에서는 절대 불가능합니다. 실무에서는 헤시안을 근사하는 L-BFGS, Adam 등을 사용합니다.

관련 포스트