# 인공신경망 : 순전파 (Artificial Neural Networks: Forward Propagation)

#### 순전파의 개요 (Overview of Forward Propagation)

순전파(Forward Propagation)는 인공신경망에서 입력 데이터가 네트워크를 통해 처리되어 최종 출력을 생성하는 과정을 의미한다. 이 과정은 네트워크의 각 계층(layer)을 통과하면서 입력 데이터가 점차적으로 변환되고, 최종적으로 출력층에서 예측값이 도출된다. 순전파는 신경망의 학습 및 예측 단계 모두에서 필수적인 과정이며, 네트워크의 성능을 평가하는 데 중요한 역할을 한다.

#### 입력 데이터의 처리 (Processing of Input Data)

순전파 과정은 입력층에서 시작된다. 입력층에서는 외부 데이터가 네트워크로 들어오며, 이 데이터는 각각의 특징(feature)에 해당하는 뉴런들로 전달된다. 입력 데이터가 네트워크에 들어오면, 각 뉴런은 이 데이터를 가중합(weighted sum) 형태로 계산한다.

각 입력 데이터 $ x\_i $는 해당 가중치 $ w\_i $와 곱해진 후, 모든 입력 값들이 더해진다. 이 가중합은 아래와 같이 표현할 수 있다:

$$
z = \sum\_{i=1}^{n} w\_i x\_i + b
$$

여기서 $ b $는 바이어스(bias) 항으로, 뉴런의 출력값을 조정하는 역할을 한다. 이 값은 네트워크가 학습을 통해 최적화한다.

#### 활성화 함수의 역할 (Role of Activation Functions)

입력 데이터가 가중합으로 변환된 후, 활성화 함수(activation function)가 이 가중합을 처리한다. 활성화 함수는 순전파에서 중요한 역할을 하며, 입력 데이터에 비선형성을 부여하여 신경망이 복잡한 패턴을 학습할 수 있도록 한다.

대표적인 활성화 함수는 다음과 같다:

* **시그모이드 함수 (Sigmoid Function)**: 출력값을 0과 1 사이의 값으로 제한하며, 주로 이진 분류 문제에서 사용된다. 시그모이드 함수는 다음과 같이 정의된다:

$$
\sigma(z) = \frac{1}{1 + e^{-z}}
$$

* **렐루 함수 (ReLU, Rectified Linear Unit)**: 현재 가장 널리 사용되는 활성화 함수로, 입력값이 0보다 크면 그대로 출력하고, 0보다 작으면 0을 출력한다. ReLU는 계산이 간단하고, 학습 속도가 빠르다는 장점이 있다:

$$
f(z) = \max(0, z)
$$

* **소프트맥스 함수 (Softmax Function)**: 출력층에서 주로 사용되며, 여러 클래스로 분류할 때 각 클래스에 대한 확률 분포를 계산한다. 이 함수는 다음과 같이 정의된다:

$$
\text{softmax}(z\_i) = \frac{e^{z\_i}}{\sum\_{j=1}^{K} e^{z\_j}}
$$

각 뉴런의 출력값은 이러한 활성화 함수를 거쳐 비선형적인 결과값으로 변환되며, 다음 계층으로 전달된다.

#### 은닉층과 출력층에서의 데이터 흐름 (Data Flow in Hidden and Output Layers)

순전파 과정에서 입력층을 통과한 데이터는 은닉층(hidden layers)으로 전달된다. 은닉층에서는 각 뉴런이 이전 계층의 출력을 입력으로 받아 다시 가중합을 계산하고, 활성화 함수를 적용하여 출력을 생성한다. 이 과정은 네트워크의 모든 은닉층을 통과하면서 반복된다.

각 은닉층은 신경망의 복잡성을 더해주며, 네트워크가 점점 더 복잡한 특징을 학습할 수 있게 한다. 깊이 있는 신경망(즉, 은닉층이 많은 신경망)은 이러한 과정에서 다양한 고차원 특징을 학습하게 된다.

마지막으로, 은닉층을 모두 통과한 데이터는 출력층으로 전달된다. 출력층에서는 최종 예측값이 생성되며, 이 값은 보통 분류 문제에서는 클래스의 확률로, 회귀 문제에서는 연속적인 값으로 나타난다.

#### 순전파의 수학적 표현 (Mathematical Representation of Forward Propagation)

순전파 과정을 수학적으로 표현하면, 각 계층 $ l $에서의 출력 $ a^{(l)} $는 다음과 같이 계산된다:

1. 가중합 계산:

$$
z^{(l)} = W^{(l)} a^{(l-1)} + b^{(l)}
$$

여기서 $ W^{(l)} $는 현재 계층 $ l $의 가중치 행렬, $ a^{(l-1)} $는 이전 계층의 출력, $ b^{(l)} $는 바이어스 벡터이다.

2. 활성화 함수 적용:

$$
a^{(l)} = f(z^{(l)})
$$

여기서 $ f $는 활성화 함수이다.

최종적으로 출력층에서의 결과 $ a^{(L)} $가 예측값이 되며, 이는 네트워크의 출력으로 사용된다.

#### 순전파의 효율성과 최적화 (Efficiency and Optimization in Forward Propagation)

순전파는 신경망의 예측 과정에서 매우 중요한 부분이므로, 이 과정의 효율성을 높이는 것이 중요하다. 일반적으로 순전파는 행렬 곱셈 연산을 많이 포함하고 있으므로, 병렬 처리(parallel processing) 및 GPU(Graphics Processing Unit) 활용이 중요하다. 또한, 적절한 활성화 함수의 선택과 네트워크 구조의 설계가 순전파의 효율성과 성능을 크게 좌우한다.

***

관련 자료:

1. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
2. Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.
3. LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. Nature, 521(7553), 436-444.
4. Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323(6088), 533-536.
