역전파 알고리즘: 연쇄법칙으로 층마다 오차를 되짚는 법

역전파의 순전파·역전파 계산 과정을 연쇄법칙 수식으로 따라가고, XOR 예제와 컴퓨터 비전·NLP·강화학습 응용까지 정리한다.

2026-08-13 · 최초 발행 2025-05-23

역전파가 오차를 거꾸로 흘려보내는 이유

역전파(Backpropagation)는 인공신경망 학습에서 가장 중요한 알고리즘이다. 출력층에서 발생한 오차를 입력층 방향으로 역으로 전파하며 가중치를 조정하는 방식으로 작동한다. 1986년 Rumelhart, Hinton, Williams의 논문에서 대중화되며 현대 딥러닝의 기초가 됐고, 경사하강법(Gradient Descent)과 연계해 손실함수를 최소화하는 방향으로 학습이 진행된다.

순전파와 역전파가 주고받는 신호

신경망에서 정보는 두 방향으로 흐른다. 순방향 전파(Forward Propagation)는 입력에서 은닉층을 거쳐 출력층까지 계산이 진행되는 흐름이고, 역방향 전파(Backward Propagation)는 출력층에서 계산된 오차가 은닉층을 거쳐 입력층 쪽으로 되짚어 가는 흐름이다.

전체 학습 과정은 입력 데이터를 네트워크에 투입해 순방향으로 계산하고, 출력값과 목표값 사이 오차를 구한 뒤, 그 오차를 역으로 전파하며 각 층의 가중치를 조정하고, 오차가 최소화될 때까지 이를 반복하는 순서로 돈다. 이때 각 가중치가 최종 오차에 미치는 영향(기울기)을 계산하는 도구가 연쇄법칙(Chain Rule)이다.

입력 데이터순방향 전파오차 계산역방향 전파가중치 업데이트

층별 오차를 수식으로 따라가기

표기법은 다음과 같다: 입력 벡터 𝒙, 목표 출력 벡터 𝒚, 실제 출력 벡터 ŷ, 𝑙번째 층의 가중치 행렬 𝑾^(𝑙), 편향 벡터 𝒃^(𝑙), 활성화 출력 𝒂^(𝑙), 가중합 𝒛^(𝑙) = 𝑾^(𝑙)𝒂^(𝑙−1) + 𝒃^(𝑙), 활성화 함수 𝜎(), 손실 함수(비용 함수) 𝐸.

순방향 전파에서는 각 층의 가중합 𝒛^(𝑙) = 𝑾^(𝑙)𝒂^(𝑙−1) + 𝒃^(𝑙)을 구하고 활성화 함수를 적용해 𝒂^(𝑙) = 𝜎(𝒛^(𝑙))를 얻는다. 이를 출력층까지 반복하면 최종 출력 ŷ = 𝒂^(L)이 나온다.

역방향 전파는 출력층 오차 𝛿^(L) = ∇_𝒂 𝐸 ⊙ 𝜎'(𝒛^(L))에서 시작한다. ∇_𝒂 𝐸는 손실함수의 활성화 출력에 대한 편미분이고, 𝜎'()는 활성화 함수의 미분, ⊙는 요소별 곱셈(Hadamard product)이다. 은닉층 오차는 𝛿^(l) = ((𝑾^(l+1))^T 𝛿^(l+1)) ⊙ 𝜎'(𝒛^(l))로 뒤 층의 오차를 받아 계산하고, 여기서 가중치 그래디언트 ∇_𝑾^(l) 𝐸 = 𝛿^(l)(𝒂^(l-1))^T와 편향 그래디언트 ∇_𝒃^(l) 𝐸 = 𝛿^(l)가 나온다.

마지막으로 경사하강법으로 가중치를 업데이트한다: 𝑾^(l) = 𝑾^(l) - 𝜂 ∇_𝑾^(l) 𝐸, 𝒃^(l) = 𝒃^(l) - 𝜂 ∇_𝒃^(l) 𝐸. 𝜂는 학습률(learning rate)이다.

XOR 문제로 보는 역전파 흐름

XOR 문제는 선형적으로 분리할 수 없어 단층 퍼셉트론으로는 풀 수 없는 문제다.

입력 1은닉 노드 1은닉 노드 2입력 2출력 노드

입력은 [0,0], [0,1], [1,0], [1,1]이고 출력은 각각 [0], [1], [1], [0]이다. 가중치와 편향을 무작위로 초기화한 뒤 순방향 전파로 입력에서 출력까지 계산하고, 예상 출력과 실제 출력 간 오차를 구하고, 그 오차로 각 가중치의 기여도를 역전파로 계산해, 기울기와 학습률에 따라 가중치를 업데이트하는 과정을 오차가 충분히 작아질 때까지 반복한다.

# 신경망 초기화
initialize_weights()
epochs = 10000
learning_rate = 0.1

for epoch in range(epochs):
    total_error = 0

    for each input-output pair:
        # 순방향 전파
        output = forward_propagation(input)

        # 오차 계산
        error = calculate_error(output, target)
        total_error += error

        # 역전파 및 가중치 업데이트
        gradients = backward_propagation(error)
        update_weights(gradients, learning_rate)

    if total_error < threshold:
        break

기울기 소실·학습률·과적합이 만드는 벽

깊은 네트워크에서는 역전파 도중 기울기가 점차 감소해 앞쪽 층의 학습을 방해하는 기울기 소실 문제(Vanishing Gradient Problem)가 생긴다. ReLU 등 대체 활성화 함수, 배치 정규화(Batch Normalization), 잔차 연결(Residual Connection)이 대응책으로 쓰인다. 학습률은 너무 크면 발산하고 너무 작으면 학습 속도가 느려지는데, Adam·RMSprop·Adagrad 같은 적응형 학습률 기법과 학습률 스케줄링(Learning Rate Scheduling)으로 조정한다. 모델이 훈련 데이터에 지나치게 맞춰지는 과적합(Overfitting)에는 드롭아웃(Dropout), L1/L2 정규화, 조기 종료(Early Stopping)가 쓰인다.

모멘텀·자동 미분·병렬 연산으로 빨라진 역전파

최적화 알고리즘 쪽에서는 이전 업데이트 방향을 고려해 지역 최소값을 탈출하는 모멘텀(Momentum), 모멘텀과 RMSprop 아이디어를 결합한 Adam(Adaptive Moment Estimation), 미래 위치를 예측해 방향을 수정하는 NAG(Nesterov Accelerated Gradient)가 기본 역전파를 보완한다.

기본 역전파모멘텀NAGRMSpropAdam

계산 효율 쪽에서는 전체 데이터셋이 아닌 일부 배치만 사용하는 미니배치 경사하강법, GPU/TPU로 행렬 연산을 가속하는 병렬 컴퓨팅, 수치적 오차 없이 그래디언트 계산을 자동화하는 자동 미분(Automatic Differentiation)이 쓰인다. TensorFlow/Keras와 PyTorch는 자동 미분과 역전파를 자동화해 제공하고, JAX는 고성능 수치 계산과 자동 미분을 지원한다.

컴퓨터 비전부터 생성 모델까지 역전파가 쓰이는 곳

컴퓨터 비전에서는 CNN(Convolutional Neural Network)이 이미지 분류·객체 탐지·세그멘테이션에 역전파를 활용하며, ImageNet 대회에서 ResNet 등 역전파 기반 모델이 인간 수준 정확도를 달성했다. 자연어 처리에서는 RNN·LSTM이 시간에 따른 역전파(BPTT)를 쓰고, Transformer 아키텍처는 자기 주의 메커니즘(self-attention)과 역전파를 결합하며, GPT·BERT 등 최신 언어 모델의 기초 학습 알고리즘이기도 하다. 강화학습에서는 DQN(Deep Q-Network)이 Q-값 예측 네트워크 학습에 역전파를 쓰고, AlphaGo·MuZero 같은 게임 AI 시스템에도 적용된다. 생성 모델에서는 GAN(Generative Adversarial Network)의 생성자·판별자가 모두 역전파로 학습하고, VAE(Variational Autoencoder)의 인코더·디코더 학습에도 쓰인다.

역전파연쇄법칙신경망딥러닝경사하강법