순전파와 역전파
순전파 (Forward Propagation)는 입력이 주어지면, 신경망을 통해 입력층에서 출력층까지 차례대로 계산하여 출력을 얻는 과정이다.
이 과정에서 각 계층은 입력 데이터를 바탕으로 가중치와 편향을 적용하고, 그 결과를 활성화 함수에 전달하여 최종 출력을 추론한다.
역전파 (Backward Propagation)는 순전파의 반대 방향으로 진행되며, 순전파 과정에서 발생한 오차를 이용해 각 계층의 기울기를 계산한 뒤, 가중치와 편향을 조정하여 신경망을 최적화한다. 미분 값을 구하는 과정에서 연쇄 법칙이 활용된다.
연쇄 법칙
연쇄 법칙 (Chain Rule)은 합성 함수, 예로 들어 함수 $ h(x) = f(g(x)) $ 등의 형태를 미분하는 법칙이다. 합성 함수의 미분은 다음과 같이 구할 수 있다.
$$ \frac{d}{dx} f(g(x)) = \frac{df}{dg} \cdot \frac{dg}{dx} $$
이 법칙은 편미분에도 적용할 수 있다.
$$ \frac{\partial f}{\partial x} = \frac{\partial f}{\partial y} \cdot \frac{\partial y}{\partial x} $$
순전파, 역전파의 계산
이 글에서는 순전파와 역전파의 과정을 간략하게 설명하기 위해, 간단한 계산 그래프 (Computational graph)를 활용한다.

$ x $의 값은 -2, $ y $의 값은 5, $ z $의 값은 -4일 때, 함수 $ f \left(x, y, z\right) = \left(x + y\right)z$ 의 도함수 $ f' \left(x, y, z\right) $ 을 구하는 과정을 살펴보겠다.
우선 순전파를 통해 각 노드의 출력값을 계산한다.
$$ q = x + y \quad f = qz $$
그 다음, 역전파를 통해 미분 값을 계산한다. $ \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z}$ 를 구하는 것이 목표이다.
$ f = qz $ 이기 때문에 $ \frac{\partial f}{\partial z} = q = 3, \frac{\partial f}{\partial q} = z = 1 $ 임은 쉽게 구할 수 있으나, $ \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y} $ 를 구하기 위해선 연쇄 법칙을 활용해야 한다.
$$ \frac{\partial f}{\partial x} = \frac{\partial f}{\partial q} \cdot \frac{\partial q}{\partial x} = z \cdot 1 = -4,\quad\frac{\partial f}{\partial y} = \frac{\partial f}{\partial q} \cdot \frac{\partial q}{\partial y} = z \cdot 1 = -4$$

위의 방식처럼, 역전파는 Upstream Gradient (이전 노드에서 전파된 미분값)와 Local Gradient (현재 연산에 대한 미분값)을 곱해 최종값을 구한다.
'ML · DL > Pytorch 공부' 카테고리의 다른 글
| [파이토치 기초] 이진 분류 (0) | 2025.01.13 |
|---|---|
| [파이토치 기초] 모델 저장/불러오기 (0) | 2025.01.09 |
| [파이토치 기초] 데이터세트 분리 (0) | 2025.01.07 |
| [파이토치 기초] 모듈 (0) | 2025.01.04 |
| [파이토치 기초] 데이터세트 & 데이터로더 (0) | 2024.12.30 |