신경망과
역전파
다층 신경망의 구조와 역전파를 살펴본다. 계산그래프로 미분을 계산하고, 분류 손실 함수와 깊은 신경망의 학습 문제를 알아본다.
다층 신경망과 역전파
은닉층을 사용하면 단층 퍼셉트론으로 풀 수 없는 XOR을 표현할 수 있다. 다층 신경망의 학습에는 중간층의 가중치에 대한 손실의 미분을 계산하는 방법이 필요하다. 1986년 Rumelhart, Hinton, Williams의 논문은 역전파를 통한 표현 학습을 널리 알렸다.
역전파는 연쇄법칙을 이용해 각 가중치에 대한 손실의 미분을 효율적으로 계산한다. 이 방법은 오늘날의 대규모 신경망 학습에도 사용된다.
계산그래프를 이용해 순전파 결과와 역전파의 미분값을 직접 계산한다.
출처 Rumelhart, Hinton & Williams, "Learning representations by back-propagating errors", Nature 323, 1986: nature.com
선형회귀와 경사하강법
선형회귀의 손실 함수를 정의하고, 기울기에 따라 파라미터를 갱신하는 경사하강법을 살펴본다.
데이터를 가장 잘 설명하는 직선
선형회귀는 f(x) = Wx + b의 W(기울기→가중치)와 b(절편→바이어스)를 찾는 문제다. "가장 잘"의 기준은 직선과 데이터 사이 간격이다.
변수가 하나뿐인 선형회귀는 미분해서 0이 되는 지점을 공식으로 바로 구할 수 있다(최소제곱법). 그런데도 굳이 "조금씩 내려가는" 반복법을 배우는 이유는, 신경망처럼 파라미터가 수백만 개인 문제에는 닫힌 공식이 없기 때문이다: 반복법만이 유일하게 통하는 일반 해법이다.
주의 하나: 회귀가 찾는 것은 상관관계이지 인과관계가 아니다. 아이스크림 판매량으로 익사 사고를 "예측"하는 직선은 잘 그어지지만, 아이스크림이 사고의 원인은 아니다(둘 다 여름의 결과다).
생각해 볼 질문: 잔차를 제곱하는 대신 절댓값을 쓰면 무엇이 달라지는가? 이상치(outlier) 하나가 있을 때 두 방식의 직선은 어떻게 다르게 반응할까?
경사하강법의 원리
손실 함수의 미분값(그래디언트)이 양수면 가중치를 줄이고, 음수면 키운다: 미분값의 반대 방향으로, 학습률 α만큼 움직이는 것이 경사하강법이다.
예: E(w) = (w−3)² 이면 dE/dw = 2w−6. w=0에서 미분 −6(음수) → w를 키운다 → 정답 3에 다가간다
학습률을 돌려 보며 골짜기 내려가기
실습 목표: 학습률이 "너무 작으면 느리고, 너무 크면 발산한다"를 눈으로 확인한다. 손실은 E(w) = (w−3)², 출발점은 w = −2다.
실습 방법: α=0.1, 0.9, 1.05로 각각 초기화하고 10스텝을 실행한다. 확인할 내용: 학습률에 따른 수렴 속도와 진동, 발산 여부를 비교한다. 수렴 가능한 학습률의 범위는 이 예제의 손실 함수에 대한 결과다.
이 포물선에서 발산 경계가 정확히 α=1인 것은 우연이 아니라 계산 결과다. w ← w − α(2w−6)를 정리하면 (w−3)이 매 스텝 (1−2α)배가 된다. |1−2α|<1이면 수렴, 즉 0<α<1. 실제 신경망의 손실 지형은 이렇게 깨끗한 포물선이 아니어서 안전한 학습률을 공식으로 못 구한다: 그래서 학습률은 지금도 실무에서 가장 먼저 튜닝하는 하이퍼파라미터다. 학습률이 지나치게 크면 최솟값을 넘어 진동하거나 발산할 수 있다. 모멘텀은 이전 갱신 방향을 반영해 학습을 개선하는 방법이다.
생각해 볼 질문: 학습 초반에는 크게, 후반에는 작게 움직이고 싶다. 학습률을 어떻게 다뤄야 할까? (실무의 "학습률 스케줄"이 그 답이다)
과대적합과 과소적합
학습 데이터 성적과 새 데이터 성적의 조합으로 모델의 상태를 진단한다. 둘 다 좋아야 일반화다.
진단 도구는 검증 손실 곡선이다. 훈련 손실은 계속 내려가는데 검증 손실이 어느 순간부터 올라가기 시작하면, 그 지점부터 모델은 일반화가 아니라 암기를 한다. 이 곡선 두 개를 겹쳐 그리는 습관이 실무 딥러닝의 기본 계기판이다.
생각해 볼 질문: 훈련 손실과 검증 손실이 둘 다 높은 채로 나란히 정체되어 있다면, 과대적합인가 과소적합인가? 다음 조치는?
은닉층과 활성화 함수
비선형 활성화 함수를 포함한 은닉층은 XOR과 같은 비선형 문제를 표현할 수 있다.
은닉층이 XOR을 푸는 방법
입력층과 출력층 사이에 은닉층을 둔 신경망을 다층 퍼셉트론(MLP)이라 한다. 이 예제에서는 두 은닉 유닛의 출력을 조합해 XOR을 분류한다.
충분한 수의 은닉 유닛과 적절한 비선형 활성화 함수를 사용하면 신경망은 다양한 연속 함수를 근사할 수 있다. 다만 이를 표현할 수 있다는 것과 학습으로 적절한 파라미터를 찾는 것은 구분해야 한다.
생각해 볼 질문: 은닉 유닛이 3개라면 입력 공간을 최대 몇 개의 영역으로 나눌 수 있을까?
비선형 활성화 함수의 역할
여러 개의 선형 함수를 결합해도 결국 하나의 선형 함수와 같다는 사실은 수학적으로 증명되어 있다. 층 사이의 비선형 활성화 함수가 없다면, 백 층을 쌓아도 퍼셉트론 하나다.
은닉층 h = W₁x와 출력 y = W₂h를 결합하면 y = (W₂W₁)x이므로 하나의 선형 변환과 같다. 사이에 비선형 함수 σ를 넣은 y = W₂σ(W₁x)는 일반적으로 하나의 선형 변환으로 정리할 수 없다.
생각해 볼 질문: ReLU는 0에서 꺾이는 것 말고는 두 조각 모두 선형이다. 그런데 왜 "비선형 함수"로서 자격이 있는가?
연쇄법칙과 역전파
가중치에 대한 손실의 미분은 계산 경로에 있는 각 연산의 미분을 곱해 구한다.
순전파, 역전파, 가중치 갱신
순전파로 예측값과 손실을 계산한다. 역전파로 각 가중치에 대한 손실의 미분을 구한 뒤, 경사하강법으로 가중치를 갱신한다.
- 순방향 패스: 입력이 은닉층을 거쳐 출력층으로 전파된다.
- 오차 계산: 손실 함수로 정답과 출력의 차이를 잰다.
- 역전파: 출력층에서 입력층 방향으로 각 가중치에 대한 손실의 미분을 계산한다.
- 갱신: 1장의 경사하강법 그대로: w ← w − α·∂E/∂w. 그리고 1로 돌아간다.
가중치를 하나씩 바꿔 손실의 변화를 계산하는 수치 미분은 파라미터 수가 많을 때 비용이 크다. 역전파는 순전파에서 구한 중간값을 재사용해 모든 가중치의 미분을 효율적으로 계산한다.
생각해 볼 질문: 역방향 패스가 출력층"에서" 시작해야만 하는 이유를 체인룰의 구조에서 찾아보자.
세 개의 변화율
출력 노드 j로 들어가는 가중치 w에 대한 손실의 미분은, 체인룰에 의해 세 항의 곱으로 쪼개진다. 각 항은 전부 이미 아는 값이다.
① 출력이 변하면 오차가 얼마나? = (out − 정답) — MSE의 미분
② 입력합이 변하면 출력이 얼마나? = σ′(net) — 활성화 함수의 미분
③ 가중치가 변하면 입력합이 얼마나? = 그 가중치에 곱해지는 입력값
은닉층 가중치도 원리가 같다: 다만 ①이 "그 은닉 유닛이 영향을 주는 모든 다음 층 노드의 책임을 합산"하는 것으로 바뀔 뿐이다. 이 합산의 연쇄가 층을 거슬러 올라가는 것이 "전파"라는 이름의 이유다.
시그모이드의 미분은 σ′ = σ(1−σ)이므로 출력값을 이용해 계산할 수 있다. 최댓값은 0.25이며, 깊은 신경망에서는 작은 미분값의 반복 곱이 기울기 소실의 원인이 될 수 있다. 실제 기울기에는 가중치도 함께 영향을 준다.
생각해 볼 질문: ③이 "입력값"이라는 것은, 입력이 0인 연결의 가중치는 그 샘플에서 전혀 학습되지 않는다는 뜻이다. 이것이 문제가 되는 상황을 상상해 보자.
XOR 신경망 학습 실습
2-2-1 신경망으로 XOR을 학습한다. 학습 중 손실, 은닉 유닛의 결정 경계, 출력 곡면이 어떻게 변하는지 확인한다.
2-2-1 신경망의 XOR 학습
실습 목표: 은닉층과 역전파를 사용한 신경망이 XOR을 학습하는 과정을 확인한다.
실습 방법: [학습 시작]을 누르고 결과를 확인한 뒤, 초기화하여 여러 번 실행한다. 확인할 내용: 초기값에 따른 손실과 결정 경계의 차이, 네 입력의 최종 예측을 비교한다. 출력 곡면을 드래그해 각 입력에서의 출력값도 확인한다. 실행에 따라 학습이 정체될 수 있다.
이 위젯의 학습 코드는 앞 카드의 3항 유도를 그대로 옮긴 20줄이다: dy=(y−t)·y(1−y)가 ①×②, 거기에 h를 곱해 출력층 가중치의 미분을, W₂를 곱하고 h(1−h)를 곱해 은닉층으로 책임을 넘긴다. 실습 노트북(XORnetwork.ipynb)에서 같은 구조를 numpy로 다시 만나고, 각 층의 계산식을 숫자로 출력해 보게 된다.
생각해 볼 질문: 초기 가중치를 전부 0으로 두면 이 학습은 어떻게 되는가? (힌트: 두 은닉 유닛이 완전히 같은 미분을 받는다: "대칭 깨기" 문제)
계산그래프: 사과 2개와 귤 3개
덧셈과 곱셈 노드의 미분 규칙을 이용해 계산그래프의 역전파를 구한다.
계산그래프의 구성
100원짜리 사과 2개와 150원짜리 귤 3개를 구입하고 소비세 10%를 낸다. 이 계산을 연산 노드와 값을 전달하는 연결선으로 나타낸다.
복잡한 식도 단순한 연산의 연결로 나타낼 수 있다. 순전파에서 저장한 중간값과 각 연산의 미분을 이용해 역전파를 계산한다. PyTorch와 TensorFlow의 자동 미분도 이러한 계산그래프를 활용한다.
생각해 볼 질문: 그림에서 귤 가격의 미분(3.3)을 "국소적 규칙"만으로 재구성해 보자. 어떤 값들이 곱해졌는가?
출처 계산그래프 예제의 원전: 사이토 고키, 『밑바닥부터 시작하는 딥러닝』, 한빛미디어, 2017 (5장).
덧셈 노드와 곱셈 노드의 역전파
덧셈과 곱셈의 미분 규칙을 먼저 확인한다. 다른 연산도 해당 연산의 도함수를 이용해 같은 방식으로 연결할 수 있다.
기말고사 단골인 z = (x + y)² 유형도 이 규칙 둘로 끝난다: t = x+y (덧셈), z = t² (제곱, ∂z/∂t = 2t). 역전파는 1 → 2t로 내려온 뒤, 그 2t가 x와 y에 그대로 복제된다. x=3, y=2면 ∂z/∂x = ∂z/∂y = 2(3+2) = 10.
계산그래프 순전파·역전파 계산기
실습 목표: 입력값을 바꾸며 계산그래프의 순전파 결과와 각 입력에 대한 미분값을 확인한다.
실습 방법: 사과 가격을 10원 올려 지불금액이 22원 증가하는지 확인한다. 이후 z=(x+y)² 예제로 바꾸고 입력값을 조절한다. 확인할 내용: 미분은 해당 지점의 변화율이다. 선형 예제에서는 변화량을 정확히 계산하며, 비선형 예제에서는 작은 입력 변화에 대한 근사값을 제공한다.
계산 순서: ① 노드에 연산, 연결선에 값을 표시한다. ② 순전파 값을 계산한다. ③ 출력에서 미분값 1로 시작해 연쇄법칙을 역방향으로 적용한다. ④ 각 입력에 대한 미분값을 기록한다. 검산할 때는 입력을 충분히 작은 ε만큼 바꾸고 (f(x+ε)−f(x))/ε와 비교한다.
생각해 볼 질문: z = (x+y)² 에서 x와 y의 미분이 항상 같은 이유를 그래프 구조에서 설명해 보자.
소프트맥스와 교차엔트로피
소프트맥스는 클래스별 점수를 확률로 변환한다. 교차엔트로피는 정답에 부여한 예측 확률을 기준으로 손실을 계산한다.
점수를 확률로: 소프트맥스
분류 신경망의 출력층은 클래스별 점수를 낸다. 소프트맥스는 이 점수들을 "합이 1인 확률분포"로 바꾼다: 큰 점수는 크게, 작은 점수는 작게, 순서는 그대로다.
예: 점수 [2.0, 1.0, 0.1] → 확률 [0.66, 0.24, 0.10] — 합이 1, 전부 양수, 순서 유지
다중 클래스 분류에서는 소프트맥스 출력과 교차엔트로피 손실을 흔히 사용한다. 이 조합은 정답 클래스의 확률을 높이도록 학습하며, 출력 점수에 대한 미분도 간단히 계산할 수 있다.
소프트맥스와 교차엔트로피를 함께 사용하면 출력 점수 z에 대한 손실의 미분은 ∂L/∂z = ŷ − y로 정리된다. ŷ는 예측 확률, y는 정답의 원-핫 벡터다. 정답 클래스의 예측 확률이 0.3이면 해당 점수의 미분은 −0.7, 0.99이면 −0.01이다.
계산 안정성 메모: e^z는 z가 크면 오버플로하므로, 실제 라이브러리는 최댓값을 빼고 계산한다(LogSumExp 트릭). "내 코드에서 nan이 떴다"의 단골 원인이다.
생각해 볼 질문: 소프트맥스 대신 점수를 합으로 나누면 음수 점수나 합이 0인 경우에 어떤 문제가 생기는가?
출처 softmax 명명: Bridle, "Probabilistic Interpretation of Feedforward Classification Network Outputs", 1990: springer.com
엔트로피와 정보량
확률이 1/2, 1/4, 1/8처럼 표현되는 예제에서 엔트로피는 효율적인 이진 질문의 평균 횟수로 이해할 수 있다. 네 결과가 같은 확률로 나타나면 두 번의 질문으로 구분할 수 있다.
- 균등 분포 [¼,¼,¼,¼]의 기계: 어떤 문자든 질문 2개 → 엔트로피 = 0.25×2 × 4 = 2
- 치우친 분포 [½,⅛,⅛,¼]의 기계: A는 질문 1개, D는 2개, B·C는 3개 → 엔트로피 = 0.5×1 + 0.25×2 + 0.125×3×2 = 1.75
- 치우친 기계에 균등 전략(항상 반반 질문)을 쓰면: 기댓값 2: 최적(1.75)보다 0.25 낭비
교차엔트로피는 실제 분포 p에 대해 모델 분포 q를 사용했을 때의 평균 정보량 −Σp log q다. 이 예제에서는 q를 기준으로 구성한 질문 전략의 평균 길이로 해석할 수 있다. q=p일 때 엔트로피와 같아진다.
가능한 결과 수가 같으면 균등 분포에서 엔트로피가 최대다. 교차엔트로피는 엔트로피보다 작지 않으며, 두 분포가 같으면 같아진다. 의사결정트리의 정보이득도 분할 전후 엔트로피의 감소량을 이용한다.
생각해 볼 질문: 스무고개를 잘하는 사람의 전략을 엔트로피의 언어로 설명해 보자.
출처 Shannon, "A Mathematical Theory of Communication", Bell System Technical Journal, 1948: ieeexplore.ieee.org
교차엔트로피 계산 예제
정답이 원-핫이면 교차엔트로피는 한 항만 남는다: 정답 클래스에 준 확률의 −log. 3개 샘플이면 각각 계산해 평균을 낸다.
샘플1: 예측 [0.1, 0.3, 0.6], 정답 3번 → −ln 0.6 = 0.51
샘플2: 예측 [0.2, 0.6, 0.2], 정답 2번 → −ln 0.6 = 0.51
샘플3: 예측 [0.3, 0.4, 0.3], 정답 1번 → −ln 0.3 = 1.20 → 평균 = 0.74
예측 분포를 움직이며 CE 관찰하기
실습 목표: 정답 클래스의 예측 확률과 교차엔트로피의 관계를 확인한다. 슬라이더 값은 합이 1이 되도록 정규화된다.
실습 방법: 정답 클래스의 예측 확률을 0.6, 0.3, 0.1로 바꾼다. 확인할 내용: 자연로그 기준 교차엔트로피가 약 0.51, 1.20, 2.30으로 증가하는지 확인한다.
용어 정리 두 가지. ① 클래스가 둘이면 같은 식이 BCE(이진 교차엔트로피)로 줄고, 로지스틱 회귀의 log loss와 동일한 식이 된다. 셋 이상이면 Categorical CE이고 정답을 원-핫 인코딩으로 준다. ② 입력 특징의 표준화(평균 0, 분산 1)와 정답의 원-핫 인코딩은 학습 전 데이터 준비의 표준 절차다: 나이 30과 배기량 3800처럼 스케일이 다른 특징을 그대로 넣으면 큰 수가 학습을 지배한다.
생각해 볼 질문: 모델이 정답에 확률 1.0을 주면 CE는 0이다. 그런데 실무에서는 정답을 0.9로 낮춰 학습시키기도 한다(label smoothing). 왜일까? (힌트: M2의 환각·과신)
깊은 신경망의 학습 문제와 개선 방법
기울기 소실과 과대적합의 원인을 살펴보고, 활성화 함수와 정규화 등 개선 방법을 비교한다.
시그모이드와 기울기 소실
시그모이드의 미분값은 최대 0.25다. 활성화 함수의 미분만 10번 곱하면 0.25¹⁰로 작아진다. 이는 기울기 소실을 설명하기 위한 단순화이며, 실제 역전파에는 가중치 행렬의 곱도 포함된다.
층수 × 곱해지는 값 → 남는 신호
실습 목표: 작은 미분값을 반복해서 곱할 때 결과가 얼마나 빠르게 감소하는지 확인한다.
실습 방법: 미분값을 0.25로 두고 층수를 10, 20, 40으로 늘린다. 같은 층수에서 미분값을 1.0으로 바꿔 비교한다. 확인할 내용: 이 계산은 활성화 함수의 미분만 반복해서 곱한 결과이며, 실제 신경망의 전체 기울기를 계산한 값은 아니다.
ReLU는 음수 구간의 미분이 0이므로 일부 유닛의 학습이 정체될 수 있다. Leaky ReLU는 음수 구간에도 작은 기울기를 둔다. 배치 정규화와 층 정규화도 학습 안정화에 사용되며, 정규화하는 대상과 범위가 다르다.
생각해 볼 질문: 잔차 연결은 입력 정보와 기울기 전달에 어떤 도움을 주는가? M7의 어텐션과 잔차 연결 실습에서 확인한다.
과대적합을 줄이는 방법
조기 종료, 정규화, 데이터 증강, 드롭아웃 등으로 과대적합을 줄일 수 있다. 모델과 데이터의 특성에 맞춰 선택한다.
각 방법의 효과는 데이터, 모델 구조, 학습 조건에 따라 달라진다. 검증 데이터로 일반화 성능을 비교하고, 여러 방법을 함께 적용할 때도 효과를 확인한다.
생각해 볼 질문: 드롭아웃은 학습 때만 켜고 예측 때는 끈다. 왜 그래야 하는가?
출처 Srivastava 외, "Dropout: A Simple Way to Prevent Neural Networks from Overfitting", JMLR 15, 2014: jmlr.org
요약 정리
역전파의 계산 원리와 분류 손실 함수, 학습 안정화 방법을 정리한다.
핵심 내용
- 역전파는 연쇄법칙으로 미분을 계산한다. 순전파의 중간값을 재사용해 각 가중치에 대한 손실의 미분을 구한다.
- 깊은 신경망에서는 기울기가 작아지거나 커질 수 있다. 활성화 함수, 가중치 초기화, 정규화, 잔차 연결 등이 학습 안정성에 영향을 준다.
- 분류에서는 소프트맥스와 교차엔트로피를 함께 사용한다. 이때 출력 점수에 대한 손실의 미분은 예측 확률과 정답 벡터의 차이로 계산된다.
다음 장에서는 이미지와 시퀀스를 처리하는 CNN과 RNN, 데이터를 생성하는 오토인코더와 GAN을 살펴본다. 각 구조의 특징과 계산 방법을 비교한다.
참고문헌
공개 원문 우선. 링크는 2026년 8월 확인 기준.
1차 문헌
- Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning Representations by Back-propagating Errors. Nature, 323, 533–536. nature.com
- Shannon, C. E. (1948). A Mathematical Theory of Communication. Bell System Technical Journal, 27. ieeexplore.ieee.org
- Bridle, J. S. (1990). Probabilistic Interpretation of Feedforward Classification Network Outputs, with Relationships to Statistical Pattern Recognition. Neurocomputing: Algorithms, Architectures and Applications (NATO ASI Series F 68, pp. 227–236). Springer. springer.com
- Srivastava, N., et al. (2014). Dropout: A Simple Way to Prevent Neural Networks from Overfitting. JMLR, 15, 1929–1958. jmlr.org
- Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet Classification with Deep Convolutional Neural Networks. NeurIPS 25. papers.nips.cc
교재 · 보조 자료
- 천인국 (2023). 인공지능: 파이썬으로 배우는 머신러닝과 딥러닝 (2판). 인피니티북스.: 10·11주차 강의 교재.
- 사이토 고키 (2017). 밑바닥부터 시작하는 딥러닝. 한빛미디어.: 계산그래프(사과·귤) 예제의 원전.
- 수업 보조 자료. Softmax와 Cross Entropy의 유도 · 크로스엔트로피 손계산 워크시트 · 정규화 3종 비교: 강의 홈에서 배포.
수치 예(시그모이드 도함수 최댓값 0.25, CE 0.51/1.20, 발산 경계 α=1)는 본문에 유도 과정을 제시했거나 실습 위젯으로 직접 재현 가능하게 했다. 역전파의 "재발견"(1986) 표기는 그 이전의 독립적 제안들(Werbos 1974 등)이 있었음을 반영한 것이다.