역전파: 신경망 학습을 위한 기울기 계산

역전파는 인공 신경망을 학습시키는 핵심 알고리즘입니다. 손실 함수에 대한 네트워크의 가중치와 편향의 기울기를 효율적으로 계산하여, 예측 오류를 최소화하기 위해 가중치를 반복적으로 업데이트할 수 있게 합니다.

오차의 역방향 전파(backward propagation of errors)를 의미하는 역전파는 인공 신경망이 학습할 수 있도록 하는 기본 알고리즘입니다. 정의된 손실 함수에 대한 네트워크 내의 모든 가중치와 편향에 대한 기울기를 계산합니다. 이 기울기 정보는 최적화 알고리즘(예: 경사 하강법)에 전달되어 네트워크의 매개변수를 체계적으로 조정하는 데 사용됩니다. 목표는 네트워크의 예측과 실제 대상 값 간의 차이를 최소화하는 것입니다. 이 과정은 본질적으로 두 단계로 이루어집니다: 예측을 생성하기 위한 순전파(forward pass)와 오류 신호를 전파하고 기울기를 계산하기 위한 역전파(backward pass)입니다.

핵심 단계:

  1. 순전파: 입력 데이터가 신경망을 계층별로 통과합니다. 각 뉴런은 입력의 가중치 합을 적용하고, 편향을 더한 후, 활성화 함수를 통과시켜 출력을 생성합니다.
  2. 손실 계산: 손실 함수는 신경망의 최종 출력과 실제 값 사이의 오류를 측정합니다.
  3. 역전파 (기울기 계산): 출력 계층부터 시작하여 오류가 역방향으로 전파됩니다. 미적분학의 연쇄 법칙을 사용하여, 알고리즘은 각 가중치와 편향이 전체 오류(즉, 기울기)에 얼마나 기여했는지 계산합니다.
  4. 매개변수 업데이트: 최적화 알고리즘은 계산된 기울기를 사용하여 가중치와 편향을 조정하며, 손실을 줄이는 방향으로 이동시킵니다.

이 주기는 반복되어 신경망이 내부 매개변수를 점진적으로 개선하고 예측 정확도를 향상시킬 수 있도록 합니다.

        graph LR
  Center["역전파: 신경망 학습을 위한 기울기 계산"]:::main
  Pre_linear_algebra["linear-algebra"]:::pre --> Center
  click Pre_linear_algebra "/terms/linear-algebra"
  Rel_gradient_descent["gradient-descent"]:::related -.-> Center
  click Rel_gradient_descent "/terms/gradient-descent"
  Rel_deep_learning["deep-learning"]:::related -.-> Center
  click Rel_deep_learning "/terms/deep-learning"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 5살도 이해할 수 있게 설명

신경망을 학습시키는 것을 학생에게 어려운 과목을 가르치는 것에 비유해 보세요. 학생이 질문에 답하려고 시도하고(순전파), 점수를 얻고(손실), 당신은 그가 사용한 각 개념에 대해 *어떻게* 틀렸는지, 그리고 얼마나 틀렸는지 정확히 알려줍니다(역전파). 그러면 그는 다음번에 더 잘하기 위해 그 개념들에 대한 이해를 조정합니다(가중치 업데이트). 역전파는 AI에게 있어 바로 이 정확한 피드백 메커니즘으로, 스스로의 오류를 수정함으로써 학습할 수 있게 합니다.

🤓 Expert Deep Dive

역전파는 데이터셋 $D = \{(x^{(i)}, y^{(i)})\}$가 주어졌을 때, 신경망의 손실 함수 $L$에 대한 매개변수 $\theta$(가중치 $W$ 및 편향 $b$)의 기울기 $
abla_{\theta} L(\theta; D)$를 계산하는 효율적인 알고리즘입니다. 미적분학의 연쇄 법칙을 활용하여, 기울기 계산을 계층별로 수행되는 일련의 지역적 연산으로 분해합니다. $a^{(l)}$를 $l$ 계층의 활성화 벡터로, $z^{(l)} = W^{(l)}a^{(l-1)} + b^{(l)}$를 사전 활성화 벡터로 정의합니다. $l$ 계층의 출력은 $a^{(l)} = f(z^{(l)})$이며, 여기서 $f$는 활성화 함수입니다. 손실 $L$은 일반적으로 최종 출력 $a^{(L)}$과 대상 $y$의 함수입니다. 역전파는 출력 계층부터 시작하여 각 계층 $l$에 대해 오류 항 $\delta^{(l)}$을 계산합니다. 출력 계층 $L$의 경우, $\delta^{(L)} = \frac{\partial L}{\partial a^{(L)}} \odot f'(z^{(L)})$이며, 여기서 $\odot$는 요소별 곱셈을, $f'$는 활성화 함수의 도함수를 나타냅니다. 은닉 계층 $l < L$의 경우, 오류 항은 재귀적으로 계산됩니다: $\delta^{(l)} = ((W^{(l+1)})^T \delta^{(l+1)}) \odot f'(z^{(l)})$。$l$ 계층 매개변수에 대한 손실의 기울기는 $
abla_{W^{(l)}} L = \delta^{(l)} (a^{(l-1)})^T$ 및 $
abla_{b^{(l)}} L = \delta^{(l)}$ 로 도출됩니다. 이 기울기들은 $L$을 최소화하기 위해 $\theta$를 업데이트하는 확률적 경사 하강법(SGD) 또는 Adam과 같은 최적화 알고리즘의 필수 입력값입니다.

🔗 관련 용어

선행 지식:

📚 출처