신경망과 딥러닝
시그모이드 뉴런부터 역전파 네 방정식 · 교차 엔트로피까지 손계산으로 배우는 수업
먼저 알아야 할 것
다루는 내용
Nielsen의 『신경망과 딥러닝』 1~3장을 바탕으로 한 자체 수업입니다. 시그모이드 뉴런과 층 구조의 순전파를 행렬 모양까지 맞춰 보고, 역전파 네 방정식(BP1~BP4)으로 2-2-1 신경망의 기울기를 직접 계산해 한 번 갱신합니다. 제곱 오차 대신 교차 엔트로피를 쓰면 크게 틀렸을 때 학습이 빨라지는 이유도 식과 숫자로 확인합니다.
해설
신경망과 딥러닝 — 수업: 뉴런 · 순전파 · 역전파를 손으로 계산하기
Michael Nielsen의 무료 책 『신경망과 딥러닝』 1~3장의 핵심을 우리 말로 다시 짠 수업입니다. 시그모이드 뉴런에서 시작해, 작은 신경망 하나를 직접 앞으로 계산하고(순전파) 거꾸로 미분해(역전파) 가중치를 한 번 고쳐 봅니다. 이 페이지만 읽어도 "신경망이 어떻게 배우는가"를 숫자로 설명할 수 있게 하는 것이 목표입니다.
| 항목 | 내용 |
|---|---|
| 출처 | Neural Networks and Deep Learning · Michael A. Nielsen · Determination Press(온라인 무료판) · neuralnetworksanddeeplearning.com |
| 트랙 · 수준 | 딥러닝 기초 · 기초 |
| 이 수업이 다루는 범위 | 책 1장(시그모이드 뉴런 · 신경망 구조 · 경사 하강법), 2장(역전파 네 방정식), 3장 첫 절(교차 엔트로피 비용) |
| 형식 | 원문 번역이 아닌 자체 해설 · 숫자 예는 모두 해설용으로 직접 만든 것 |
들어가기 전에
- 퍼셉트론: 뇌의 정보 저장과 조직에 관한 확률 모델 — '가중합 → 문턱' 뉴런이 무엇인지 먼저 보면, 시그모이드 뉴런이 왜 필요한지 바로 보입니다.
- 머신러닝을 위한 수학 — 행렬 곱, 편미분, 연쇄 법칙(chain rule)을 이 수업에서 계속 씁니다.
- 스탠퍼드 CS229 머신러닝 강의 노트 — 로지스틱 회귀와 경사 하강법을 알면, 뉴런 하나가 곧 로지스틱 회귀라는 점이 자연스럽습니다.
한눈에 보기
- 시그모이드 뉴런이 퍼셉트론과 무엇이 다르고, 왜 '부드러운' 출력이 학습에 필요한지 압니다.
- 층이 여러 개인 신경망의 순전파를 행렬 곱으로 쓰고, 각 행렬의 모양(shape)을 맞출 수 있습니다.
- 역전파의 네 방정식(BP1~BP4)이 각각 무엇을 계산하는지 설명할 수 있습니다.
- 입력 2개 · 은닉 2개 · 출력 1개짜리 신경망을 손으로 순전파 → 역전파 → 가중치 갱신까지 해 봅니다.
- 제곱 오차 대신 교차 엔트로피를 쓰면 왜 "많이 틀렸을 때 더 빨리 배우는지" 식으로 이해합니다.
1. 시그모이드 뉴런
직관(해설용 비유): 퍼셉트론은 "켜짐/꺼짐"만 있는 전등 스위치이고, 시그모이드 뉴런은 밝기를 조금씩 돌릴 수 있는 디머 스위치입니다. 손잡이(가중치)를 살짝 돌리면 밝기(출력)도 살짝 변해야, 어느 쪽으로 돌려야 좋아지는지 알 수 있습니다.
단계:
- 입력 에 가중치를 곱해 더하고 편향을 더해 가중 입력 를 만듭니다.
- 를 시그모이드 함수 에 넣어 0과 1 사이의 출력 를 얻습니다.
- 가중치가 조금 바뀌면 가 조금 바뀌고, 출력도 조금만 바뀝니다. 퍼셉트론은 문턱을 넘는 순간 출력이 0에서 1로 뒤집힙니다.
| 기호 | 뜻 |
|---|---|
| 번째 입력 | |
| 번째 입력의 가중치 — 얼마나 중요하게 볼지 | |
| 편향(bias) — 얼마나 쉽게 켜지는지 | |
| 가중 입력(weighted input) | |
| 시그모이드 함수, 출력 범위 | |
| 시그모이드의 기울기, 최댓값은 에서 |
숫자로 해 보기(해설용): , , 이면 , 입니다. 입니다.
왜 이렇게 하나: 학습은 "가중치를 조금 바꾸면 비용이 얼마나 바뀌나"(미분)를 알아야 가능합니다. 계단 함수는 거의 모든 곳에서 기울기가 0이라 이 정보를 주지 못합니다. 책 1장은 이 점 때문에 퍼셉트론에서 시그모이드 뉴런으로 넘어갑니다.
2. 층을 쌓은 신경망과 순전파
직관: 뉴런 하나는 "직선 하나로 가르기" 정도만 합니다. 뉴런을 한 줄(층)로 세우고 그 출력을 다음 줄에 넘기면, 앞 층이 만든 특징을 뒤 층이 다시 조합해 더 복잡한 판단을 합니다.
단계:
- 0번 층은 입력 입니다.
- 번째 층은 앞 층 출력 에 가중치 행렬 을 곱하고 편향 벡터 을 더해 을 만듭니다.
- 성분마다 를 씌워 을 얻습니다.
- 마지막 층 의 출력 이 신경망의 답입니다.
| 기호 | 뜻 | 모양(shape) |
|---|---|---|
| 앞 층의 출력 | ||
| 층 가중치 행렬. 성분 는 앞 층 번 뉴런 → 이 층 번 뉴런 | ||
| 층 편향 | ||
| 층의 가중 입력과 출력 |
책은 의 첨자 순서를 "받는 쪽 , 보내는 쪽 "로 정합니다. 처음엔 거꾸로 같지만, 이렇게 해야 이 행렬 곱 그대로 맞아떨어집니다.
모양 맞추기 예: 책 1장의 손글씨 숫자 신경망은 층 크기가 입니다(28×28 픽셀 입력, 은닉 30개, 숫자 10개). 그러면 은 , 는 입니다. 가중치 수는 , 편향은 개입니다.
3. 비용 함수와 경사 하강법
직관: 비용 는 "얼마나 틀렸나"를 하나의 숫자로 잰 것입니다. 경사 하강법은 안개 낀 산에서 발밑 경사만 보고 가장 가파른 내리막으로 한 걸음씩 내려가는 일입니다.
| 기호 | 뜻 |
|---|---|
| 정답 | |
| 신경망의 출력 | |
| 학습률(learning rate) — 한 걸음 크기 |
책은 데이터 전체가 아니라 무작위로 뽑은 작은 묶음(미니배치)의 평균 기울기로 걷는 확률적 경사 하강법(SGD)을 씁니다. 1장 실험에서 저자는 신경망을 30에포크, 미니배치 크기 10, 으로 학습해 테스트 정확도 최고 95.42%를 보고합니다.
남은 문제는 하나입니다. 가중치가 수만 개일 때 를 어떻게 빨리 구하느냐입니다. 그 답이 역전파입니다.
4. 역전파의 네 방정식
직관(해설용 비유): 조립 라인 끝에서 불량품이 나왔을 때, 마지막 공정에서 "내 책임이 얼마인지"를 먼저 따지고, 그 책임을 앞 공정에 연결 세기만큼 나눠 넘기는 일입니다. 각 공정은 넘겨받은 책임으로 자기 손잡이(가중치)를 어떻게 돌릴지 바로 압니다.
단계:
- 순전파로 모든 층의 , 을 구해 저장합니다.
- 출력층의 오차 을 구합니다(BP1).
- 을 가중치를 거꾸로(전치) 거쳐 앞 층 로 보냅니다(BP2).
- 각 층의 로 편향 기울기(BP3)와 가중치 기울기(BP4)를 바로 읽습니다.
책은 '오차'를 로 정의합니다. 즉 "그 뉴런의 가중 입력을 살짝 바꾸면 비용이 얼마나 바뀌나"입니다.
| 기호 | 뜻 |
|---|---|
| 층의 오차 벡터, | |
| 출력 에 대한 비용의 기울기. 제곱 오차면 | |
| 아다마르 곱(Hadamard product) — 같은 자리끼리 곱하기 | |
| 다음 층 가중치의 전치 — 오차를 '거꾸로' 보내는 길 | |
| 그 가중치로 들어온 입력값 |
각 식의 뜻:
- BP1: 출력층 오차 = (출력이 비용을 얼마나 바꾸나) × (가중 입력이 출력을 얼마나 바꾸나). 연쇄 법칙 한 번입니다.
- BP2: 앞 층 뉴런의 책임 = 그 뉴런이 연결된 다음 층 오차들의 가중합 × 자기 기울기.
- BP3: 편향은 에 그냥 더해지므로 기울기가 곧 입니다.
- BP4: 가중치 기울기 = 들어온 입력 × 받는 쪽 오차. 입력이 0이면 그 가중치는 고칠 필요가 없습니다.
책 2장은 비용 함수에 두 가지 가정을 둡니다. 비용이 학습 예제별 비용의 평균으로 쓸 수 있어야 하고, 신경망 출력 의 함수여야 한다는 것입니다.
5. 숫자로 해 보기: 2-2-1 신경망 한 바퀴 (해설용)
설정(직접 만든 값): 입력 , 정답 , 비용 , 학습률 .
① 순전파
- ,
- ,
- 비용
② 출력층 오차 (BP1)
③ 출력층 기울기 (BP3 · BP4)
④ 은닉층 오차 (BP2)
⑤ 은닉층 기울기 (BP4) —
| () | () | |
|---|---|---|
⑥ 한 번 갱신 ( 기울기)
- ,
- ,
⑦ 확인: 새 가중치로 다시 순전파하면 , 비용 입니다. 한 번 고쳤더니 비용이 로 줄었습니다.
해석: 두 번째 은닉 뉴런은 출력에 로 연결돼 있어 출력을 깎아 먹습니다. 그래서 가 양수가 되고, 그 뉴런으로 들어가는 가중치는 줄어듭니다. 역전파가 "누구 탓인지"를 부호까지 정확히 나눠 준 것입니다.
왜 역전파가 빠른가: 가중치마다 따로 "조금 바꿔서 비용 다시 재기"를 하면 가중치 수만큼 순전파를 반복해야 합니다. 역전파는 순전파 한 번 + 역방향 한 번으로 모든 기울기를 동시에 얻습니다. 책 2장은 이를 "역전파가 빠른 알고리즘인 이유"로 따로 설명합니다.
flowchart LR
X[입력 x] --> F1[z1 = W1 x + b1, a1 = σ z1]
F1 --> F2[z2 = W2 a1 + b2, a2 = σ z2]
F2 --> C[비용 C]
C --> B1[BP1: δ2 = 출력 오차 × σ' z2]
B1 --> B2[BP2: δ1 = W2ᵀ δ2 × σ' z1]
B1 --> G2[BP3·BP4: W2, b2 기울기]
B2 --> G1[BP3·BP4: W1, b1 기울기]
G1 --> U[경사 하강 갱신]
G2 --> U6. 교차 엔트로피: 많이 틀렸을 때 더 빨리 배우기
문제: 책 3장은 뉴런 하나(입력 1, 정답 0, )로 실험합니다. 시작 가중치 · 편향이 이면 첫 출력이 약 이고 잘 배웁니다. 그런데 둘 다 에서 시작하면 첫 출력이 로 크게 틀렸는데도, 처음 약 150에포크 동안 거의 배우지 못합니다.
이유: 제곱 오차에서 기울기는 다음과 같습니다(입력 , 정답 ).
출력이 1 근처에 붙으면 시그모이드가 평평해져 가 거의 0입니다. 많이 틀렸는데도 기울기가 작으니 학습이 멈춘 듯 보입니다.
해결: 교차 엔트로피 비용을 씁니다.
| 기호 | 뜻 |
|---|---|
| 학습 예제 수 | |
| 자연로그 | |
| 출력과 정답의 차이 — 가 약분돼 사라짐 |
숫자로 해 보기(해설용): 위 두 시작점에서 기울기를 직접 계산하면 다음과 같습니다.
| 시작 | 출력 | 제곱 오차 기울기 | 교차 엔트로피 기울기 |
|---|---|---|---|
제곱 오차는 더 많이 틀린 쪽에서 기울기가 오히려 7배 작습니다. 교차 엔트로피는 틀린 만큼 기울기가 큽니다. 사람이 크게 틀렸을 때 더 빨리 배우는 것과 같은 성질입니다.
왜 이렇게 하나: 출력층이 시그모이드(또는 소프트맥스)라면 교차 엔트로피를 짝으로 쓰는 것이 거의 표준입니다. 이 짝은 다음 수업 D2L의 소프트맥스 회귀, 딥러닝 이해하기의 '최대우도로 손실 만들기'에서 다시 나옵니다.
연습 문제
문제 1. 층 크기가 인 신경망에서 , 의 모양과 전체 파라미터(가중치 + 편향) 수를 구하세요. 풀이: 은 , 는 입니다. 가중치 , 편향 , 합계 23개입니다.
문제 2. 5절 예에서 가 0이었다면 , 의 기울기는 얼마일까요? 풀이: BP4에서 기울기 이므로 둘 다 0입니다. 입력이 0이면 그 연결은 출력에 영향을 주지 않으니 고칠 이유가 없습니다.
문제 3. 시그모이드 뉴런 10층을 쌓았을 때, 각 층의 가 최댓값 0.25라도 BP2를 10번 거치면 오차는 대략 몇 배로 줄어들 수 있나요(가중치는 1로 가정)? 풀이: 배입니다. 앞쪽 층일수록 거의 배우지 못하는 '기울기 소실'이며, 책 5장의 주제입니다.
문제 4. 출력이 , 정답 일 때 제곱 오차 기울기 와 교차 엔트로피 기울기 를 비교하세요(). 풀이: 이므로 제곱 오차 기울기는 , 교차 엔트로피 기울기는 입니다.
스스로 점검
- 역전파에서 는 무엇의 미분인가요?
- 답: 비용 를 층 번 뉴런의 가중 입력 로 미분한 값입니다.
- BP2에서 왜 이 아니라 전치 를 곱하나요?
- 답: 순전파에서 로 갔던 연결을 거꾸로 로 따라가야 하기 때문입니다. 행렬 모양도 그래야 로 맞습니다.
- 교차 엔트로피가 시그모이드 출력에서 학습 정체를 막는 이유는?
- 답: 기울기 식에서 가 약분돼 사라지고 만 남아, 많이 틀릴수록 기울기가 커지기 때문입니다.
용어 정리
| 용어 | 쉬운 뜻 |
|---|---|
| 시그모이드 뉴런(sigmoid neuron) | 가중합을 0~1 사이로 부드럽게 바꿔 내보내는 뉴런 |
| 가중 입력(weighted input) | 활성화 함수에 넣기 전의 가중합 + 편향 |
| 순전파(forward pass) | 입력에서 출력까지 차례로 계산하기 |
| 역전파(backpropagation) | 비용의 미분을 출력에서 입력 쪽으로 거꾸로 전하는 계산 |
| 오차 | 비용을 가중 입력으로 미분한 값 — '그 뉴런의 책임' |
| 아다마르 곱(Hadamard product) | 같은 자리 성분끼리 곱하기 |
| 미니배치(mini-batch) | 기울기를 구할 때 쓰는 작은 무작위 묶음 |
| 교차 엔트로피(cross-entropy) | 확률 출력과 정답의 차이를 로그로 잰 비용 |
| 기울기 소실(vanishing gradient) | 층을 거칠수록 기울기가 작아져 앞층이 배우지 못하는 현상 |
더 깊이 보려면
- 책 2장 "역전파 알고리즘은 어떻게 작동하나" — 네 방정식의 증명과 NumPy 코드
- 책 3장 "신경망 학습 방법 개선하기" — 교차 엔트로피, 과적합 · 정규화(L1 · L2 · 드롭아웃 · 데이터 늘리기), 가중치 초기화, 하이퍼파라미터 고르기
- 책 5장 "깊은 신경망은 왜 학습하기 어려운가" — 기울기 소실 · 불안정한 기울기
다음에 볼 것
- 옵티마이저와 학습률 스케줄: SGD · 모멘텀 · RMSProp · Adam · AdamW — SGD부터 AdamW · 웜업 · 코사인 스케줄까지 직접 돌려 비교하는 수업
- 오차 역전파로 표현 학습하기 — 이 수업의 역전파를 처음 널리 알린 1986년 논문. 은닉 단위가 스스로 특징을 배운 예를 봅니다.
- 딥러닝 문서로 배우기 (D2L) — 소프트맥스 출력 · ReLU · 미니배치 학습 루프를 PyTorch 코드로 옮깁니다.
라이선스
원 책은 크리에이티브 커먼즈 저작자표시-비영리 3.0(CC BY-NC 3.0)입니다. 이 페이지는 원문 번역이 아니라 책의 개념을 바탕으로 새로 쓴 해설이며, 숫자 예는 직접 만든 것입니다. 책에서 가져온 사실(층 크기 · 실험 설정 · 정확도 등)은 출처를 밝혀 인용했습니다.
출처
- 원문: http://neuralnetworksanddeeplearning.com/ (Michael A. Nielsen)
- 1장 실험 설정 · 정확도, 2장 표기와 네 방정식, 3장 단일 뉴런 실험(, , , 약 150에포크): 책 본문 확인
AI 원리부터 이해하기 · 딥러닝 기초 모듈
딥러닝 기초 모듈 학습
이 글은 딥러닝 기초 모듈의 학습 자료입니다. 전체 29개 자료 중 5번째입니다.
출처·원문
원문 보기번역가능-비상업