78. 역전파 (Backpropagation) 알고리즘

⚠️ 이 문서는 인공신경망의 순전파를 통해 예측한 결괏값이 정답과 틀렸을 때(오차가 발생했을 때), 그 오차에 대한 책임을 최종 출력층부터 거꾸로(역방향으로) 추적해가며 수백만 개의 가중치(Weight)를 얼마나 수정해야 할지 미분(기울기)을 통해 정확히 계산해 내는 딥러닝 학습의 마법, 역전파를 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 결과의 실패 원인을 거꾸로 파고드는 과정이다. 손실 함수(Loss)의 에러 값을 뒤에서부터 앞으로 밀어 보내면서, 이 에러에 기여한 각 뉴런의 '지분(기울기)'을 고등학교 수학의 '연쇄 법칙(Chain Rule)'을 통해 산출하는 알고리즘이다.
  2. 가치: 아무리 층(Layer)이 100개, 1000개로 깊어지더라도 역전파가 없다면 컴퓨터는 수십억 개의 파라미터를 무작위로 찍어 맞춰봐야 하지만, 역전파 덕분에 오차를 줄이는 정확한 지름길 방향으로 가중치를 업데이트할 수 있다. (딥러닝 학습의 실질적 동력)
  3. 기술 체계: '활성화 함수 미분' $\times$ '해당 노드의 입력값' $\times$ '뒤에서 넘어온 오차 신호'의 곱셈 릴레이로 이루어지며, 너무 깊어지면 신호가 희미해져 사라지는 '기울기 소실(Vanishing Gradient)' 문제가 발생하여 ReLU 함수 등장의 계기가 되었다.

Ⅰ. 역전파의 등장과 신경망의 부활

역전파 이전의 인공지능은 층을 두 개 이상 깊게 쌓는 순간 암흑에 빠졌다.

  1. 단층 퍼셉트론의 한계:
    • 층이 하나일 때는 정답이 틀리면 바로 앞의 가중치 몇 개만 수정하면 되므로 쉬웠다. 하지만 층이 깊어지면 "결과가 틀리긴 했는데, 도대체 중간에 껴있는 수백 개의 은닉층 중 어떤 놈이 얼마나 잘못한 건지" 책임을 분배할 수학적 방법이 없었다 (AI의 첫 번째 겨울).
  2. 연쇄 법칙(Chain Rule)의 도입:
    • 제프리 힌튼(Geoffrey Hinton) 교수가 다변수 함수의 합성함수 미분 원리인 체인 룰을 신경망에 적용했다.
    • $ \frac{\partial Loss}{\partial w_1} = \frac{\partial Loss}{\partial Out} \times \frac{\partial Out}{\partial Hidden} \times \frac{\partial Hidden}{\partial w_1} $
    • 전체 오차에 대해 맨 앞쪽 $w_1$이 미치는 영향력(미분값)은, 뒤에서부터 계산된 국소적(Local) 기울기들을 단순히 곱해 나가는 릴레이 경주로 완벽하게 쪼개서 계산할 수 있음이 증명되었다.

📢 섹션 요약 비유: 회사에서 프로젝트가 100억 원의 적자(오차)를 냈을 때, 과거에는 사장이 "누구 잘못이야?"라며 범인을 못 찾았지만, 역전파(체인 룰)를 도입하자 "영업팀장 책임 20%, 그 아래 김 대리 책임 50%, 결재 올린 이 사원 책임 30%"라며 역순으로 감사를 돌려 각자의 삭감해야 할 연봉(가중치 업데이트 양)을 정확하게 소수점까지 찍어주는 기적이 일어난 것입니다.


Ⅱ. 역전파의 동작 메커니즘 (미분값의 전달)

순전파가 데이터($x$)를 앞으로 나른다면, 역전파는 미분값(기울기, Gradient)을 뒤로 나른다.

  1. 오차(Error) 신호의 생성:
    • 출력층에서 모델의 예측값과 실제 정답의 차이(Loss)를 구하고, 이를 미분하여 에러 신호($\delta$)를 만든다.
  2. 기울기의 역주행 곱셈:
    • 에러 신호가 뒤로 한 칸 이동할 때마다, 해당 층에 있는 '활성화 함수의 미분값'과 '순전파 때 지나갔던 입력 데이터 값'을 서로 곱한다.
    • 이 곱셈의 결괏값이 바로 그 노드와 연결된 선(가중치)을 **'증가시킬지, 감소시킬지, 얼마나 크게 움직일지'**를 알려주는 내비게이션 화살표(기울기 벡터)가 된다.
  3. 경사하강법(Gradient Descent)으로 업데이트:
    • 모든 선들의 화살표(기울기) 크기가 계산되면, "기존 가중치 - (학습률 $\times$ 기울기)" 공식을 통해 전체 가중치를 오차가 줄어드는 방향으로 일제히 한 발짝 갱신(Update)한다.

📢 섹션 요약 비유: 화살이 과녁의 10시 방향에 꽂혔을 때(오차 발생), 코치가 바람 부는 방향(기울기 1)과 선수의 팔 각도(기울기 2), 활시위를 당긴 힘(기울기 3)을 거꾸로 곱해가며 추적하여 "오른팔을 2도 내리고, 10뉴턴 더 강하게 당겨!"라고 다음 번 쏠 때의 근육량 조절 지침(가중치 업데이트)을 수학적으로 계산해 주는 과정입니다.


Ⅲ. 기울기 소실(Vanishing Gradient)의 저주

연쇄 법칙의 곱셈 릴레이는 치명적인 부작용을 숨기고 있었다.

  1. 0.X의 무한 곱셈:
    • 과거 신경망은 활성화 함수로 시그모이드(Sigmoid)를 썼다. 시그모이드는 미분해 봤자 최대값이 0.25밖에 안 된다.
    • 은닉층이 10개만 되어도 역전파 시 0.25가 10번 연속 곱해지면서 에러 신호가 $0.000001$로 작아져 버린다. (기울기가 소멸함)
  2. 첫 번째 층의 무지:
    • 기울기가 0이 되어 맨 앞단(입력과 가까운 층)에 도달하면, "가중치를 얼마나 바꿔야 해?"라는 지시사항이 완전히 지워져 버려 업데이트가 일어나지 않고 학습이 영원히 정체된다 (딥러닝의 위기).
  3. 돌파구: ReLU 함수의 등장:
    • 양수일 때 무조건 미분값이 '1'인 ReLU(Rectified Linear Unit)를 쓰면, 1을 백 번 곱해도 여전히 1이므로 에러 신호가 소멸하지 않고 앞단까지 손실 없이 짱짱하게 전달되어 딥러닝 르네상스가 열리게 되었다.

📢 섹션 요약 비유: 맨 뒤의 사장이 "매출 올려!"라고 호통을 쳤는데(오차), 부장이 과장에게 귓속말을 하면서 목소리가 줄어들고(시그모이드 0.25배), 대리가 사원에게 전하면서 또 줄어들어, 결국 맨 앞의 사원은 개미 울음소리도 못 들어 아무 일도 안 하는 현상(기울기 소실)이 발생했습니다. 그래서 중간 관리자 없이 확성기(ReLU, 1배)로 소리를 그대로 전달하게 바꾼 것입니다.