2. 신경망과 역전파¶
이 장의 질문¶
신경망은 예측 오차를 각 매개변수가 바뀌어야 할 방향으로 어떻게 전달할까?
신경망 학습에는 두 종류의 계산이 반복된다. 순전파는 현재 매개변수로 예측을 만들고, 역전파는 예측에서 계산한 손실을 이용해 각 매개변수의 기울기를 구한다. 옵티마이저는 그 기울기를 받아 매개변수를 갱신한다. 이 세 역할을 분리해 이해하면 딥러닝 학습 과정의 대부분을 읽을 수 있다.
읽기 수준과 선수지식 확인
이 장에서 알아볼 수준¶
핵심 개념¶
- 선형 모형, 로지스틱 모형, multilayer perceptron(MLP)
- 가중치, 편향, 활성화 함수
- 순전파, 손실, 계산 그래프
- chain rule과 역전파
- 기울기 계산과 매개변수 갱신의 차이
이름과 위치를 알아둘 개념¶
- sigmoid, tanh, ReLU
- mean squared error, binary/categorical cross-entropy
- 자동미분
- batch, mini-batch, epoch
미분식을 손으로 길게 전개하는 것이 목표는 아니다. 계산을 작은 연산으로 나누면 chain rule로 각 매개변수의 영향도를 효율적으로 구할 수 있다는 흐름을 이해하는 것이 목표다.
이해에 필요한 항목¶
- 벡터 내적과 행렬 곱셈이 입력을 섞어 새 값을 만든다는 의미
- 합성함수와 chain rule
- 기울기가 여러 변수에 대한 변화 방향을 모은 벡터라는 의미
- 확률과 로그의 기본 역할
가장 단순한 출발점: 선형 모형¶
입력 \(x\)가 여러 특성을 가진 벡터일 때 선형 모형은 다음처럼 예측한다.
\(w\)는 특성마다 중요도를 조절하는 가중치, \(b\)는 입력과 무관한 기준점을 조절하는 편향이다. regression에서는 \(z\) 자체를 연속값 예측으로 사용할 수 있다. binary classification에서는 sigmoid 함수를 통과시켜 0과 1 사이 값을 만든다.
이것이 logistic regression의 기본 형태다. 선형 결합과 확률적 출력 사이의 연결을 보여주므로, MLP와 classification 손실을 이해하는 좋은 출발점이다.
한 층으로 부족한 이유¶
perceptron도 입력의 weighted sum을 계산한 뒤 threshold를 넘어가는지에 따라 class를 정한다. 그러나 하나의 linear boundary로만 나눌 수 있는 문제에 제한된다. XOR은 두 입력이 서로 다를 때만 1이 되는 간단한 규칙이지만, 입력 공간에서 하나의 직선으로 두 class를 분리할 수 없다.
여러 linear 층만 연속으로 놓아도 이 한계를 해결하지 못한다. linear transformation의 합성은 다시 하나의 linear transformation으로 정리되기 때문이다. 각 층 사이에 nonlinear activation을 넣어야 굽은 경계와 복합적인 관계를 표현할 수 있다.
다층 퍼셉트론은 변환을 층으로 합성한다¶
한 개의 hidden 층을 가진 MLP를 단순화하면 다음과 같다.
\(\phi\)는 hidden 표현에 nonlinear 변환을 주는 활성화 함수이고, \(g\)는 과제에 맞는 출력 변환이다. ReLU는 양수는 유지하고 음수는 0으로 만드는 단순한 함수다. sigmoid와 tanh도 중요한 역사적 activation이지만 깊은 모델에서는 기울기 흐름과 출력 범위 때문에 서로 다른 장단점이 있다.
MLP가 데이터의 규칙을 자동으로 안다는 뜻은 아니다. 층을 쌓아 더 다양한 함수를 표현할 수 있는 parameterization을 제공할 뿐이다. 어떤 함수를 실제로 얻게 되는지는 데이터, 손실, 초기화, 옵티마이저와 학습 과정에 달려 있다.
순전파: 입력에서 예측까지¶
순전파는 입력을 첫 층부터 마지막 층까지 순서대로 계산하는 과정이다.
- 입력과 가중치를 곱하고 편향을 더한다.
- 활성화 함수로 비선형 표현을 만든다.
- 다음 층이 이 표현을 입력으로 받는다.
- 마지막 층이 과제에 맞는 예측을 출력한다.
- 예측과 목표값으로 손실을 계산한다.
학습 중에도, 학습이 끝난 뒤 추론할 때도 순전파는 사용된다. 차이는 학습 중에는 뒤이어 기울기를 계산하고 매개변수를 갱신하지만 추론에서는 보통 예측만 만든다는 점이다.
더 깊이 살펴보기: 손실에서 매개변수 갱신까지
손실 함수는 틀린 정도를 숫자로 만든다¶
regression에서는 mean squared error(MSE)를 자주 사용한다.
binary classification에서는 목표값 \(y\in\{0,1\}\)와 예측 확률 \(p\) 사이의 binary cross-entropy를 사용할 수 있다.
여러 class 중 하나를 고르는 문제에서는 softmax로 class별 확률을 만들고 categorical cross-entropy를 사용한다. 이 손실들은 단순한 관습이 아니라 출력의 의미와 데이터에 대한 확률적 가정에 연결된다. 다만 이 장에서는 그 유도보다 "출력 형식과 손실이 함께 설계되어야 한다"는 점을 기억하면 된다.
계산 그래프로 연산 순서를 본다¶
신경망의 복잡한 식도 덧셈, 곱셈, activation 같은 작은 연산의 연결로 나타낼 수 있다. 이를 계산 그래프라고 한다. 예를 들어
에서 손실 \(L\)은 \(a\)에, \(a\)는 \(z\)에, \(z\)는 \(w\)에 의존한다. 가중치가 손실에 미치는 영향은 chain rule로 연결된다.
각 항은 해당 local operation의 미분이다. 깊은 신경망도 원리는 같다. 출력 쪽에서 시작한 기울기를 그래프의 연결을 거슬러 전달하면서 이미 계산한 중간 결과를 재사용한다.
역전파가 하는 일¶
역전파는 scalar 손실이 각 매개변수에 얼마나 민감한지를 효율적으로 계산한다. 결과는 \(\nabla_\theta L\)이며, 각 성분의 부호와 크기는 매개변수를 조금 바꿨을 때 손실이 어느 방향으로 얼마나 변할지 나타낸다.
중요한 구분은 다음과 같다.
- 역전파는 기울기를 계산하는 알고리즘이다.
- 경사하강법과 옵티마이저는 기울기를 이용해 매개변수를 갱신하는 규칙이다.
- Learning paradigm은 학습 신호를 어디서 얻는지에 관한 구분이다.
따라서 supervised learning과 역전파는 동의어가 아니다. self-supervised learning이나 reinforcement learning에서도 신경망 매개변수의 기울기는 흔히 역전파로 계산한다. 반대로 tree 기반 모델처럼 신경망이 아닌 모델은 다른 학습 알고리즘을 사용할 수 있다.
기울기가 매개변수 갱신으로 이어지는 지점¶
가장 기본적인 경사하강법 update는 다음과 같다.
\(\eta\)는 학습률이다. 기울기가 손실이 증가하는 방향을 가리키므로 반대 방향으로 이동한다. 이 한 줄이 실제 학습에서 안정적으로 작동하려면 mini-batch 구성, 학습률, 옵티마이저, initialization 같은 많은 선택이 필요하다. 이 문제는 3장에서 다룬다.
자동미분¶
PyTorch, JAX, TensorFlow 같은 framework는 순전파에서 만들어진 연산 그래프와 각 연산의 미분 규칙을 이용해 기울기를 계산한다. 이를 자동미분(autodiff)이라고 한다. autodiff는 numerical differentiation처럼 작은 간격으로 함숫값을 여러 번 비교하는 방식이 아니다. 또한 computer algebra system이 식 자체를 변형해 닫힌 형태의 도함수 식을 만드는 symbolic differentiation과도 다르다. Symbolic differentiation은 사람이 직접 전개하는 것만을 뜻하지 않으며, 복잡한 식에서는 중간 표현이 매우 커지는 expression swell이 생길 수 있다. Autodiff는 전체 도함수 식을 먼저 만들기보다 연산 단위의 derivative rule을 chain rule로 조합해 주어진 입력에서 기울기 값을 계산한다.
autodiff가 미분의 의미를 대신해 주는 것은 아니다. 텐서가 그래프에서 끊겼거나, 미분 불가능한 연산을 넣었거나, 잘못된 손실을 사용해도 코드는 실행될 수 있다. 어떤 매개변수가 어떤 경로로 손실에 영향을 주는지 이해해야 문제를 진단할 수 있다.
배치, 미니배치, 에포크¶
- Batch는 한 번의 손실 계산에 함께 사용하는 샘플 집합을 뜻한다.
- Mini-batch는 전체 dataset보다 작은 일부 샘플로 기울기를 추정한다.
- Iteration 또는 step은 보통 한 mini-batch에 대해 update 한 번을 수행한 단위다.
- Epoch는 훈련 데이터 전체를 한 차례 사용할 기회를 가진 단위다.
mini-batch 기울기는 전체 데이터의 정확한 기울기가 아니라 추정치다. 계산과 메모리 부담을 줄이고, 추정의 변동성이 학습 경로에 영향을 준다. batch size가 크면 무조건 더 좋거나 나쁘다고 단정할 수 없으며 학습률과 하드웨어, normalization 방식과 함께 해석해야 한다.
자주 하는 혼동과 한계
흔한 혼동과 실패¶
- 역전파가 가중치를 직접 바꾼다고 생각한다: 역전파는 기울기를 계산하고 옵티마이저가 update한다.
- 깊을수록 항상 더 좋은 함수를 학습한다고 생각한다: 표현 가능성은 커지지만 optimization, data, generalization 문제가 함께 커질 수 있다.
- activation을 출력의 후처리로만 본다: hidden 층의 nonlinear activation이 없으면 여러 linear 층을 쌓아도 하나의 선형 모형과 같은 표현력에 머문다.
- 손실이 0에 가까우면 실제 목적을 달성했다고 본다: 훈련 손실과 검증 평가 지표, 데이터 split을 함께 봐야 한다.
- 기울기의 절댓값이 매개변수 중요도라고 단정한다: 기울기는 현재 입력과 매개변수 위치에서의 국소 민감도이며 scale과 parameterization의 영향을 받는다.
- autodiff가 모델 설계를 검증한다고 생각한다: autodiff는 주어진 계산을 미분할 뿐, 그 계산이 올바른 과제와 손실인지 판단하지 않는다.
앞뒤 장과의 연결¶
1장에서 정의한 모형, 매개변수, 손실이 이 장에서 하나의 계산 그래프로 연결되었다. 3장에서는 기울기 update, 깊이에 따른 신호 안정성, generalization을 구분한다. 5장의 CNN, 7장의 Transformer, 8장의 GNN은 층의 연산 방식은 다르지만 forward, 손실, 역전파라는 학습 골격을 공유한다.
스스로 확인하기¶
- 여러 linear 층 사이에 nonlinear activation이 없으면 하나의 linear 층과 무엇이 같아질까?
- 역전파, 옵티마이저, supervised learning은 각각 어떤 질문에 답하는 개념일까?
- 순전파는 훈련과 추론에서 어떻게 공통으로 쓰이고, 그 뒤 과정은 어떻게 달라질까?
더 읽을 자료¶
- Rumelhart, Hinton, Williams, Learning representations by back-propagating errors, 1986. backpropagation을 신경망 학습에 정착시킨 고전 논문: https://www.nature.com/articles/323533a0
- Goodfellow, Bengio, Courville, Deep Learning, 2016, 6장. feedforward network의 공개 교재: https://www.deeplearningbook.org/contents/mlp.html
- PyTorch, Autograd mechanics, accessed 2026-09-04. reverse-mode autodiff의 공식 설명: https://pytorch.org/docs/stable/notes/autograd.html
- JAX, Automatic differentiation, accessed 2026-09-04. autodiff의 기본 연산과 변환을 설명하는 공식 문서: https://docs.jax.dev/en/latest/automatic-differentiation.html