# 층의 구조 : 출력층 (Layer Structure: Output Layer)

#### 출력층의 역할 (Role of the Output Layer)

출력층(Output Layer)은 인공신경망의 최종 단계에 위치하며, 네트워크의 입력 데이터를 처리한 후 도출된 예측값을 외부로 내보내는 역할을 한다. 출력층은 네트워크가 해결하려는 문제의 성격에 따라 그 구조와 활성화 함수가 달라지며, 이는 신경망의 정확성과 성능에 직접적인 영향을 미친다.

출력층의 뉴런 수는 네트워크가 다루는 문제의 종류와 밀접하게 관련되어 있다. 예를 들어, 이진 분류 문제에서는 하나의 출력 뉴런을, 다중 클래스 분류 문제에서는 클래스의 수만큼의 출력 뉴런을 사용한다. 회귀 문제의 경우에는 일반적으로 하나의 출력 뉴런이 사용되며, 이 뉴런은 예측 값을 실수로 나타낸다.

#### 출력층의 활성화 함수 (Activation Functions in the Output Layer)

출력층에서 선택되는 활성화 함수는 네트워크의 최종 출력 형태를 결정하는 데 중요한 역할을 한다. 각기 다른 문제 유형에 따라 활성화 함수가 다르게 설정되며, 이는 예측 결과의 해석에 큰 영향을 미친다.

* **이진 분류(Binary Classification)**: 이진 분류 문제에서 출력층은 하나의 뉴런을 가지며, 주로 시그모이드(sigmoid) 활성화 함수가 사용된다. 시그모이드 함수는 입력 값을 0과 1 사이의 확률 값으로 변환하여, 특정 클래스에 속할 확률을 나타낸다. 시그모이드 활성화 함수의 출력은 다음과 같다:

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

* **다중 클래스 분류(Multi-class Classification)**: 다중 클래스 분류 문제에서는 출력층이 여러 뉴런을 가지며, 각 뉴런이 특정 클래스에 대응한다. 이 경우, 주로 소프트맥스(softmax) 활성화 함수가 사용된다. 소프트맥스 함수는 모든 출력 뉴런의 값을 확률 분포로 변환하여, 각 클래스에 속할 확률을 계산한다. 소프트맥스 함수의 정의는 다음과 같다:

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

여기서 $ z\_i $는 i번째 클래스에 대한 네트워크의 예측 값을 나타내며, K는 총 클래스의 수이다.

* **회귀(Regression)**: 회귀 문제에서 출력층은 일반적으로 하나의 뉴런을 가지며, 활성화 함수로는 선형 함수(linear function)가 사용된다. 선형 함수는 입력 값을 그대로 출력으로 전달하며, 이는 예측 값이 실수 범위에서 자유롭게 나올 수 있도록 한다. 선형 활성화 함수의 수학적 표현은 다음과 같다:

$$
f(x) = x
$$

#### 출력층의 손실 함수 (Loss Functions Associated with the Output Layer)

출력층은 신경망의 예측 결과를 외부로 전달할 뿐만 아니라, 네트워크의 성능을 측정하는 손실 함수와도 밀접한 관련이 있다. 출력층의 활성화 함수와 네트워크의 학습 목표에 따라 적절한 손실 함수가 선택되며, 이는 신경망의 학습 과정에서 중요한 역할을 한다.

* **이진 분류**: 이진 분류 문제에서는 주로 이진 교차 엔트로피 손실(Binary Cross-Entropy Loss)이 사용된다. 이 손실 함수는 네트워크가 이진 분류 문제를 해결하는 데 최적화되도록 설계되었다.

$$
\text{Binary Cross-Entropy Loss} = -\left\[y \log(\hat{y}) + (1-y) \log(1-\hat{y})\right]
$$

여기서 $ y $는 실제 라벨, $ \hat{y} $는 네트워크의 예측 확률이다.

* **다중 클래스 분류**: 다중 클래스 분류 문제에서는 교차 엔트로피 손실(Categorical Cross-Entropy Loss)이 사용된다. 이 손실 함수는 소프트맥스 출력과 결합되어, 네트워크가 정확한 클래스에 대해 높은 확률을 할당하도록 학습된다.

$$
\text{Categorical Cross-Entropy Loss} = -\sum\_{i=1}^{K} y\_i \log(\hat{y}\_i)
$$

여기서 $ y\_i $는 실제 라벨의 원-핫 인코딩 값, $ \hat{y}\_i $는 소프트맥스 출력 확률이다.

* **회귀**: 회귀 문제에서는 평균 제곱 오차(Mean Squared Error, MSE)가 주로 사용된다. 이 손실 함수는 예측 값과 실제 값 사이의 차이를 제곱하여 평균을 구한 값으로, 예측 오차를 최소화하는 데 사용된다.

$$
\text{MSE} = \frac{1}{N} \sum\_{i=1}^{N} (y\_i - \hat{y}\_i)^2
$$

여기서 $ N $은 데이터 포인트의 수, $ y\_i $는 실제 값, $ \hat{y}\_i $는 예측 값이다.

#### 출력층의 설계 고려사항 (Design Considerations for the Output Layer)

출력층의 설계는 신경망의 전체 성능에 중대한 영향을 미치며, 다음과 같은 요소들을 고려해야 한다:

* **뉴런의 수**: 출력층의 뉴런 수는 문제의 성격에 따라 달라져야 한다. 이진 분류의 경우 하나의 뉴런, 다중 클래스 분류의 경우 클래스 수에 해당하는 뉴런 수를 설정한다.
* **활성화 함수의 선택**: 활성화 함수는 예측 결과의 형태를 결정하며, 적절한 함수의 선택은 네트워크의 성능을 크게 좌우한다.
* **손실 함수와의 일관성**: 출력층의 활성화 함수와 손실 함수는 일관성을 가져야 한다. 예를 들어, 소프트맥스 활성화 함수는 교차 엔트로피 손실과 결합되는 것이 일반적이다.
* **출력 값의 해석**: 출력층의 결과는 모델의 최종 결과로 해석되기 때문에, 출력 값이 문제의 요구사항을 만족하는지 항상 검토해야 한다.

***

관련 자료:

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.
