# 시그모이드 함수 (sigmoid function)

시그모이드 함수(sigmoid function)는 인공신경망에서 주로 활성화 함수로 사용된다. 이 함수는 입력 값을 연속적인 출력 값으로 변환하며, 출력 값은 0과 1 사이에 위치한다. 시그모이드 함수는 다음과 같은 수식으로 정의된다:

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

여기서 $ x $는 입력 값이고, $ e $는 자연로그의 밑(약 2.718)이다. 시그모이드 함수는 입력 값이 커질수록 출력 값이 1에 가까워지고, 입력 값이 작아질수록 출력 값이 0에 가까워진다.

#### 시그모이드 함수의 특성

시그모이드 함수는 S-모양의 곡선을 가지며, 비선형성(non-linearity)을 갖는다. 이 함수의 주요 특성은 다음과 같다:

1. **비선형성**: 시그모이드 함수는 선형 함수와 달리 복잡한 패턴을 학습할 수 있는 능력을 부여한다. 이 비선형성은 다층 신경망에서 필수적인 요소이다.
2. **미분 가능성**: 시그모이드 함수는 모든 점에서 미분 가능한다. 미분된 시그모이드 함수는 다음과 같다:

$$
\sigma'(x) = \sigma(x) \cdot (1 - \sigma(x))
$$

이 미분 값은 역전파(backpropagation) 알고리즘에서 매우 중요한 역할을 한다.

3. **출력 범위**: 시그모이드 함수의 출력 범위는 0과 1 사이로 제한된다. 이는 출력을 확률로 해석하는 데 유용하다.

#### 시그모이드 함수의 문제점

시그모이드 함수는 유용하지만, 몇 가지 중요한 문제점이 있다:

1. **기울기 소실 문제(Vanishing Gradient Problem)**: 시그모이드 함수는 입력 값이 매우 크거나 작을 때, 출력 값이 0 또는 1에 매우 가까워진다. 이 경우, 함수의 미분 값이 매우 작아져 역전파 과정에서 기울기 소실 문제가 발생할 수 있다. 이로 인해 신경망의 학습 속도가 느려지고, 심지어는 학습이 정체될 수 있다.
2. **출력 값의 편향(Bias)**: 시그모이드 함수의 출력은 0 중심이 아니다. 즉, 함수의 출력 값은 항상 양수(0과 1 사이)이며, 이는 출력에 대한 가중치 업데이트 시 편향을 발생시킬 수 있다.
3. **연산 비용**: 시그모이드 함수는 지수 함수의 계산을 포함하기 때문에, 다른 활성화 함수에 비해 연산 비용이 높을 수 있다. 이는 특히 큰 신경망에서는 성능에 영향을 미칠 수 있다.

#### 시그모이드 함수의 변형 및 대안

시그모이드 함수의 문제점을 해결하기 위해 몇 가지 변형된 함수와 대안이 제안되었다:

1. **탄젠트 하이퍼볼릭 함수(Tanh)**: Tanh 함수는 시그모이드 함수의 스케일 변형으로, 출력이 -1과 1 사이에 분포한다. 이 함수는 시그모이드 함수의 편향 문제를 어느 정도 해결할 수 있다.
2. **ReLU 함수(Rectified Linear Unit)**: ReLU 함수는 입력이 0보다 작을 경우 0을 출력하고, 0보다 크면 입력 값을 그대로 출력한다. ReLU 함수는 시그모이드 함수의 기울기 소실 문제를 해결하며, 최근 신경망에서 널리 사용된다.
3. **Leaky ReLU**: ReLU 함수의 변형으로, 입력이 0보다 작을 때 작은 음의 기울기를 가지도록 한 함수이다. 이 함수는 ReLU의 'dying ReLU' 문제를 완화한다.

***

관련 자료:

* Bishop, C. M. (2006). *Pattern Recognition and Machine Learning*. Springer.
* Goodfellow, I., Bengio, Y., & Courville, A. (2016). *Deep Learning*. MIT Press.
* Nielsen, M. A. (2015). *Neural Networks and Deep Learning*. Determination Press.
