활성함수
활성화 함수(Activation Function)는 인공 신경망에서 뉴런의 출력을 결정하는 함수로, 입력 신호를 받아 특정 기준에 따라 출력을 변환합니다.
활성화 함수는 입력 신호가 뉴런을 통과할 때 그 신호를 비선형적으로 변환해주며, 이를 통해 신경망이 복잡한 패턴을 학습하고, 비선형적인 문제를 해결할 수 있게 도와줍니다.
활성화 함수의 역할
- 비선형성 도입: 인공 신경망이 단순한 선형 결합 이상의 복잡한 패턴을 학습할 수 있도록 비선형성을 도입합니다. 만약 활성화 함수가 없거나 선형 함수라면, 여러 층을 쌓아도 신경망 전체가 여전히 선형 함수가 되어버려, 복잡한 문제를 해결하기 어렵습니다.
- 출력 범위 제한: 활성화 함수는 뉴런의 출력을 제한된 범위 내로 조절해줍니다. 예를 들어, 시그모이드 함수는 출력을 0과 1 사이로, 하이퍼볼릭 탄젠트 함수는 -1과 1 사이로 제한합니다. 이는 신경망의 안정성을 유지하는 데 도움을 줍니다.
- 신경망의 결정 경계 형성: 활성화 함수는 신경망이 데이터를 분류할 때 결정 경계를 형성하는 데 중요한 역할을 합니다.
주요 활성화 함수 종류
단위 계단 함수 (Unit Step Function)
- 입력이 0 이상이면 1, 그렇지 않으면 0을 출력합니다.
- 퍼셉트론과 같은 단순한 모델에서 사용됩니다.
- 비선형 함수지만 미분 불가능하여 현대 딥러닝에서는 잘 사용되지 않습니다.
시그모이드 함수 (Sigmoid Function)
- 출력값을 0과 1 사이로 제한하는 S자형 함수입니다.
- 수식: σ(x)=1+e−x1
σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}
- 비선형성을 도입하며, 주로 이진 분류 문제에서 사용됩니다.
- 그러나 기울기 소실(vanishing gradient) 문제가 발생할 수 있습니다.
하이퍼볼릭 탄젠트 함수 (Tanh Function)
- 출력값을 -1과 1 사이로 제한하는 S자형 함수입니다.
- 수식: tanh(x)=ex+e−xex−e−x
tanh(x)=ex−e−xex+e−x\text{tanh}(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}
- 시그모이드 함수와 비슷하지만, 출력이 0을 중심으로 대칭적이어서 기울기 소실 문제를 일부 완화할 수 있습니다.
ReLU 함수 (Rectified Linear Unit)
- 입력이 0보다 크면 그대로 출력하고, 0보다 작으면 0을 출력하는 함수입니다.
- 수식: f(x)=max(0,x)
f(x)=max(0,x)f(x) = \max(0, x)
- 계산이 간단하고, 깊은 신경망에서도 잘 작동하기 때문에 현재 가장 널리 사용되는 활성화 함수입니다.
- 그러나, 입력이 음수일 때 기울기가 0이 되어 뉴런이 학습하지 못하는 죽은 ReLU 문제가 발생할 수 있습니다.
Leaky ReLU 함수
- ReLU 함수의 변형으로, 입력이 음수일 때도 작은 기울기를 유지하여 죽은 ReLU 문제를 완화한 함수입니다.
- 수식: f(x)=max(αx,x), 여기서 α는 작은 상수입니다 (예: 0.01).
f(x)=max(αx,x)f(x) = \max(\alpha x, x)
α\alpha
소프트맥스 함수 (Softmax Function)
- 출력층에서 주로 사용되는 활성화 함수로, 여러 클래스 중 하나를 선택하는 다중 클래스 분류 문제에서 사용됩니다.
- 각 출력값을 확률로 변환하여, 모든 출력의 합이 1이 되도록 만듭니다.
- 수식: Softmax(xi)=∑jexjexi
Softmax(xi)=exi∑jexj\text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}}
활성화 함수 선택 기준
- 문제 유형: 이진 분류에서는 시그모이드, 다중 클래스 분류에서는 소프트맥스를 주로 사용합니다.
- 네트워크 깊이: 깊은 신경망에서는 기울기 소실 문제를 피하기 위해 ReLU나 그 변형을 선호합니다.
- 출력 값의 범위: 출력 값이 필요한 범위에 맞는 활성화 함수를 선택합니다 (예: 0-1 범위에서는 시그모이드).