# 역전파 (Backpropagation)

#### 역전파의 기초 개념 (Fundamental Concepts of Backpropagation)

역전파(Backpropagation)는 인공신경망의 학습 과정에서 오차를 최소화하기 위해 가중치를 조정하는 알고리즘이다. 이 알고리즘은 다층 신경망(multilayer neural networks)에서 특히 중요한 역할을 하며, 네트워크의 출력과 목표 출력 사이의 차이를 바탕으로 각 가중치의 기여도를 계산하여 가중치를 갱신한다. 역전파는 경사 하강법(Gradient Descent)과 결합되어 신경망의 최적화를 수행한다.

역전파는 순전파(forward propagation)로부터 시작된다. 순전파는 입력 데이터를 받아들여 출력층까지의 계산을 진행하는 과정이며, 이 과정에서 각 계층의 뉴런은 입력 데이터를 기반으로 활성화 함수를 통해 출력을 생성한다. 이후 출력과 목표 값 사이의 오차를 계산하고, 이 오차를 각 계층의 가중치로 역전파하여 업데이트한다. 역전파 과정은 네트워크의 모든 가중치가 오차를 줄이는 방향으로 조정되도록 설계되었다.

#### 역전파의 수학적 표현 (Mathematical Formulation of Backpropagation)

역전파의 수학적 기초는 연쇄 법칙(chain rule)으로 표현된다. 연쇄 법칙은 복잡한 함수의 미분을 개별 함수의 미분으로 나눌 수 있도록 해준다. 신경망에서, 역전파는 네트워크의 출력으로부터 입력층까지의 가중치와 편향(bias)을 조정하기 위해 이 법칙을 활용한다.

신경망의 손실 함수(loss function)를 $ L $이라고 할 때, 특정 가중치 $ w $에 대한 손실 함수의 변화율(즉, 그래디언트)은 다음과 같이 계산된다:

$$
\frac{\partial L}{\partial w} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial w}
$$

여기서:

* $ \frac{\partial L}{\partial a} $는 출력 활성화 값에 대한 손실의 변화율이다.
* $ \frac{\partial a}{\partial z} $는 활성화 함수의 도함수이다.
* $ \frac{\partial z}{\partial w} $는 입력 신호에 대한 가중치의 변화율이다.

이 과정은 네트워크의 각 계층마다 적용되며, 출력층에서부터 시작하여 역방향으로 계산이 진행된다.

#### 역전파의 단계별 과정 (Step-by-Step Process of Backpropagation)

역전파 알고리즘은 다음의 주요 단계들로 구성된다.

* **순전파 단계 (Forward Pass)**: 입력 데이터를 받아들여 네트워크를 통해 전달하고, 출력 값을 계산한다. 이 단계에서 각 뉴런의 입력과 출력을 기록하여 후속 단계에서 사용된다.
* **손실 계산 (Loss Computation)**: 출력 값과 실제 목표 값 사이의 오차를 계산한다. 일반적으로 사용되는 손실 함수로는 평균 제곱 오차(MSE: Mean Squared Error), 교차 엔트로피(Cross-Entropy) 등이 있다.
* **역전파 단계 (Backward Pass)**: 출력층에서부터 시작하여 입력층까지, 각 계층의 가중치와 편향에 대한 그래디언트를 계산한다. 이 과정에서 연쇄 법칙을 적용하여 각 계층에서 손실 함수의 그래디언트를 계산한다.
* **가중치 갱신 (Weight Update)**: 계산된 그래디언트를 사용하여 가중치와 편향을 업데이트한다. 이 단계에서는 경사 하강법이 주로 사용되며, 가중치 $ w $는 다음과 같이 업데이트된다:

$$
w := w - \eta \frac{\partial L}{\partial w}
$$

여기서 $ \eta $는 학습률(learning rate)로, 가중치 갱신의 크기를 결정하는 중요한 하이퍼파라미터이다.

#### 역전파의 문제점과 해결책 (Challenges and Solutions in Backpropagation)

역전파는 강력한 알고리즘이지만 몇 가지 문제점을 내포하고 있다. 대표적인 문제로는 기울기 소실(Vanishing Gradient)과 기울기 폭발(Exploding Gradient) 문제가 있다.

* **기울기 소실 (Vanishing Gradient)**: 신경망의 깊이가 깊어질수록, 역전파 과정에서 초기 계층의 그래디언트가 매우 작아져서 사실상 학습이 이루어지지 않는 문제가 발생할 수 있다. 이 문제를 해결하기 위해 ReLU(Rectified Linear Unit)와 같은 비선형 활성화 함수가 사용되며, 이는 그래디언트의 크기를 일정하게 유지하는 데 도움을 준다.
* **기울기 폭발 (Exploding Gradient)**: 기울기 소실의 반대 문제로, 그래디언트가 비정상적으로 커져서 가중치가 지나치게 크게 갱신되는 문제이다. 이를 해결하기 위해 그래디언트 클리핑(Gradient Clipping)과 같은 기법이 사용된다.

또한, 역전파 알고리즘은 네트워크의 초기 가중치 설정과 학습률에 매우 민감한다. 초기 가중치 설정이 적절하지 않으면 학습이 제대로 이루어지지 않을 수 있으며, 학습률이 너무 크거나 작으면 학습 과정이 불안정해질 수 있다. 이를 개선하기 위해 학습률 스케줄링(Learning Rate Scheduling)이나 Adam과 같은 적응형 최적화 알고리즘이 도입되었다.

#### 고급 역전파 기법 (Advanced Backpropagation Techniques)

역전파의 기본 개념 외에도, 신경망의 성능을 높이기 위해 여러 고급 기법들이 개발되었다.

* **모멘텀 (Momentum)**: 모멘텀은 이전 업데이트의 방향성을 반영하여 현재의 가중치 업데이트에 적용하는 방법이다. 이는 경사 하강법의 수렴 속도를 높이고, 지역 최적해(local minima)에 빠지는 것을 방지하는 데 도움을 준다.
* **RMSProp**: RMSProp은 기울기의 크기에 따라 학습률을 조정하는 방법으로, 학습률이 너무 크거나 작아지는 것을 방지한다. 이는 특히 심층 신경망에서 효과적으로 사용된다.
* **Adam (Adaptive Moment Estimation)**: Adam은 모멘텀과 RMSProp을 결합한 최적화 알고리즘으로, 학습률을 자동으로 조정하여 학습 속도를 향상시키고, 최적화의 안정성을 높인다.

***

관련 자료:

1. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
2. Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323(6088), 533-536.
3. He, K., Zhang, X., Ren, S., & Sun, J. (2015). Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification. In Proceedings of the IEEE International Conference on Computer Vision (pp. 1026-1034).
4. Kingma, D. P., & Ba, J. (2014). Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980.
