비선형 활성화 함수
비선형 활성화 함수(Non-linear Activations Function)는 네트워크에 비선형성을 적용하기 위해 인공 신경망에서 사용하는 함수로, 선형적인 $ax + b$ 형식을 사용하지 않는다.
실제 사용하는 입출력 데이터는 대부분 비선형적인 구조를 가지기 때문에, 비선형 활성화 함수를 사용해야 데이터를 정확하게 분석할 수 있다.
시그모이드 함수
시그모이드 함수(Sigmoid Function)는 모든 입력값을 0과 1 사이의 값으로 변환하며, 주로 이진 분류 신경망의 출력 계층에서 활성화 함수로 사용된다.
출력값이 0 ~ 1의 범위를 가져 기울기 폭주 현상을 방지할 수 있으나, 매우 큰 입력값이 입력대도 최대 1의 값을 갖게 되어 기울기 소실이 발생한다.
또한 출력값의 중심이 0이 아니므로 입력 데이터가 항상 양수라면, 기울기는 모두 양수 또는 음수가 되어 기울기가 지그재그로 변해 학습 효율성이 떨어진다.
인공 신경망의 레이어가 많아지면 기울기의 값이 점점 0에 수렴하는 문제가 발생해 성능이 떨어지므로, 시그모이드 함수는 주로 출력층에서만 사용된다.
$$ Sigmoid(x) = \sigma(x)\frac{1}{1 + e^-x} $$

하이퍼볼릭 탄젠트 함수
하이퍼볼릭 탄젠트 함수(Hyperbolic Tangent Function)는 시그모이도 함수와 유사한 형태를 지니지만, 출력값의 중심이 0이다.
또한 출력값이 -1 ~ 1의 범위를 가지므로 시그모이드 함수에서 발생하지 않는 음수값 또한 반환할 수 있다.
기울기 소실이 시그모이드 함수에 비해 덜 발생하지만, 입력값이 4보다 큰 경우 출력값이 1에 수렴해 기울기 소실이 발생한다.
$$ Tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} $$

ReLU 함수
ReLU 함수 (Rectified Linear Unit Function)는 0 이하의 구간에선 0을 반환하고, 0 초과의 구간에선 선형 함수에 값을 대입하는 구조의 함수이다.
시그모이드 함수나 하이퍼볼릭 탄젠트 함수와 달리, ReLU 함수는 출력 값에 제한이 없어 기울기 소실 문제를 방지하며, 함수가 간단해 순전파와 역전파에서 연산 속도가 빠르다.
하지만 입력 값이 음수일 경우 항상 0을 반환하므로, 가중치나 편향이 갱신되지 않는 **죽은 뉴런** 문제가 발생할 수 있다는 단점이 있다.
오늘날 딥러닝 네트워크에서 가장 널리 사용되는 효과적인 활성화 함수 중 하나이다.
$$
\text{ReLU}(x) =
\begin{cases}
x & \text{if}\quad x > 0 \\
0 & \text{otherwise}
\end{cases}
$$

Leaky ReLU 함수
LeakyReLU 함수 (Leaky Rectified Linear Unit Function)는 음수 입력값에 대해서 0보다 작은 기울기를 도입해 음수 영역에서도 작은 값을 출력하도록 ReLU 함수를 수정한 함수이다.
작은 값이라도 출력시켜 기울기를 갱신하면, 네트워크의 성능을 향상시키는 데 도움이 된다.
$$
\text{LeakyReLU}(x) =
\begin{cases}
x & \text{if}\quad x > 0 \\
0.1x & \text{otherwise}
\end{cases}
$$

PReLU 함수
PReLU 함수 (Parametric Rectified Linear Unit Function)는 LeakyReLU와 형태가 동일하지만, 기울기 값을 고정하지 않고, 학습을 통해 갱신되는 $\alpha$ 로 간주한다.
$\alpha$ 는 값이 지속해서 갱신되는 매개변수이므로, 학습 데이터세트에 영향을 받는다.
$$
\text{PReLU}(x) =
\begin{cases}
x & \text{if}\quad x > 0 \\
\alpha \times x & \text{otherwise}
\end{cases}
$$

ELU 함수
ELU 함수 (Exponential Linear Unit Function)는 지수 함수를 사용해 부드러운 곡선의 형태를 가지는 함수이다.
ELU 함수는 입력값이 0일 때도 출력값이 급변하지 않아 경사 하강법의 수렴 속도가 ReLU 함수에 비해 빠르지만, 연산이 복잡해 학습 속도는 더 느려진다.
$$
\text{ELU}(x) =
\begin{cases}
x & \text{if}\quad x > 0 \\
\alpha (e^x - 1) & \text{otherwise}
\end{cases}
$$

소프트맥수 함수
소프트맥스 함수 (Softmax Function)는 차원 벡터에서 특정 출력값이 k번째 클래스에 속할 확률을 계산하는 함수로, 은닉층이 아닌 출력층에서 사용된다.
$$
p_k = \frac{e^{2k}}{\sum_{i=1}^n e^{z_i}}
$$