# 활성화 함수 (Activation Functions)

#### 활성화 함수의 개요 (Overview of Activation Functions)

활성화 함수(Activation Function)는 인공신경망에서 매우 중요한 역할을 하는 구성 요소로, 뉴런의 입력 가중합(weighted sum)을 받아 이를 출력 값으로 변환하는 비선형 함수이다. 활성화 함수는 신경망이 단순한 선형 회귀 모델이 아니라, 비선형적인 복잡한 패턴을 학습하고 표현할 수 있도록 도와준다. 이를 통해 인공신경망은 이미지 인식, 자연어 처리 등과 같은 복잡한 문제를 해결할 수 있는 능력을 갖추게 된다.

활성화 함수는 네트워크의 성능과 학습 과정에 직접적인 영향을 미치며, 다양한 활성화 함수들이 특정 문제의 특성에 맞게 사용된다.

#### 주요 활성화 함수 (Key Activation Functions)

활성화 함수는 그 특성에 따라 여러 종류가 있으며, 각기 다른 신경망 구조나 문제 유형에 적합하게 선택된다. 여기서는 신경망에서 일반적으로 사용되는 주요 활성화 함수들을 소개한다.

**시그모이드 함수 (Sigmoid Function)**

시그모이드 함수는 가장 오래된 활성화 함수 중 하나로, 출력 값을 0과 1 사이의 값으로 변환한다. 이는 다음과 같은 수식으로 정의된다:

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

시그모이드 함수는 확률적 해석을 가능하게 하며, 이진 분류 문제에서 자주 사용된다. 그러나, 시그모이드 함수는 기울기 소실 문제(vanishing gradient problem)가 발생할 수 있다는 단점이 있다. 기울기 소실 문제는 네트워크의 깊이가 깊어질수록 역전파(backpropagation) 과정에서 그래디언트가 점차 작아져 학습이 제대로 이루어지지 않는 현상을 의미한다.

**하이퍼볼릭 탄젠트 함수 (Hyperbolic Tangent Function, Tanh)**

하이퍼볼릭 탄젠트 함수는 시그모이드 함수와 유사하지만, 출력 범위가 -1에서 1 사이로 확장된다. Tanh 함수는 다음과 같이 정의된다:

$$
\text{tanh}(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}
$$

Tanh 함수는 시그모이드 함수와 비교하여 중심이 0에 위치하기 때문에, 신경망의 학습에서 종종 더 나은 성능을 보이다. 그러나 기울기 소실 문제는 여전히 존재한다.

**렐루 함수 (Rectified Linear Unit, ReLU)**

렐루(ReLU) 함수는 현재 가장 널리 사용되는 활성화 함수 중 하나이다. 렐루 함수는 비선형성을 제공하면서도 계산이 간단하다는 장점이 있다. 렐루 함수는 다음과 같이 정의된다:

$$
\text{ReLU}(x) = \max(0, x)
$$

렐루 함수의 주요 특징은 양수 입력에 대해서는 그대로 출력하고, 음수 입력에 대해서는 0을 출력한다는 것이다. 이로 인해 네트워크가 더욱 깊어지더라도 기울기 소실 문제를 줄일 수 있다. 그러나 렐루 함수는 "죽은 렐루" 문제(dying ReLU problem)라는 단점을 갖는다. 이는 뉴런의 출력이 항상 0이 되어 더 이상 학습하지 않는 현상으로, 특히 큰 음수 입력이 반복적으로 적용될 때 발생할 수 있다.

**리키 렐루 함수 (Leaky ReLU)**

리키 렐루(Leaky ReLU) 함수는 렐루 함수의 변형으로, 죽은 렐루 문제를 해결하기 위해 제안되었다. 리키 렐루 함수는 음수 입력에 대해 작은 기울기를 허용한다. 수식으로는 다음과 같이 정의된다:

$$
\text{Leaky ReLU}(x) = \begin{cases} x & \text{if } x > 0 \ \alpha x & \text{if } x \leq 0 \end{cases}
$$

여기서 $ \alpha $는 작은 양의 상수로, 일반적으로 0.01로 설정된다. 이를 통해 뉴런이 죽지 않고, 어느 정도 학습을 지속할 수 있게 된다.

**소프트맥스 함수 (Softmax Function)**

소프트맥스(Softmax) 함수는 주로 다중 클래스 분류 문제에서 출력층에서 사용되는 활성화 함수이다. 이 함수는 입력 벡터를 확률 분포로 변환하여 각 클래스에 대한 확률을 계산한다. 소프트맥스 함수는 다음과 같이 정의된다:

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

소프트맥스 함수는 네트워크의 출력이 여러 클래스에 대한 확률로 해석될 수 있도록 하여, 각 클래스에 속할 가능성을 비교할 수 있게 한다.

#### 활성화 함수 선택 기준 (Criteria for Selecting Activation Functions)

활성화 함수는 신경망의 성능에 큰 영향을 미치기 때문에, 문제의 특성에 맞는 적절한 활성화 함수를 선택하는 것이 중요하다. 다음은 활성화 함수를 선택할 때 고려해야 할 주요 기준이다.

* **비선형성**: 신경망이 복잡한 패턴을 학습하기 위해서는 활성화 함수가 비선형성을 제공해야 한다. 비선형 활성화 함수는 신경망이 입력 데이터에 대한 비선형 관계를 모델링할 수 있게 한다.
* **기울기 소실 문제**: 깊은 신경망의 경우, 기울기 소실 문제를 피하기 위해 렐루 계열의 활성화 함수를 사용하는 것이 일반적이다.
* **출력 범위**: 특정 문제에서는 출력 값의 범위가 중요한 역할을 할 수 있다. 예를 들어, 확률 해석이 필요한 경우 시그모이드나 소프트맥스 함수가 적합한다.
* **계산 효율성**: 활성화 함수의 계산 복잡도는 신경망의 학습 속도에 영향을 미칠 수 있다. 렐루 함수는 계산이 매우 간단하여 대규모 신경망에서 효율적으로 사용된다.

#### 결합 활성화 함수 (Composite Activation Functions)

어떤 경우에는 단일 활성화 함수가 아닌 여러 활성화 함수를 조합하여 사용하는 것이 효과적일 수 있다. 예를 들어, 층별로 다른 활성화 함수를 사용하거나, 동일한 층에서 서로 다른 뉴런에 대해 다른 활성화 함수를 사용하는 방식이다. 이러한 접근 방식은 신경망이 다양한 패턴을 더 잘 학습할 수 있도록 돕는다.

***

관련 자료:

1. Nair, V., & Hinton, G. E. (2010). Rectified linear units improve restricted boltzmann machines. In Proceedings of the 27th international conference on machine learning (ICML-10) (pp. 807-814).
2. Maas, A. L., Hannun, A. Y., & Ng, A. Y. (2013). Rectifier nonlinearities improve neural network acoustic models. In Proc. icml (Vol. 30, No. 1, p. 3).
3. Glorot, X., & Bengio, Y. (2010). Understanding the difficulty of training deep feedforward neural networks. In Proceedings of the thirteenth international conference on artificial intelligence and statistics (pp. 249-256).
4. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
