💻 본업(컴공생) 이야기/파이토치 공부 이야기

[파이토치 (PyTorch)] 4. Back-propagation (역전파)

st오리🐥 2025. 1. 7. 16:28
728x90
반응형
SMALL
 

 

역전파(Backpropagation)란?

Back-propagation는 인공신경망(Artificial Neural Network)에서 오차(에러)를 줄이기 위해 가중치(weight)편향(bias)을 업데이트하는 핵심 알고리즘입니다.

쉽게 말해, "결과가 틀렸을 때, 왜 틀렸는지 되돌아가면서 원인을 찾고 수정하는 과정"이에요.

 
 
 

  • 역전파(Backpropagation)는 신경망의 손실을 줄이기 위해 가중치를 조정하는 알고리즘입니다.
  • 순전파 → 손실 계산 → 역전파 → 가중치 업데이트 과정을 반복하여 최적의 모델을 학습합니다.
  • 체인 룰을 사용해 각 층의 기울기를 계산하고, 경사하강법으로 최적화합니다.

 

1. 개념 설명

  1. 순전파(Forward Propagation):
    • 입력 데이터를 네트워크에 통과시켜 출력을 계산합니다.
    • 예측값을 생성합니다.
  2. 손실 계산(Loss Calculation):
    • 예측값과 실제값 사이의 차이를 측정합니다.
    • 예: 평균제곱오차(MSE)나 교차 엔트로피(Cross Entropy)를 사용.
  3. 역전파(Backward Propagation):
    • 손실 값을 기준으로 기울기(Gradient)를 계산합니다.
    • 각 가중치가 손실에 얼마나 영향을 미치는지 분석합니다.
    • 가중치를 경사하강법(Gradient Descent)으로 업데이트합니다.
  4. 업데이트(Update):
    • 가중치와 편향을 조정하여 오차를 줄여 더 나은 결과를 예측하도록 합니다.

 
 

2. 역전파의 수학적 원리

1) 손실 함수의 변화 계산

손실 함수 L에 대해 각 가중치 W가 손실에 얼마나 영향을 주는지 편미분(기울기)을 계산합니다.

 

2) 체인 룰(Chain Rule) 적용

다층 신경망에서는 여러 층을 거치면서 계산되므로, **연쇄 법칙(chain rule)**을 사용해 각 층의 기울기를 계산합니다.
예:

 

3) 가중치 업데이트

경사하강법을 사용하여 가중치를 업데이트합니다.

여기서 η는 학습률(learning rate)입니다.

 

 

아래 사진은 다중 신경망 DNN (Deep Neural Network) 입니다.

그림처럼 [입력층(input layer) : 입력 데이터 제공 , 은닉층(hidden layer) : 입력 데이터의 패턴 학습(가중치와 활성화 함수를 사용하여), 출력층(output layer) : 최종 예측 결과 생성]으로 구성되어있습니다.

 

DNN의 학습목표는 '가중치와 편향을 조절하여 입력값과 출력값 사이의 관계를 최적화 하는 것' 이며 은닉층이 많아질수록 기울기를 계산하고 가중치를 조정하는 과정이 복잡해지기 때문에 해결책으로 역전파 알고리즘을 통해 각 층의가중치를 조정하여 손실을 최소화합니다.

 

DNN에서의 학습 프로세스

  1. 순전파(Forward Propagation):
    • 입력 데이터를 각 층을 통과시키면서 예측값(출력)을 계산.
  2. 손실 계산(Loss Calculation):
    • 예측값과 실제값의 차이(오차)를 계산하여 성능 평가.
  3. 역전파(Backward Propagation):
    • 손실이 최소화되도록 가중치와 편향을 업데이트.
    • **기울기(Gradient)**를 체인 룰(Chain Rule)을 사용해 역방향으로 전달.
  4. 경사하강법(Gradient Descent):
    • 계산된 기울기를 바탕으로 가중치를 조금씩 조정하여 손실 감소.
  5.  

 

역전파 계산 과정 

  • 내용: 역전파(Backward Propagation)의 수식을 보여줍니다.
  • 포인트:
    • 각 레이어에서의 로컬 기울기(Local Gradient)를 계산하고, 이를 연쇄 법칙(Chain Rule)으로 곱하여 최종적으로 손실(Loss)에 대한 입력값의 기울기를 구합니다.
    • 예제:
      1. 주어진 ∂L / ∂z =5
      2. x=2,y=3
      3. ∂z/ ∂x =y 3
      4. ∂L / ∂x = 5⋅3 = 15

 

 

 

역전파(Backward Pass)

  • 내용: 역전파를 통해 기울기(Gradient)를 계산하고 가중치를 업데이트합니다.
  • 포인트:
    • 각 연산 노드의 미분 값을 구합니다.
    • 예제:
      1. 손실에 대한 의 기울기: ∂loss / ∂s = 2s = −2
      2. 에 대한 y(hat)의 기울기: ∂s / ∂y(hat)= −1
      3. 최종 기울기: ∂loss / ∂w= −2⋅1 = −2 

 

 

 
https://colab.research.google.com/drive/1-8UcrM53JAiPfd6j35vZ2Ppc4Zz3gkEG?usp=sharing

 

Back-propagation

Colab notebook

colab.research.google.com

 

 

 

 

 

 

 

 

728x90
반응형
LIST