검색
← 모듈 로드맵

딥러닝 (Goodfellow)

교재 · 준전문가 · Goodfellow · Bengio · Courville

원제 · Deep Learning

L2 · L1 · 조기 종료 · 드롭아웃부터 모멘텀 · Adam까지 정규화와 최적화를 손계산으로 익히는 수업

먼저 알아야 할 것

과적합 · 검증 데이터경사 하강법미니배치 SGD편미분

다루는 내용

Goodfellow 외 『딥러닝』 7장(정규화)과 8장(최적화)을 바탕으로 한 자체 수업입니다. L2 가중치 감쇠와 L1 희소성의 해를 숫자로 비교하고, 조기 종료 · 데이터 증강 · 드롭아웃 · 앙상블의 원리를 설명합니다. 나쁜 조건수 골짜기에서의 지그재그, 안장점, 모멘텀, 학습률 스케줄, AdaGrad · RMSProp · Adam의 갱신식을 작은 예로 계산합니다.

해설

딥러닝 (Goodfellow) — 수업: 정규화와 최적화, 학습을 '잘' 시키는 기술

Goodfellow · Bengio · Courville의 교과서 『딥러닝』 7장(정규화)과 8장(최적화)의 핵심을 우리 말로 다시 짠 수업입니다. 학습 데이터만 외우지 않게 하는 방법(L2 · L1 · 조기 종료 · 데이터 증강 · 드롭아웃 · 앙상블)과, 손실을 빨리 · 안정적으로 줄이는 방법(SGD · 모멘텀 · 학습률 스케줄 · AdaGrad · RMSProp · Adam)을 식과 손계산으로 따라갑니다.

항목내용
출처Deep Learning · Ian Goodfellow · Yoshua Bengio · Aaron Courville · MIT Press(2016) · deeplearningbook.org
트랙 · 수준딥러닝 기초 · 중급
이 수업이 다루는 범위7장 Regularization for Deep Learning, 8장 Optimization for Training Deep Models
형식원문 번역이 아닌 자체 해설 · 숫자 예는 해설용으로 직접 만든 것

들어가기 전에

한눈에 보기

  • 정규화(regularization)는 "학습 오차가 아니라 일반화 오차를 줄이려는 모든 수정"이라는 넓은 뜻임을 압니다.
  • L2(가중치 감쇠)와 L1이 해를 어떻게 바꾸는지 숫자로 비교합니다. L1은 작은 가중치를 정확히 0으로 만듭니다.
  • 조기 종료 · 데이터 증강 · 드롭아웃 · 앙상블이 각각 어떤 원리로 과적합을 줄이는지 설명할 수 있습니다.
  • 나쁜 조건수(골짜기 모양 손실)에서 SGD가 왜 지그재그하는지, 모멘텀이 왜 도움이 되는지 계산합니다.
  • AdaGrad · RMSProp · Adam이 "파라미터마다 걸음 크기를 다르게" 잡는 방식을 식으로 이해합니다.

1부. 정규화 (7장)

1-1. 정규화란 무엇인가

직관(해설용 비유): 시험 범위의 기출문제만 통째로 외운 학생은 기출엔 만점이지만 새 문제엔 약합니다. 정규화는 "외우기 어렵게 만드는" 장치들입니다. 답안을 단순하게 쓰게 하거나, 문제를 조금씩 바꿔 주거나, 여러 학생의 답을 평균 내는 식입니다.

책은 정규화를 학습 오차가 아니라 일반화 오차(새 데이터에서의 오차)를 줄이려고 학습 알고리즘에 가하는 수정이라고 넓게 정의합니다. 그래서 벌점 항뿐 아니라 조기 종료, 데이터 증강, 드롭아웃, 앙상블도 모두 정규화에 들어갑니다.

1-2. L2 정규화 = 가중치 감쇠

단계:

  1. 원래 손실 JJ에 가중치 크기의 제곱 벌점을 더합니다.
  2. 기울기를 구하면 벌점에서 αw\alpha \mathbf{w}가 추가됩니다.
  3. 갱신식을 정리하면 매 걸음 가중치를 (1−ϵα)(1 - \epsilon\alpha)배로 '줄인 다음' 원래 기울기로 움직입니다. 그래서 가중치 감쇠(weight decay)라고 부릅니다.
J~(w)=J(w)+α2∥w∥22,w←(1−ϵα) w−ϵ ∇wJ(w)\tilde{J}(\mathbf{w}) = J(\mathbf{w}) + \frac{\alpha}{2}\lVert\mathbf{w}\rVert_2^2, \qquad \mathbf{w} \leftarrow (1 - \epsilon\alpha)\,\mathbf{w} - \epsilon\,\nabla_{\mathbf{w}} J(\mathbf{w})
기호뜻
JJ원래 손실(예: 교차 엔트로피)
α\alpha벌점 세기 — 클수록 가중치를 작게 유지
∥w∥22\lVert\mathbf{w}\rVert_2^2가중치 제곱합
ϵ\epsilon학습률

숫자로 해 보기(해설용): w=2w = 2, 기울기 ∇J=1\nabla J = 1, ϵ=0.1\epsilon = 0.1, α=0.1\alpha = 0.1이면 w←0.99×2−0.1=1.88w \leftarrow 0.99 \times 2 - 0.1 = 1.88입니다. 벌점이 없었다면 1.91.9였으니, 매 걸음 1%씩 원점 쪽으로 더 끌려갑니다.

1-3. L1 정규화와 희소성

벌점을 절댓값 합 α∥w∥1\alpha\lVert\mathbf{w}\rVert_1로 바꾸면, 작은 가중치는 아예 0이 됩니다. 원래 손실이 12(w−w∗)2\frac12(w - w^*)^2인 가장 단순한 경우(가중치 하나, w∗w^*는 벌점 없을 때의 최적값), 두 벌점의 해는 다음과 같습니다.

L2: w=w∗1+α,L1: w=sign(w∗)max⁡(∣w∗∣−α, 0)\text{L2: } w = \frac{w^*}{1 + \alpha}, \qquad \text{L1: } w = \mathrm{sign}(w^*)\max\big(\lvert w^*\rvert - \alpha,\ 0\big)

숫자로 해 보기(해설용, α=0.5\alpha = 0.5):

w∗w^*L2 해L1 해
21.33331.5
0.30.20

L2는 모든 가중치를 같은 비율로 줄이고, L1은 일정량을 빼되 그보다 작으면 0으로 잘라 냅니다. 그래서 L1은 "쓸모없는 특징을 버리는" 특징 선택 효과가 있습니다.

왜 이렇게 하나: 가중치가 작으면 입력이 조금 바뀌어도 출력이 크게 흔들리지 않는, 더 '부드러운' 함수가 됩니다. 노이즈까지 맞추려면 큰 가중치가 필요하므로, 크기에 벌점을 주면 노이즈를 외우기 어려워집니다.

1-4. 조기 종료

직관: 학습을 오래 하면 학습 손실은 계속 내려가지만, 어느 순간부터 검증 손실이 다시 올라갑니다. 그 꺾이는 지점의 파라미터를 저장해 두고 씁니다.

단계:

  1. 일정 간격(예: 에포크마다) 검증 손실을 잽니다.
  2. 지금까지 최저 검증 손실이면 파라미터를 저장합니다.
  3. 정해 둔 횟수(인내, patience) 동안 개선이 없으면 멈추고, 저장한 파라미터를 돌려줍니다.

숫자로 해 보기(해설용, 가상의 기록):

에포크123456
학습 손실0.900.600.450.350.280.22
검증 손실0.950.700.580.600.630.67

인내 3이면 3에포크에서 최저를 찍고 4 · 5 · 6에서 개선이 없으니 6에서 멈추고 3에포크의 파라미터를 씁니다. 책은 조기 종료가 단순한 이차 손실에서는 L2 정규화와 비슷한 효과를 낸다는 분석도 보여 줍니다. 학습 걸음 수가 곧 '얼마나 멀리 갈 수 있나'를 제한하기 때문입니다.

1-5. 데이터 증강 · 드롭아웃 · 앙상블

  • 데이터 증강(data augmentation): 이미지를 뒤집고 · 자르고 · 밝기를 바꾸는 등, 정답이 바뀌지 않는 변형으로 학습 데이터를 늘립니다. "고양이를 좌우로 뒤집어도 고양이"라는 지식을 데이터로 넣는 셈입니다. 숫자 6과 9처럼 변형이 정답을 바꾸는 경우는 피해야 합니다.
  • 앙상블(ensemble) · 배깅(bagging): 서로 다르게 학습한 모델 여러 개의 예측을 평균 냅니다. 모델마다 실수가 다른 곳에서 나오면 평균이 실수를 상쇄합니다.
  • 드롭아웃(dropout): 학습 때 매 미니배치마다 뉴런을 무작위로 끕니다. 책은 이것을 파라미터를 공유하는 엄청나게 많은 하위 신경망을 한꺼번에 학습하는, 값싼 앙상블 근사로 설명합니다.

드롭아웃 숫자로 해 보기(해설용): 은닉 출력 (0.4,1.2,0.8,0.6)(0.4, 1.2, 0.8, 0.6)에 남길 확률 p=0.5p = 0.5를 쓰고 이번 마스크가 (1,0,1,0)(1, 0, 1, 0)이라 합시다. 흔히 쓰는 '역 드롭아웃(inverted dropout)'은 남은 값을 1/p=21/p = 2배 해서 (0.8,0,1.6,0)(0.8, 0, 1.6, 0)을 넘깁니다. 이렇게 하면 기댓값이 원래와 같아, 시험 때는 아무것도 끄지 않고 그대로 쓰면 됩니다.

2부. 최적화 (8장)

2-1. 학습은 순수한 최적화와 다르다

학습에서 진짜로 줄이고 싶은 것은 본 적 없는 데이터에서의 손실이지만, 실제로 줄일 수 있는 것은 학습 데이터의 손실뿐입니다. 그래서 학습 손실을 끝까지 최소화하는 것이 목표가 아니고(조기 종료가 그 예), 전체 데이터 대신 미니배치로 기울기를 추정해도 충분합니다. 미니배치 기울기는 잡음이 섞이지만, 같은 계산량으로 훨씬 많은 걸음을 갈 수 있습니다.

2-2. 나쁜 조건수: 골짜기에서 지그재그

직관(해설용 비유): 폭이 좁고 길게 뻗은 골짜기에 공을 놓으면, 공은 가파른 벽 쪽으로 먼저 굴러 좌우로 흔들리고, 정작 골짜기 바닥을 따라서는 아주 천천히 갑니다.

숫자로 해 보기(해설용): f(x,y)=12(x2+100y2)f(x, y) = \frac12(x^2 + 100y^2), 시작 (1,1)(1, 1), 학습률 0.0190.019로 경사 하강을 해 봅니다. 갱신은 x←(1−0.019)xx \leftarrow (1 - 0.019)x, y←(1−1.9)yy \leftarrow (1 - 1.9)y입니다.

걸음xxyy
10.981−0.9
20.96240.81
30.9441−0.729

yy는 부호를 바꾸며 흔들리고, xx는 걸음마다 2%도 줄지 않습니다. 학습률을 키우면 yy가 발산하고(∣1−100ϵ∣>1|1 - 100\epsilon| > 1), 줄이면 xx가 더 느려집니다. 두 방향의 곡률 비(여기서 100)가 조건수(condition number)이며, 클수록 경사 하강이 어려워집니다.

2-3. 안장점

고차원 손실에서 기울기가 0인 점은 극소점보다 안장점(saddle point)이 훨씬 흔할 수 있습니다. 예: f(x,y)=x2−y2f(x, y) = x^2 - y^2는 원점에서 기울기가 0이지만, xx 방향으로는 오목하고 yy 방향으로는 볼록합니다(헤세 행렬 고윳값 22와 −2-2). 기울기가 0 근처라 걸음이 아주 작아지므로 학습이 멈춘 것처럼 보일 수 있습니다. 미니배치의 잡음과 모멘텀은 이런 평평한 지대를 빠져나오는 데 도움이 됩니다.

2-4. 모멘텀

단계:

  1. 속도 v\mathbf{v}를 두고, 매 걸음 이전 속도를 α\alpha배로 줄인 뒤 새 기울기를 더합니다.
  2. 그 속도만큼 움직입니다.
  3. 같은 방향 기울기가 계속되면 속도가 쌓이고, 방향이 번갈아 바뀌면 상쇄됩니다.
v←αv−ϵ g,θ←θ+v\mathbf{v} \leftarrow \alpha\mathbf{v} - \epsilon\,\mathbf{g}, \qquad \boldsymbol\theta \leftarrow \boldsymbol\theta + \mathbf{v}
기호뜻
v\mathbf{v}속도(지난 기울기의 감쇠 합)
α\alpha모멘텀 계수, 흔히 0.5 · 0.9 · 0.99
g\mathbf{g}이번 미니배치 기울기

숫자로 해 보기(해설용): 기울기가 계속 g=1g = 1, ϵ=0.1\epsilon = 0.1, α=0.9\alpha = 0.9라면 속도는 −0.1,−0.19,−0.271,…-0.1, -0.19, -0.271, \dots로 쌓여 −ϵg/(1−α)=−1.0-\epsilon g/(1-\alpha) = -1.0에 가까워집니다(60걸음 뒤 약 −0.998-0.998). 같은 방향이면 보통 SGD보다 최대 1/(1−0.9)=101/(1 - 0.9) = 10배 빨리 갑니다. 2-2의 골짜기에서는 yy 방향 기울기가 번갈아 부호를 바꾸므로 속도가 쌓이지 않고, xx 방향만 쌓여 지그재그가 줄어듭니다. 자세한 수렴 분석은 Distill 해설 글 모음 수업에서 합니다.

2-5. 학습률 스케줄

학습률 하나로 끝까지 가면, 미니배치 잡음 때문에 최저점 근처에서 계속 흔들립니다. 그래서 처음엔 크게, 나중엔 작게 줄이는 스케줄을 씁니다. 흔한 예는 일정 걸음 τ\tau까지 처음 값 ϵ0\epsilon_0에서 작은 값 ϵτ\epsilon_\tau로 직선으로 줄이고 이후 고정하는 방식입니다.

ϵk=(1−βk) ϵ0+βk ϵτ,βk=min⁡(k/τ, 1)\epsilon_k = (1 - \beta_k)\,\epsilon_0 + \beta_k\,\epsilon_\tau, \qquad \beta_k = \min(k/\tau,\ 1)

예(해설용): ϵ0=0.1\epsilon_0 = 0.1, ϵτ=0.001\epsilon_\tau = 0.001, τ=1000\tau = 1000이면 500걸음째 학습률은 0.5×0.1+0.5×0.001=0.05050.5 \times 0.1 + 0.5 \times 0.001 = 0.0505입니다.

2-6. 적응형 학습률: AdaGrad · RMSProp · Adam

직관: 2-2의 골짜기는 방향마다 곡률이 달라 한 학습률로는 맞출 수 없었습니다. 그렇다면 파라미터마다 "지금까지 기울기가 얼마나 컸나"를 기억해, 컸던 방향은 걸음을 줄이고 작았던 방향은 키우면 됩니다.

AdaGrad: r←r+g⊙g,Δθ=−ϵδ+r⊙gRMSProp: r←ρ r+(1−ρ) g⊙g,Δθ=−ϵδ+r⊙gAdam: s←ρ1s+(1−ρ1)g,  r←ρ2r+(1−ρ2) g⊙g,Δθ=−ϵs^r^+δ\begin{aligned} \text{AdaGrad: }& \mathbf{r} \leftarrow \mathbf{r} + \mathbf{g}\odot\mathbf{g}, & \Delta\boldsymbol\theta &= -\frac{\epsilon}{\delta + \sqrt{\mathbf{r}}}\odot\mathbf{g}\\ \text{RMSProp: }& \mathbf{r} \leftarrow \rho\,\mathbf{r} + (1-\rho)\,\mathbf{g}\odot\mathbf{g}, & \Delta\boldsymbol\theta &= -\frac{\epsilon}{\sqrt{\delta + \mathbf{r}}}\odot\mathbf{g}\\ \text{Adam: }& \mathbf{s} \leftarrow \rho_1\mathbf{s} + (1-\rho_1)\mathbf{g},\ \ \mathbf{r} \leftarrow \rho_2\mathbf{r} + (1-\rho_2)\,\mathbf{g}\odot\mathbf{g}, & \Delta\boldsymbol\theta &= -\epsilon\frac{\hat{\mathbf{s}}}{\sqrt{\hat{\mathbf{r}}} + \delta} \end{aligned}
기호뜻
r\mathbf{r}기울기 제곱의 누적(AdaGrad) 또는 이동 평균(RMSProp · Adam)
s\mathbf{s}기울기의 이동 평균(Adam의 '모멘텀' 부분)
ρ,ρ1,ρ2\rho, \rho_1, \rho_2이동 평균 감쇠율
s^,r^\hat{\mathbf{s}}, \hat{\mathbf{r}}편향 보정 값 s/(1−ρ1t)\mathbf{s}/(1-\rho_1^t), r/(1−ρ2t)\mathbf{r}/(1-\rho_2^t)
δ\delta0으로 나누지 않게 하는 작은 수
⊙\odot성분별 곱

숫자로 해 보기(해설용):

  • AdaGrad, ϵ=0.1\epsilon = 0.1: 한 파라미터의 기울기는 늘 1, 다른 파라미터는 늘 10이라 합시다. 첫 걸음 크기는 둘 다 0.1⋅g/g2=0.10.1 \cdot g/\sqrt{g^2} = 0.1, 둘째는 둘 다 0.07070.0707, 셋째는 0.05770.0577입니다. 기울기 크기가 10배 달라도 걸음은 같아졌습니다. 대신 r\mathbf{r}이 계속 쌓여 걸음이 1/k1/\sqrt{k}로 줄어드는데, 이것이 깊은 망에서 너무 일찍 멈추는 단점입니다. RMSProp은 누적 대신 이동 평균을 써서 이 문제를 줄였습니다.
  • Adam 첫 걸음, g=0.5g = 0.5, ρ1=0.9\rho_1 = 0.9, ρ2=0.999\rho_2 = 0.999, ϵ=0.001\epsilon = 0.001: s=0.05s = 0.05, r=0.00025r = 0.00025이고, 편향 보정 후 s^=0.5\hat{s} = 0.5, r^=0.25\hat{r} = 0.25입니다. 걸음은 0.001×0.5/0.5=0.0010.001 \times 0.5/0.5 = 0.001입니다. 보정이 없으면 초기 평균이 0 쪽으로 치우쳐 걸음이 엉뚱해집니다. 자세한 내용은 Adam: 확률적 최적화 방법에서 봅니다.
mermaid
flowchart LR
  D[미니배치] --> G[기울기 g 계산]
  G --> R{정규화}
  R -->|L2 · L1 벌점| G2[g에 벌점 기울기 더하기]
  R -->|드롭아웃| G
  G2 --> O{최적화기}
  O --> S[SGD]
  O --> M[모멘텀]
  O --> A[AdaGrad · RMSProp · Adam]
  S --> U[파라미터 갱신 + 학습률 스케줄]
  M --> U
  A --> U
  U --> V[검증 손실 점검 → 조기 종료]

연습 문제

문제 1. L2 정규화에서 ϵ=0.01\epsilon = 0.01, α=0.5\alpha = 0.5이면 매 걸음 가중치에 곱해지는 감쇠 배율은? 풀이: 1−0.01×0.5=0.9951 - 0.01 \times 0.5 = 0.995입니다. 기울기 항이 0이라면 100걸음 뒤 약 0.995100≈0.6060.995^{100} \approx 0.606배가 됩니다.

문제 2. 1-3의 단순한 경우에서 α=0.5\alpha = 0.5, w∗=−0.8w^* = -0.8일 때 L1 해와 L2 해는? 풀이: L1은 −max⁡(0.8−0.5,0)=−0.3-\max(0.8 - 0.5, 0) = -0.3, L2는 −0.8/1.5≈−0.533-0.8/1.5 \approx -0.533입니다.

문제 3. 남길 확률 p=0.8p = 0.8인 역 드롭아웃에서 남은 뉴런 값에 곱하는 수는? 그 이유는? 풀이: 1/0.8=1.251/0.8 = 1.25입니다. 평균적으로 80%만 남으므로 1.25배 해야 출력 기댓값이 원래와 같아집니다.

문제 4. f=12(x2+100y2)f = \frac12(x^2 + 100y^2)에서 경사 하강이 발산하지 않는 학습률의 상한은? 풀이: 각 방향 갱신 배율 ∣1−ϵλ∣|1 - \epsilon\lambda|가 1보다 작아야 하므로 ϵ<2/100=0.02\epsilon < 2/100 = 0.02입니다. 본문의 0.019는 이 한계 바로 아래라 yy가 크게 흔들렸습니다.

스스로 점검

  1. 조기 종료가 정규화로 분류되는 이유는?
    • 답: 학습 손실을 더 줄일 수 있는데도 일부러 멈춰, 일반화 오차를 줄이려는 수정이기 때문입니다. 걸음 수가 파라미터가 갈 수 있는 거리를 제한해 L2와 비슷한 효과를 냅니다.
  2. 모멘텀이 좁은 골짜기에서 지그재그를 줄이는 원리는?
    • 답: 부호가 번갈아 바뀌는 방향의 기울기는 속도에서 서로 상쇄되고, 같은 방향으로 계속되는 기울기만 쌓이기 때문입니다.
  3. AdaGrad와 RMSProp의 차이는?
    • 답: AdaGrad는 기울기 제곱을 처음부터 모두 더해 걸음이 계속 줄고, RMSProp은 지수 이동 평균을 써서 오래된 기울기를 잊으므로 걸음이 지나치게 줄지 않습니다.

용어 정리

용어쉬운 뜻
일반화 오차(generalization error)처음 보는 데이터에서의 오차
정규화(regularization)일반화 오차를 줄이려고 학습에 가하는 모든 수정
가중치 감쇠(weight decay)L2 벌점 — 매 걸음 가중치를 조금씩 줄이는 효과
희소성(sparsity)많은 가중치가 정확히 0인 상태
조기 종료(early stopping)검증 손실이 더 나아지지 않으면 학습을 멈추는 방법
데이터 증강(data augmentation)정답이 바뀌지 않는 변형으로 학습 데이터를 늘리기
드롭아웃(dropout)학습 중 뉴런을 무작위로 끄는 방법
앙상블(ensemble)여러 모델의 예측을 합치는 방법
조건수(condition number)가장 큰 곡률과 가장 작은 곡률의 비 — 클수록 최적화가 어려움
안장점(saddle point)기울기는 0이지만 어떤 방향으론 오르고 어떤 방향으론 내려가는 점
모멘텀(momentum)지난 기울기를 속도로 쌓아 움직이는 방법
적응형 학습률(adaptive learning rate)파라미터마다 걸음 크기를 따로 조절하는 방법

더 깊이 보려면

  • 7장 Regularization for Deep Learning — 매개변수 노름 벌점, 데이터 증강, 조기 종료, 매개변수 공유, 앙상블, 드롭아웃, 적대적 학습
  • 8장 Optimization for Training Deep Models — 신경망 최적화의 어려움, 기본 알고리즘, 초기화, 적응형 학습률
  • 11장 Practical Methodology — 하이퍼파라미터 고르기와 디버깅 요령

다음에 볼 것

라이선스

원 책은 MIT Press 출간본으로 저작권이 보호되며, 저자 사이트는 출판 계약상 PDF 배포가 금지되고 웹판은 HTML 형식으로만 제공된다고 밝힙니다. 이 페이지는 책을 번역하거나 옮긴 것이 아니라, 책이 다루는 개념을 바탕으로 새로 쓴 해설입니다. 식은 표준 표기로 다시 썼고 숫자 예는 모두 직접 만들었습니다.

출처

  • 원문: https://www.deeplearningbook.org/ (Goodfellow · Bengio · Courville, 2016)
  • 목차(7장 · 8장 · 11장 제목)와 PDF · 인쇄 안내: 저자 사이트 확인
  • 주의: 웹판 본문이 복사 방지 형식이라 세부 절 번호와 문장은 인용하지 않았습니다.

AI 원리부터 이해하기 · 딥러닝 기초 모듈

딥러닝 기초 모듈 학습

이 글은 딥러닝 기초 모듈의 학습 자료입니다. 전체 29개 자료 중 27번째입니다.

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

출처·원문

원문 보기

요약만

저작권 보호(무료 웹판)