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이 되더라도) 다른 경로를 통해 학습 신호를 전달받을 수 있는 구조적 이점이 생깁니다. (이것이 네트워크가 넓을 때의 장점 중 하나입니다.)

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

profile
All views expressed here are solely my own and do not represent those of any affiliated organization.

0개의 댓글