티스토리 뷰

AI

AI - 역전파(Back Propagation)

DevDiana 2026. 8. 5. 11:10

안녕하세요, 오늘은 경사하강법을 구하는데 있어 기초가 되는 역전파에 대해 알아보도록 하겠습니다.

이 글 또한 3Blue1Brown의 백프로파게이션(BackPropagation) 개념적으로 이해하기를 기반으로 하고 있으며 수식의 경우 신박AI의 역전파 알고리즘 을 참고하였습니다.

 

시작해보겠습니다.

 


 

✅ 역전파(Back Propagation) 알고리즘이란?

우선 직전에 알아본 경사하강법(Gradient Descent)을 복습해보면, 경사하강법은 비용함수(Cost Function)를 최소화하는 가중치(Weight)와 Bias 값을 찾아가는 과정입니다.

 

그런데 여기서 한 가지 문제가 있습니다. 경사하강법을 쓰려면 매 스텝마다 비용함수의 기울기(Gradient), 즉 "각 가중치를 조금 움직였을 때 Cost가 얼마나 변하는가(∂C/∂w)"를 알아야 하는데, 신경망에는 이런 가중치와 Bias가 수천~수만 개나 존재합니다. 이걸 하나하나 직접 계산하는 것은 사실상 불가능하죠.

 

역전파는 바로 이 기울기를 효율적으로 계산하는 알고리즘입니다.

출력층에서 계산된 오차(정답과 예측의 차이)를 출력층 → 은닉층 → 입력층 방향, 즉 역방향으로 전파하면서, 체인룰(Chain Rule)을 이용해 "각 가중치가 이 오차에 얼마나 기여했는지"를 층 단위로 나눠 계산합니다. 그래서 이름이 역전파(Back Propagation)입니다.

 

숫자 2를 인식하는 예제로 돌아가 보겠습니다. 사람이 보기에 정답은 분명 2이지만, 2 뉴런의 Activation 값은 0.2로 충분히 높지 않은 상황입니다.

 

 

이때 2 뉴런의 활성화 값을 높이려면 세 가지 방법이 있습니다.

  1. Bias를 키운다
  2. Weight를 키운다
  3. 이전 층의 Activation 값을 바꾼다

여기서 중요한 포인트는, 모든 가중치를 똑같이 건드리는 게 아니라 활성화 값이 큰 뉴런과 연결된 가중치를 조정하는 것이 훨씬 효과가 크다는 점입니다. 곱해지는 값 자체가 크기 때문이죠.

그런데 3번, 이전 층의 Activation은 우리가 직접 바꿀 수 없는 값입니다. 이전 층의 가중치와 Bias에 의해 결정되는 값이기 때문입니다. 그래서 우리는 "이전 층의 활성화 값이 이렇게 변했으면 좋겠다"는 요구사항을 이전 층으로 넘겨주게 됩니다.

 

이 과정을 출력층의 모든 뉴런(2는 올리고, 나머지 0~9는 내리고)에 대해 합산하고, 그 요구를 다시 그 이전 층으로, 또 그 이전 층으로 반복해서 전달합니다. 이렇게 오차에 대한 수정 요구가 뒤쪽으로 흘러가는 것이 역전파의 핵심 아이디어입니다.

 

그리고 이 계산을 하나의 학습 예제가 아니라 수만 개의 학습 데이터 전체에 대해 반복하고 평균 낸 것이, 우리가 찾고자 했던 비용함수의 음의 Gradient(에 비례하는 값)가 됩니다.

 

그런데 매 스텝마다 전체 학습 데이터에 대해 역전파를 계산하고 평균을 내는 것은 너무 느립니다. 그래서 실제로는 효율을 위해 데이터의 일부만 사용하게 됩니다.

  • 미니배치(Mini-batch): 훈련 데이터를 무작위로 섞은 뒤 작은 묶음으로 나누고, 묶음 단위로 Gradient를 계산해 Weight와 Bias를 업데이트합니다. 전체 데이터로 구한 진짜 기울기와는 차이가 있지만 좋은 근사치를 훨씬 빠르게 제공합니다.
  • 확률적 경사하강법(SGD): 이렇게 전체 데이터가 아닌 무작위 샘플(또는 미니배치)로 기울기를 근사해 내려가는 방식을 말합니다. 술 취한 사람이 비틀거리며 언덕을 내려가는 것처럼 경로는 들쭉날쭉하지만, 훨씬 빠른 걸음으로 결국 local minimum에 수렴하게 됩니다.

왼쪽은 전체 데이터를 사용한 경사하강법, 오른쪽은 미니배치

 

 

역전파가 잘 작동하기 위해서는 데이터를 잘 선정하는 것이 중요하며 레이블링을 잘하는 것이 학습 속도에 영향을 미치기도 합니다.

이렇게 역전파에 대한 개념을 알아봤으니 이제는 실제로 역전파 계산에 대해 다뤄보도록 하겠습니다.

 

✅ 역전파 계산해보기

역전파 알고리즘의 과정에는 총 3단계가 있습니다.

 

1단계는 Feedforward(순전파), 2단계는 손실계산 그리고 3단계가 바로 BackPropagation(역전파) 입니다.

각각의 단계를 천천히 알아보며 실제 계산을 해보도록 하겠습니다.

 

순전파(Feedforward)

 

입력값으로 그림과 같이 0.5와 0.3이 주어진다고 하겠습니다.

각각의 값에 가중치를 곱하고 이를 합하면 z1의 경우 0.47이라는 값을 가지게 됩니다.

그리고 이 값에 sigmoid를 취하면 0.615라는 값을 구할 수 있게되며 h1의 값은 0.615가 됩니다. 동일한 방식으로 h2를 구하면 0.582가 되죠.

이렇게 구한 0.615와 0.582를 입력 값으로 하여 같은 방식을 반복하면 최종 결과 값인 O1 는 0.645라는 결과 값을 가지게 됩니다.

 

손실 계산(MSE - 평균제곱오차 사용)

 

우리는 평균제곱오차(MSE)를 사용할 것이므로 공식은 위와 같습니다.

참고로 여기서는 출력층 뉴런이 1개이기 때문에 n은 1이 됩니다.

 

각각 구한 값들을 대입하면 

이런 값을 얻을 수 있고 오차 즉 C는 0.126이 나옵니다.

 

역전파(Back Propagation)

이제 역전파의 과정입니다.

역전파는 Cost를 줄이기 위해 가중치(Weight)와 Bias를 조정하는 과정이라고 했습니다.

즉 우리는 w5를 조정할 것 입니다.

가중치 학습법은 위와 같습니다.

 

이때 w5에 대한 C의 편미분 값은 바로 구할 수 없기 때문에 이전에 알아본 방식대로 트릭, 즉 체인룰(Chain Rule)을 적용해줍니다.

*Chain Rule: 우리가 어떤 두 변수의 미분 값을 구하려고 하나 그 관계를 모를 때 각각 아는 미분 값으로 연쇄적으로 확장시켜 나가면 어려운 문제도 부분들을 해결하면서 전체를 해결할 수 있다.

 

체인룰을 하나하나 계산하여 새 연결강도를 구하는 공식에 넣어주면 0.551 이라는 값을 찾을 수 있게 됩니다.

이제 w5는 0.551이라는 값으로 업데이트 되게 됩니다. 같은 방식으로 w6를 구하게 되면 0.4595 라는 값을 가지게 되죠.

이렇게 모든 가중치 값을 업데이트 하여 C 값을 새로 계산하면 0.1245라는 값을 가지게 되며 이전 오차였던 0.126과 비교했을 때 오차가 줄어들었음을 알 수 있습니다.

 

이렇게 3단계를 반복하는 것을 학습(training) 또는 최적화(Optimization)이라고 부릅니다

 

 

오늘은 이렇게 역전파(Back Propagation)에 대해 알아봤습니다.

감사합니다

 

 

출처

https://www.youtube.com/watch?v=tkH7KgLZc0E

https://www.youtube.com/watch?v=tkH7KgLZc0E

https://www.youtube.com/watch?v=DMCJ_GjBXwc

 

'AI' 카테고리의 다른 글

AI - 경사하강법(Gradient Descent)  (0) 2026.08.03
AI - Neural Network(인공신경망)  (0) 2026.07.30
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/08   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함