Neural Networks and Deep Learning (Nielsen)

calico·2026년 4월 27일

Artificial Intelligence

목록 보기
180/186

https://eng.libretexts.org/Bookshelves/Computer_Science/Applied_Programming/Neural_Networks_and_Deep_Learning_(Nielsen)/02%3A_How_the_Backpropagation_Algorithm_Works/2.03%3A_The_backpropagation_algorithm

전방향(Forward)으로 흐른 결과가 어떻게 후방향(Backward)의 조정 연쇄 효과(Chain Effect)를 일으키는지 단계별로 설명해 드리겠습니다.

1. 전방향 전달 (Forward Pass): "결과 도출 과정"

먼저 이미지는 다음의 과정을 거쳐 결과 a(L)a^{(L)}에 도달했습니다.

  1. 입력 신호 (a(L1)a^{(L-1)}): 이전 층에서 전달된 신호의 세기가 0.480.48입니다.

  2. 가중치 결합 (z(L)z^{(L)}): 이 신호에 가중치(w(L)w^{(L)})를 곱하고 편향(b(L)b^{(L)})을 더해 z(L)z^{(L)}이 만들어집니다.

    z(L)=w(L)0.48+b(L)z^{(L)} = w^{(L)} \cdot 0.48 + b^{(L)}

  3. 활성화 (a(L)a^{(L)}): z(L)z^{(L)}을 활성화 함수(σ\sigma)에 통과시켜 최종 출력 0.660.66을 얻었습니다.

  4. 목표 (yy): 우리가 도달해야 할 정답은 1.001.00입니다.

2. 후방향 연쇄 효과 (Backward Pass): "조정의 원리"

이제 정답(1.001.00)과 실제 값(0.660.66) 사이의 오차를 줄이기 위해 가중치(w(L)w^{(L)})를 얼마나 바꿔야 할지 결정해야 합니다. 이것이 이미지 왼쪽의 미분 연쇄 법칙(Chain Rule)입니다.

① 1단계: 출력층의 오차 측정 (C0a(L)\frac{\partial C_0}{\partial a^{(L)}})

  • 의미: "최종 출력 a(L)a^{(L)}이 얼마나 변해야 비용(C0C_0)이 줄어드는가?"

  • 계산: 이미지 수식에 따라 2(a(L)y)=2(0.661.00)=0.682(a^{(L)} - y) = 2(0.66 - 1.00) = \mathbf{-0.68}

  • 해석: 현재 값이 정답보다 작으므로(0.66<1.000.66 < 1.00), a(L)a^{(L)}키워야 한다는 신호가 발생합니다.

1. 제곱 미분의 기초 (Power Rule)

우리가 사용하는 비용 함수(MSE)는 다음과 같습니다.
C0=(a(L)y)2C_0 = (a^{(L)} - y)^2
이것을 a(L)a^{(L)}에 대해 미분할 때, 수학의 미분 기본 공식인 거듭제곱의 법칙(Power Rule)을 사용합니다.
f(x)=xn    f(x)=nxn1f(x) = x^n \implies f'(x) = n \cdot x^{n-1}


따라서, C0C_0a(L)a^{(L)}로 미분하면:


C0a(L)=2(a(L)y)21a(L)(a(L)y)\frac{\partial C_0}{\partial a^{(L)}} = 2 \cdot (a^{(L)} - y)^{2-1} \cdot \frac{\partial}{\partial a^{(L)}}(a^{(L)} - y)
C0a(L)=2(a(L)y)1=2(a(L)y)\frac{\partial C_0}{\partial a^{(L)}} = 2 \cdot (a^{(L)} - y) \cdot 1 = 2(a^{(L)} - y)
결론: 이 22는 단순히 (a(L)y)(a^{(L)}-y)라는 덩어리를 제곱했기 때문에 미분 결과로 튀어나온 상수입니다.

2. 왜 실무에서는 12\frac{1}{2}을 앞에 붙일까?

그런데 눈치채셨을지 모르겠지만, 실무(딥러닝 교과서나 코드)에서는 비용 함수를 보통 다음과 같이 정의합니다.
C0=12(a(L)y)2C_0 = \frac{1}{2}(a^{(L)} - y)^2
앞에 12\frac{1}{2}을 붙여놓으면 어떤 일이 벌어질까요? 다시 미분해 보겠습니다.
C0a(L)=122(a(L)y)=(a(L)y)\frac{\partial C_0}{\partial a^{(L)}} = \frac{1}{2} \cdot 2 \cdot (a^{(L)} - y) = (a^{(L)} - y)
보시다시피, 앞에 붙은 12\frac{1}{2}이 제곱 미분으로 내려온 22상쇄(cancel)시켜 버립니다.

  • 수학적 이유: 미분 결과값을 깔끔하게(a(L)ya^{(L)} - y) 만들기 위해서입니다.
  • 실무적 이유: 복잡한 신경망에서는 수천, 수만 번 미분을 수행합니다. 그때마다 숫자 22를 곱하는 연산은 불필요한 계산 비용을 발생시키고, 기울기 크기를 2배로 키워 학습 속도나 안정성에 미세한 영향을 줄 수 있습니다. 그래서 계산의 편의를 위해 미리 상쇄시켜 두는 것입니다.

② 2단계: 활성화 함수의 민감도 (a(L)z(L)\frac{\partial a^{(L)}}{\partial z^{(L)}})

  • 의미: "z(L)z^{(L)}을 살짝 건드렸을 때, 출력 a(L)a^{(L)}이 얼마나 민감하게 반응하는가?"

  • 계산: σ(z(L))\sigma'(z^{(L)}) (이미지에서 초록색 부분)

  • 해석: 만약 z(L)z^{(L)}이 너무 크거나 작아서 활성화 함수가 평평한 곳에 있다면 이 값은 0에 가깝고, 조정 신호는 여기서 차단됩니다(기울기 소실).

③ 3단계: 입력 신호의 기여도 (z(L)w(L)\frac{\partial z^{(L)}}{\partial w^{(L)}})

  • 의미: "가중치 w(L)w^{(L)}를 바꿀 때 그 영향력이 얼마나 큰가?"

  • 계산: a(L1)=0.48a^{(L-1)} = \mathbf{0.48} (이미지에서 하늘색 부분)

  • 해석: 매우 중요한 포인트입니다. 가중치를 조정할 때, 그 가중치에 곱해졌던 입력값(a(L1)a^{(L-1)})이 클수록 가중치 조정의 강도가 세집니다. 만약 a(L1)a^{(L-1)}이 0이었다면, w(L)w^{(L)}을 아무리 바꿔도 z(L)z^{(L)}에 영향을 주지 못하므로 조정 효과는 0이 됩니다.

3. 최종 조정 연쇄 효과: "전/후방의 연결"

이미지의 맨 윗줄 수식은 이 세 가지 요소를 하나로 묶습니다.

C0w(L)=0.48입력의 세기×σ(z(L))함수 민감도×0.68출력 오차\frac{\partial C_0}{\partial w^{(L)}} = \underbrace{0.48}_{\text{입력의 세기}} \times \underbrace{\sigma'(z^{(L)})}_{\text{함수 민감도}} \times \underbrace{-0.68}_{\text{출력 오차}}

이 곱셈의 결과가 가중치 w(L)w^{(L)}수정 방향과 크기를 결정합니다.

  • 연쇄 효과 (Chain Effect)

    1. 뒤에서 앞으로: 오차(0.68-0.68)가 활성화 함수의 문(σ\sigma')을 통과하여 안쪽으로 들어옵니다.

    2. 연결 고리에서: 이 신호가 해당 가중치와 연결된 이전 층의 데이터(a(L1)=0.48a^{(L-1)}=0.48)와 만납니다.

    3. 조정 확정: "오차가 이만큼인데(0.68-0.68), 이 가중치는 0.480.48만큼 기여했으니, 그만큼 책임지고 변해라!"라고 명령하는 것입니다.

실무적 요약

이 이미지의 핵심은 "가중치 w(L)w^{(L)}를 얼마나 업데이트할 것인가는 (1) 최종 오차, (2) 활성화 함수의 기울기, (3) 그리고 이전 층에서 들어온 신호(a(L1)a^{(L-1)})의 크기에 비례한다"는 것입니다.

따라서 a(L1)a^{(L-1)}이 큰 값을 가질수록 해당 경로의 가중치 w(L)w^{(L)}은 오차에 대해 더 큰 책임을 지고 더 많이 수정됩니다.

제공해주신 이미지의 단일 경로를 넘어, 한 노드가 다음 층의 여러 노드에 영향을 주는 '다중 노드 시나리오'에서의 조정 연쇄 효과를 설명해 드리겠습니다.

실제 신경망은 이미지처럼 1:1 연결이 아니라, 1:N(일대다) 또는 N:M(다대다) 연결입니다. 이때 핵심은 "여러 곳에서 발생한 오차의 책임을 합산(Summation)하여 이전 층으로 돌려보낸다"는 점입니다.

1. 다중 노드 상황의 전방향 전달 (Forward Pass)

입력층의 노드 ak(L1)a_k^{(L-1)}이 다음 층의 여러 노드(a1(L),a2(L),,aj(L)a_1^{(L)}, a_2^{(L)}, \dots, a_j^{(L)})와 연결되어 있다고 가정해 보겠습니다.

  • 영향력의 분산: ak(L1)a_k^{(L-1)} 신호는 각기 다른 가중치(w1k(L),w2k(L),w_{1k}^{(L)}, w_{2k}^{(L)}, \dots)를 타고 여러 노드로 뻗어나갑니다.

  • 결과: ak(L1)a_k^{(L-1)}은 다음 층 모든 노드의 결과값(a(L)a^{(L)}들)에 기여하게 됩니다.

2. 다중 노드 상황의 후방향 연쇄 효과 (Backward Pass)

이제 오차를 수정할 때, 이전 층의 노드 ak(L1)a_k^{(L-1)}자신이 영향을 주었던 모든 다음 층 노드들로부터 오차 신호를 수집해야 합니다. 이를 "오차의 역전파 합산"이라고 합니다.

① 개별 오차 신호 (δj(L)\delta_j^{(L)})

각 출력 노드(j=1,2,3...j=1, 2, 3...)에서 발생한 델타(δ\delta) 값은 다음과 같습니다.

(이전 답변에서 설명한 δL=CaLaLzL\delta^L = \frac{\partial C}{\partial a^L} \cdot \frac{\partial a^L}{\partial z^L} 입니다.)

② 이전 층 노드의 총 책임량 계산 (Cak(L1)\frac{\partial C}{\partial a_k^{(L-1)}})

노드 kk가 다음 층의 여러 곳에 영향을 주었으므로, 전체 비용(CC)에 대한 노드 kk의 영향력은 각 경로를 통해 들어온 오차의 합입니다.

$$ \frac{\partial C}{\partial ak^{(L-1)}} = \sum{j} \left( w_{jk}^{(L)} \cdot \delta_j^{(L)} \right) $$

  • 의미: "내가 1번 노드에게 준 영향(w1kw_{1k}) ×\times 1번의 오차(δ1\delta_1) + 2번 노드에게 준 영향(w2kw_{2k}) ×\times 2번의 오차(δ2\delta_2) + ..."

  • 분산된 영향의 수집: 각 경로의 가중치(wjkw_{jk})가 '파이프' 역할을 하여 오차 신호를 거꾸로 전달합니다.

③ 최종 조정값 (가중치 업데이트)

이제 수집된 총 오차를 바탕으로 노드 kk의 활성화 함수 미분값(σ\sigma')을 곱해 최종적인 이전 층 델타(δk(L1)\delta_k^{(L-1)})를 완성합니다.

3. 직관적인 비유: "팀 프로젝트의 성과 평가"

이 과정을 실무적인 비유로 이해하면 훨씬 쉽습니다.

  • 상황: 사원 A(a(L1)a^{(L-1)})가 작성한 기초 데이터가 마케팅팀(a1(L)a_1^{(L)}), 영업팀(a2(L)a_2^{(L)}), 개발팀(a3(L)a_3^{(L)}) 세 곳에 전달되었습니다.

  • 문제 발생: 세 팀 모두 결과가 좋지 않았습니다(yy와의 차이 발생).

  • 책임 추궁 (Backprop)

    1. 마케팅팀은 "사원 A의 데이터 비중(w1kw_{1k})만큼 결과에 오차가 생겼어"라고 보고합니다.

    2. 영업팀과 개발팀도 각자의 비중(w2k,w3kw_{2k}, w_{3k})만큼 사원 A에게 피드백을 보냅니다.

    3. 사원 A의 조정: 사원 A는 세 팀에서 온 피드백을 모두 합산(\sum)하여, 자신의 업무 방식(w(L1)w^{(L-1)})을 얼마나 수정해야 할지 결정합니다.

4. 수식의 확장 (Matrix Form)

이를 모든 노드에 대해 한꺼번에 계산하면 실무에서 사용하는 행렬 식이 됩니다.

δ(L1)=((W(L))Tδ(L))σ(z(L1))\delta^{(L-1)} = \left( (W^{(L)})^T \cdot \delta^{(L)} \right) \odot \sigma'(z^{(L-1)})
  1. (W(L))Tδ(L)(W^{(L)})^T \cdot \delta^{(L)}: 가중치 행렬을 전치(Transpose)하여 곱하는 행위가 바로 "여러 노드에서 온 오차를 각 경로의 가중치 크기에 맞춰 합산"하는 과정입니다.

  2. σ\odot \sigma': 그 합산된 오차에 현재 층의 민감도를 곱해 최종 조정량을 결정합니다.

실무적 시사점

  • 영향력의 분산: 특정 노드가 다음 층의 많은 노드와 강하게(ww가 크게) 연결되어 있을수록, 역전파 시 더 많은 오차 신호를 받게 되어 가중치 업데이트가 활발하게 일어납니다.

  • 기울기 소멸 방지: 여러 경로에서 오차가 합산되므로, 한두 개의 경로가 막히더라도(기울기가 0이 되더라도) 다른 경로를 통해 학습 신호를 전달받을 수 있는 구조적 이점이 생깁니다. (이것이 네트워크가 넓을 때의 장점 중 하나입니다.)

이처럼 "전방으로 뻗어나간 영향력은 후방에서 오차의 책임으로 돌아와 합쳐진다"는 것이 다중 노드 연쇄 효과의 핵심입니다.

0개의 댓글