검색
← 모듈 로드맵

딥러닝 이해하기

교재 · 준전문가 · Simon J. D. Prince

원제 · Understanding Deep Learning

손실 함수를 최대우도로 만드는 조리법 · 깊이의 이점 · He 초기화를 숫자로 익히는 수업

먼저 알아야 할 것

최대우도 추정정규분포 · 로그소프트맥스 · 교차 엔트로피역전파

다루는 내용

Prince의 『딥러닝 이해하기』 3~5장 · 7장을 바탕으로 한 자체 수업입니다. 정규분포 · 베르누이 · 범주형 분포에서 음의 로그우도를 최소화하면 MSE와 이진 · 다중 교차 엔트로피가 나오는 과정을 유도합니다. ReLU 얕은 망과 깊은 망이 만드는 선형 조각 수를 손으로 세어 보고, 가중치 분산을 2/D_h로 잡는 He 초기화와 기울기 소실 · 폭발을 계산합니다.

해설

딥러닝 이해하기 — 수업: 손실 함수는 어디서 오나 · 깊이 · 초기화

Simon Prince의 『딥러닝 이해하기(UDL)』 3~5장과 7장의 핵심 생각을 우리 말로 다시 짠 수업입니다. MSE와 교차 엔트로피를 "외워서 쓰는 공식"이 아니라 하나의 조리법(최대우도)에서 나오는 결과로 이해하고, 얕은 망 · 깊은 망이 함수를 만드는 방식, 가중치를 처음에 어떤 크기로 뿌려야 기울기가 사라지거나 폭발하지 않는지까지 숫자로 따라갑니다.

항목내용
출처Understanding Deep Learning · Simon J. D. Prince · The MIT Press(2023) · 무료 PDF udlbook.github.io/udlbook
트랙 · 수준딥러닝 기초 · 중급
이 수업이 다루는 범위3장 얕은 신경망, 4장 깊은 신경망, 5장 손실 함수, 7장 기울기와 초기화
형식원문 번역이 아닌 자체 해설 · 숫자 예는 해설용으로 직접 만든 것 · 수식 표기는 책을 따름

들어가기 전에

한눈에 보기

  • 손실 함수를 만드는 하나의 조리법: "출력 분포를 고르고 → 모델이 그 분포의 모수를 예측하게 하고 → 음의 로그우도를 최소화" 를 익힙니다.
  • 그 조리법에서 회귀는 최소제곱(MSE), 이진 분류는 이진 교차 엔트로피, 다중 분류는 다중 교차 엔트로피가 자동으로 나오는 것을 확인합니다.
  • ReLU 얕은 망이 '꺾인 직선'을 만들고, 깊은 망은 같은 뉴런 수로 훨씬 많은 꺾임을 만든다는 것을 손으로 그려 봅니다.
  • 가중치 분산을 2/Dh2/D_h(He 초기화)로 잡는 이유와, 잘못 잡으면 층마다 신호가 몇 배씩 줄거나 커지는지 계산합니다.

1. 얕은 신경망은 '꺾인 직선'을 만든다 (3장)

직관(해설용 비유): 짧은 자 여러 개를 이어 붙여 곡선을 흉내 내는 일입니다. 은닉 뉴런 하나가 '꺾이는 점' 하나를 만들고, 출력층이 각 자의 기울기를 정합니다.

단계:

  1. 입력 xx로 직선 θd0+θd1x\theta_{d0} + \theta_{d1}x를 은닉 단위 수만큼 만듭니다.
  2. 각 직선을 ReLU a[⋅]a[\cdot]에 통과시켜 음수 부분을 0으로 자릅니다.
  3. 결과에 가중치 ϕd\phi_d를 곱해 더하고 ϕ0\phi_0을 더합니다.
  4. 결과는 꺾이는 점이 최대 은닉 단위 수만큼 있는 조각별 선형 함수입니다.
y=ϕ0+∑d=1Dϕd a[θd0+θd1x],a[z]=max⁡(0,z)y = \phi_0 + \sum_{d=1}^{D} \phi_d\, a\big[\theta_{d0} + \theta_{d1}x\big], \qquad a[z] = \max(0, z)
기호뜻
x, yx,\ y입력과 출력(스칼라)
DD은닉 단위 수
θd0, θd1\theta_{d0},\ \theta_{d1}dd번째 은닉 단위의 절편 · 기울기
ϕ0, ϕd\phi_0,\ \phi_d출력층 편향 · 가중치
a[⋅]a[\cdot]활성화 함수(ReLU)

숫자로 해 보기(해설용): D=3D = 3, 은닉 단위를 a[x], a[x−1], a[x−2]a[x],\ a[x-1],\ a[x-2]로, 출력을 y=a[x]−2a[x−1]+a[x−2]y = a[x] - 2a[x-1] + a[x-2]로 두면

xx0.51.52.53
yy0.50.500

입니다. x=1x=1까지 오르고, 1∼21 \sim 2에서 내려가고, 22 이후 평평한 '삼각 봉우리'가 됩니다. 이런 봉우리를 많이 더하면 어떤 연속 함수든 원하는 만큼 가깝게 흉내 낼 수 있다는 것이 보편 근사 정리(universal approximation theorem)의 직관입니다.

왜 이렇게 하나: 이 관점은 "신경망은 블랙박스"라는 막연함을 없앱니다. 은닉 단위 하나가 하는 일이 꺾임 하나로 눈에 보이기 때문에, 몇 개가 필요할지 · 왜 더 많으면 더 복잡한 함수를 만드는지 셀 수 있습니다.

2. 깊이가 주는 것: 접어서 곱으로 늘리기 (4장)

직관(해설용 비유): 종이를 반으로 접고 그 위에 가위질 한 번을 하면, 펼쳤을 때 자국이 두 개입니다. 한 번 더 접고 자르면 네 개, 또 접으면 여덟 개입니다. 깊은 망의 각 층은 앞 층이 만든 공간을 '접어서' 다음 층에 넘깁니다.

단계:

  1. 첫 층이 입력을 접습니다. 예: g(x)=a[x]+a[−x]=∣x∣g(x) = a[x] + a[-x] = |x| (ReLU 두 개).
  2. 다음 층은 접힌 결과에 다시 같은 모양의 함수를 씌웁니다.
  3. 앞 층의 꺾임 각각에서 뒤 층의 꺾임이 복제되어, 조각 수가 곱으로 늘어납니다.
h1=g(x),h2=g(h1−1),h3=g(h2−0.5),g(z)=a[z]+a[−z]h_1 = g(x), \quad h_2 = g(h_1 - 1), \quad h_3 = g(h_2 - 0.5), \qquad g(z) = a[z] + a[-z]

숫자로 해 보기(해설용, 직접 만든 예):

xx−2−1.5−1−0.500.511.52
h1=∣x∣h_1 = \lvert x\rvert21.510.500.511.52
h2h_210.500.510.500.51
h3h_30.500.500.500.500.5

h1h_1은 직선 조각 2개, h2h_2는 꺾임이 −1,0,1-1, 0, 1에 있어 4개, h3h_3은 꺾임이 7개라 8개입니다. 층마다 ReLU 2개, 모두 6개로 조각 8개를 만들었습니다. 얕은 망은 조각 8개를 만들려면 꺾임 7개, 즉 은닉 단위가 최소 7개 필요합니다. 층을 더 쌓으면 이 차이는 지수적으로 벌어집니다.

왜 이렇게 하나: 책 4장은 얕은 망을 합성하는 것(Composing networks)에서 출발해 깊은 망이 같은 파라미터 수로 훨씬 많은 선형 영역을 만들 수 있음을 설명합니다. 실제 데이터에 반복 구조가 많기 때문에 이 '접기'가 효율적으로 맞아떨어진다는 것이 깊이를 쓰는 이유 중 하나입니다. 다만 깊으면 학습이 어려워지는 문제가 생기는데, 그것이 4절의 초기화입니다.

3. 손실 함수의 조리법: 최대우도 (5장)

직관: 모델이 "정답 하나"를 뱉는 대신 "정답이 어디쯤 있을지에 대한 확률 분포"를 뱉는다고 생각합니다. 좋은 모델이란 실제 정답들에 높은 확률을 준 모델입니다. 그 확률을 최대로 만드는 것이 학습입니다.

단계(책 5장의 조리법을 요약):

  1. 정답 yy의 종류에 맞는 확률 분포를 고릅니다(실수 → 정규분포, 0/1 → 베르누이, 여러 범주 → 범주형).
  2. 신경망 f[x,ϕ]\mathbf{f}[\mathbf{x}, \boldsymbol\phi]가 그 분포의 모수 θ\boldsymbol\theta를 예측하게 합니다.
  3. 학습 데이터 전체의 우도 ∏iPr(yi∣f[xi,ϕ])\prod_i Pr(\mathbf{y}_i \mid \mathbf{f}[\mathbf{x}_i, \boldsymbol\phi])를 최대로 만드는 ϕ\boldsymbol\phi를 찾습니다.
  4. 곱은 다루기 어려우니 로그를 씌워 합으로 바꾸고, 부호를 바꿔 '최소화' 문제로 씁니다.
ϕ^=argminϕ[L[ϕ]],L[ϕ]=−∑i=1Ilog⁡[Pr(yi∣f[xi,ϕ])]\hat{\boldsymbol\phi} = \mathop{\mathrm{argmin}}_{\boldsymbol\phi}\Big[L[\boldsymbol\phi]\Big], \qquad L[\boldsymbol\phi] = -\sum_{i=1}^{I} \log\Big[Pr\big(\mathbf{y}_i \mid \mathbf{f}[\mathbf{x}_i, \boldsymbol\phi]\big)\Big]
기호뜻
xi, yi\mathbf{x}_i,\ \mathbf{y}_iii번째 학습 예제의 입력과 정답
II학습 예제 수
f[x,ϕ]\mathbf{f}[\mathbf{x}, \boldsymbol\phi]파라미터 ϕ\boldsymbol\phi를 가진 신경망의 출력
Pr(y∣⋅)Pr(\mathbf{y} \mid \cdot)정답이 나올 확률(밀도)
L[ϕ]L[\boldsymbol\phi]음의 로그우도(negative log-likelihood) — 손실

로그를 씌워도 최대가 되는 위치는 바뀌지 않고(로그는 증가 함수), 작은 확률을 여러 번 곱할 때의 아래넘침도 피할 수 있습니다. 예측할 때는 분포에서 가장 확률이 높은 값을 고릅니다.

3-1. 회귀 → 정규분포 → 최소제곱

정답이 실수라면 y∼N(μ,σ2)y \sim \mathcal{N}(\mu, \sigma^2)로 두고, 신경망이 평균 μ=f[x,ϕ]\mu = f[\mathbf{x}, \boldsymbol\phi]를 예측하게 합니다.

L=−∑ilog⁡[12πσ2exp⁡(−(yi−f[xi,ϕ])22σ2)]=∑i[12log⁡(2πσ2)+(yi−fi)22σ2]L = -\sum_i \log\left[\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(y_i - f[\mathbf{x}_i,\boldsymbol\phi])^2}{2\sigma^2}\right)\right] = \sum_i\left[\frac{1}{2}\log(2\pi\sigma^2) + \frac{(y_i - f_i)^2}{2\sigma^2}\right]

첫 항과 1/(2σ2)1/(2\sigma^2)은 ϕ\boldsymbol\phi와 상관없는 상수이므로, 최소화할 것은 ∑i(yi−fi)2\sum_i (y_i - f_i)^2, 즉 최소제곱 손실만 남습니다.

숫자로 해 보기(해설용): 잔차 yi−fiy_i - f_i가 (1,−2,0.5)(1, -2, 0.5), σ2=1\sigma^2 = 1이라 합시다. 제곱합은 1+4+0.25=5.251 + 4 + 0.25 = 5.25입니다. 음의 로그우도는 5.25/2+3×0.9189≈2.625+2.757=5.3825.25/2 + 3 \times 0.9189 \approx 2.625 + 2.757 = 5.382입니다. 차이는 상수 2.7572.757뿐이라, 어느 쪽을 줄여도 같은 ϕ\boldsymbol\phi에 도착합니다.

덤: 신경망이 σ2\sigma^2까지 입력마다 예측하게 하면(책의 이분산 회귀), "이 예측은 얼마나 불확실한가"도 함께 배웁니다. MSE를 그냥 쓰면 이 선택지가 보이지 않습니다.

3-2. 이진 분류 → 베르누이 → 이진 교차 엔트로피

정답이 0/1이면 베르누이 분포 Pr(y∣λ)=(1−λ)1−yλyPr(y \mid \lambda) = (1-\lambda)^{1-y}\lambda^{y}를 씁니다. 신경망 출력은 아무 실수나 될 수 있으니 시그모이드 sig[z]=1/(1+e−z)\mathrm{sig}[z] = 1/(1+e^{-z})로 (0,1)(0,1)에 넣어 λ\lambda로 씁니다.

L=∑i−(1−yi)log⁡[1−sig[fi]]−yilog⁡[sig[fi]]L = \sum_i -(1-y_i)\log\big[1 - \mathrm{sig}[f_i]\big] - y_i \log\big[\mathrm{sig}[f_i]\big]

숫자로 해 보기(해설용): 정답 1에 λ=0.9\lambda = 0.9를 주면 손실 −log⁡0.9≈0.105-\log 0.9 \approx 0.105, λ=0.1\lambda = 0.1을 주면 −log⁡0.1≈2.303-\log 0.1 \approx 2.303입니다. 크게 틀린 쪽이 약 22배 비쌉니다.

3-3. 다중 분류 → 범주형 분포 → 다중 교차 엔트로피

KK개 범주는 Pr(y=k)=λkPr(y = k) = \lambda_k인 범주형 분포를 쓰고, 소프트맥스로 λk\lambda_k를 만듭니다.

L=−∑ilog⁡[softmaxyi[f[xi,ϕ]]]=−∑i(fyi−log⁡∑k′=1Kexp⁡fk′)L = -\sum_i \log\Big[\mathrm{softmax}_{y_i}\big[\mathbf{f}[\mathbf{x}_i, \boldsymbol\phi]\big]\Big] = -\sum_i\left(f_{y_i} - \log\sum_{k'=1}^{K} \exp f_{k'}\right)

두 번째 꼴은 D2L 수업의 log-sum-exp와 같은 식입니다. 결국 우리가 쓰던 세 손실은 모두 "분포를 하나 고른 뒤의 음의 로그우도"였습니다.

3-4. 교차 엔트로피라는 이름의 이유

책은 같은 결론을 KL 발산(Kullback–Leibler divergence)으로도 보입니다. 데이터의 경험 분포 qq와 모델 분포 PrPr 사이의 KL 발산을 최소화하면, qq에만 관계된 항이 빠지고 −∫q(y)log⁡Pr(y) dy-\int q(y)\log Pr(y)\,dy, 즉 교차 엔트로피만 남습니다. qq가 데이터 점마다 뾰족한 분포이므로 이것은 다시 음의 로그우도의 평균입니다. 그래서 "음의 로그우도 최소화 = 교차 엔트로피 최소화"입니다.

mermaid
flowchart LR
  Y[정답의 종류] --> D{분포 고르기}
  D -->|실수| N[정규분포] --> M[최소제곱 MSE]
  D -->|0 또는 1| B[베르누이 + 시그모이드] --> BC[이진 교차 엔트로피]
  D -->|K개 범주| C[범주형 + 소프트맥스] --> CE[다중 교차 엔트로피]
  M --> O[음의 로그우도 최소화]
  BC --> O
  CE --> O

4. 기울기 소실 · 폭발과 초기화 (7장)

직관(해설용 비유): 전화 게임에서 한 사람이 들은 말을 늘 절반 크기로 전하면, 열 명을 거친 뒤엔 거의 안 들립니다. 늘 두 배로 외치면 열 명 뒤엔 귀가 찢어집니다. 층을 지날 때마다 신호의 분산이 일정 배율로 변하는데, 그 배율이 1에서 멀면 깊은 망은 학습이 안 됩니다. 역전파의 기울기도 같은 길을 거꾸로 지나므로 똑같이 줄거나 커집니다.

단계:

  1. 은닉층 DhD_h개 단위의 출력 hjh_j가 다음 층 가중치 Ω\Omega를 거쳐 더해집니다.
  2. 가중치를 평균 0, 분산 σΩ2\sigma_\Omega^2로 뿌리면 다음 층 사전활성값 분산은 대략 DhσΩ2×E[hj2]D_h \sigma_\Omega^2 \times \mathbb{E}[h_j^2]입니다.
  3. ReLU는 입력의 절반(음수 쪽)을 0으로 만들어, 대칭 분포에서 E[hj2]\mathbb{E}[h_j^2]가 앞 층 사전활성 분산의 절반이 됩니다.
  4. 그래서 층 하나를 지날 때 분산 배율은 12DhσΩ2\frac{1}{2}D_h\sigma_\Omega^2입니다. 이것을 1로 맞추면 됩니다.
σf′2=12Dh σΩ2 σf2⟹σΩ2=2Dh\sigma^2_{f'} = \frac{1}{2} D_h\, \sigma_\Omega^2\, \sigma_f^2 \quad\Longrightarrow\quad \sigma_\Omega^2 = \frac{2}{D_h}
기호뜻
DhD_h앞 층 은닉 단위 수(들어오는 연결 수)
σΩ2\sigma_\Omega^2가중치를 뿌리는 분산
σf2, σf′2\sigma_f^2,\ \sigma^2_{f'}앞 층 · 다음 층 사전활성값의 분산
12\frac12ReLU가 절반을 0으로 만드는 효과

이것이 He 초기화입니다. 역전파 쪽에서 같은 논리를 쓰면 나가는 연결 수 Dh′D_{h'}로 σΩ2=2/Dh′\sigma_\Omega^2 = 2/D_{h'}가 나오고, 책은 두 층 크기가 다를 때 절충안으로 σΩ2=4/(Dh+Dh′)\sigma_\Omega^2 = 4/(D_h + D_{h'})를 제시합니다.

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

  • Dh=100D_h = 100이면 σΩ2=0.02\sigma_\Omega^2 = 0.02, 표준편차 약 0.1410.141로 뿌립니다.
  • 배율이 0.50.5인 잘못된 초기화(예: σΩ2=1/Dh\sigma_\Omega^2 = 1/D_h에 ReLU)라면 10층 뒤 분산은 0.510≈0.0010.5^{10} \approx 0.001, 50층 뒤엔 0.550≈8.9×10−160.5^{50} \approx 8.9 \times 10^{-16}으로 사실상 0입니다(기울기 소실).
  • 배율이 22라면 10층 뒤 210=10242^{10} = 1024배로 커집니다(기울기 폭발).
  • 시그모이드는 기울기 최댓값이 0.250.25라, 가중치를 잘 맞춰도 10층에서 최대 0.2510≈9.5×10−70.25^{10} \approx 9.5 \times 10^{-7}배까지 줄 수 있습니다. ReLU가 깊은 망의 기본이 된 이유 중 하나입니다.

왜 이렇게 하나: 학습률을 아무리 조절해도 앞쪽 층 기울기가 10−1510^{-15}이면 그 층은 사실상 고정됩니다. 초기화는 "학습이 시작될 수 있는 출발점"을 만드는 일입니다. 이후 배치 정규화 · 잔차 연결 같은 구조가 이 문제를 구조적으로 더 줄였습니다.

연습 문제

문제 1. 정답이 0 이상의 개수(예: 하루 방문자 수)라면 조리법상 어떤 분포를 고르는 게 자연스럽고, 신경망 출력에는 어떤 처리가 필요할까요? 풀이: 개수 데이터는 푸아송 분포가 자연스럽습니다. 모수 λ>0\lambda > 0이어야 하므로 출력에 exp⁡\exp 같은 양수 변환을 씌우고, 음의 로그우도를 손실로 씁니다(해설용 예).

문제 2. 3-1의 잔차가 (2,0,−1)(2, 0, -1), σ2=1\sigma^2 = 1일 때 제곱합과 음의 로그우도를 구하세요. 풀이: 제곱합 4+0+1=54 + 0 + 1 = 5, 음의 로그우도 5/2+3×0.9189≈5.2575/2 + 3 \times 0.9189 \approx 5.257입니다.

문제 3. 들어오는 연결이 512개인 ReLU 층의 He 초기화 표준편차는? 풀이: σΩ2=2/512=0.00390625\sigma_\Omega^2 = 2/512 = 0.00390625, 표준편차 =0.0039≈0.0625= \sqrt{0.0039} \approx 0.0625입니다.

문제 4. 2절의 '접기' 층을 하나 더 쌓으면(층당 ReLU 2개) 조각은 몇 개가 될 수 있나요? 풀이: 층마다 2배이므로 16개입니다. 얕은 망으로는 꺾임 15개, 은닉 단위 15개 이상이 필요합니다.

스스로 점검

  1. MSE 손실을 쓰는 것은 정답에 대해 어떤 가정을 한 것과 같나요?
    • 답: 정답이 모델 예측을 평균으로 하고 분산이 일정한 정규분포를 따른다고 가정한 것과 같습니다.
  2. 음의 로그우도에 로그를 쓰는 두 가지 이유는?
    • 답: 곱을 합으로 바꿔 미분 · 계산이 쉬워지고, 작은 확률을 여러 번 곱할 때의 아래넘침을 피합니다. 로그는 증가 함수라 최적점도 그대로입니다.
  3. He 초기화에서 분모가 DhD_h, 분자가 2인 이유는?
    • 답: 연결이 DhD_h개 더해지며 분산이 DhD_h배 커지는 것을 상쇄하고, ReLU가 절반을 0으로 만들어 줄어드는 12\frac12을 2로 보정하기 위해서입니다.

용어 정리

용어쉬운 뜻
조각별 선형 함수(piecewise linear)여러 직선 조각을 이어 붙인 함수
보편 근사 정리(universal approximation)은닉 단위가 충분하면 얕은 망도 연속 함수를 원하는 만큼 흉내 낼 수 있다는 결과
최대우도(maximum likelihood)관측된 데이터가 나올 확률을 가장 크게 하는 파라미터를 고르는 원리
음의 로그우도(NLL)우도에 로그를 씌우고 부호를 바꾼 값 — 최소화할 손실
베르누이 분포0 또는 1만 나오는 분포, 모수 λ\lambda는 1이 나올 확률
범주형 분포(categorical)KK개 중 하나가 나오는 분포
KL 발산두 확률 분포가 얼마나 다른지 재는 양
기울기 소실 · 폭발층을 지날수록 기울기가 0으로 줄거나 무한히 커지는 현상
He 초기화ReLU 망에서 가중치 분산을 2/Dh2/D_h로 잡는 초기화

더 깊이 보려면

  • 책 5장 손실 함수 — 이분산 회귀, 여러 출력, 원형 데이터(폰 미제스 분포) 같은 다른 분포의 예
  • 책 6장 모델 맞추기 — SGD · 모멘텀 · Adam
  • 책 7장 기울기와 초기화 — 역전파 유도와 순방향 · 역방향 초기화 분석
  • 장별 노트북: 5_1 최소제곱 손실, 5_2 이진 교차 엔트로피, 5_3 다중 교차 엔트로피, 7_3 초기화(책 저장소 Notebooks 폴더)

다음에 볼 것

라이선스

원 책 PDF 판권면에 따르면 MIT Press에 독점 허락된 저작물이며 크리에이티브 커먼즈 CC BY-NC-ND(저작자표시 · 비영리 · 변경 금지) 조건입니다. 번역 · 변형이 허용되지 않으므로, 이 페이지는 책을 옮긴 것이 아니라 책의 개념을 바탕으로 새로 쓴 해설입니다. 수식 표기만 책을 따랐고 숫자 예는 모두 직접 만들었습니다. 책 저장소의 노트북 코드는 MIT 라이선스입니다.

출처

  • 원문: https://udlbook.github.io/udlbook/ (Simon J. D. Prince, 2023)
  • 5장 손실 함수 · 7장 초기화 식: 저자 저장소의 UDL_Equations.tex 확인(https://github.com/udlbook/udlbook)
  • 장별 노트북 이름: 저장소 Notebooks/Chap04 · Chap05 · Chap07 폴더 확인

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

딥러닝 기초 모듈 학습

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

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

출처·원문

원문 보기

요약만

CC BY-NC-ND (PDF 판권면 확인)