Mathematics/Calculus

[Calculus] Sigmoid 함수 미분하기

언킴 2022. 3. 17. 11:32
반응형

 

 

딥러닝에서 활성화 함수를 사용할 때 시그모이드(Sigmoid) 함수를 많이 사용한다. 역전파를 보내기 위해서는 해당 함수의 편미분값을 보내야하기에 이번 글에서는 시그모이드 함수를 수식적으로 미분해보자. 우리가 알고 있는 시그모이드 함수는 다음과 같다. 

\[ f(x) = \frac{1}{1 + e^{-x}} \]

\[ \begin{equation} \begin{split} \frac{df}{dt} = & -\frac{1}{t^2}, \ \ \ (t = 1+e^{-x}) \\ \\ \Rightarrow &  \ \frac{1}{(1+e^{-x})^2} \cdot e^{-x} \\ \\ \Rightarrow &\  \frac{1 + e^{-x} -1}{ (1+e^{-x})(1+e^{-x})} \\ \\ \Rightarrow & \ \frac{1}{1+ e^{-x}} \cdot \frac{1}{(1+e^{-x})^2} \\ \\ \Rightarrow & \ \frac{1}{1+e^{-x}} \cdot (1 - \frac{1}{1+e^{-x}}) \\ \\ \Rightarrow & \ f(x) \cdot (1-f(x)) \end{split} \end{equation} \]

 

시그모이드의 함수의 미분은 다시 시그모이드의 함수로 구할 수 있는 꼴이 나오게 된다. 그럼 $x=0$ 일 때 시그모이드 함수의 기울기는 어떻게 되는지 구해보자.

 

\[ \begin{equation} \begin{split} f'(x) & = f(x)\cdot(1-f(x)) \\ \\ f'(0) & = f(0)\cdot(1-f(0)) \\ \\ & = \frac{1}{2} \cdot (1 - \frac{1}{2}) \\ \\ & = \frac{1}{4} \end{split} \end{equation} \]

$x=0$ 일때의 기울기는 $\frac{1}{4}$ 인 것을 확인해보았다. 그렇다면 시그모이드 함수의 미분값이 최대인 점은 어디일까? 우리는 $f'(x) = f(x)(1-f(x))$임을 알고 있다. $f(x)(1-f(x))$의 변곡점을 찾는다면 이때의 값이 최댓값이 될 것이다. 식이 간단하기에 수식을 계산하면 $x=0$ 일 경우 최댓값을 가지는 것을 확인할 수 있다. 

 

이전 계산을 통해 $f(0) = \frac{1}{4}$이며, 1을 넘지 않는 것을 확인했다. 시그모이드 함수의 기울기는 0일때 최댓값을 가지며 좌우로 갈수록 기울기는 감소하게 된다. 그 말은 input 값이 커지거나 작아질수록 기울기가 줄어드는 것을 의미하며, 이는 바로 gradient vanishing을 야기한다는 것을 뜻한다. 역전파 알고리즘을 수행할 때 편미분 값을 이전 노드에 전달하게 되는데, 만약 input 값이 너무 커서 기울기가 0에 가깝다면 이전 노드에 전파를 전달하더라도 무의미하기 때문에 이와 같은 문제를 바로 gradient vanishing problem이라고 칭한다. 이러한 이유로 일부 연구에서는 활성화 함수를 시그모이드가 아닌 $\text{Tanh}(x)$ 혹은 $\text{ReLU}(x)$ 등을 사용하기도 하며, 일반적으로 성능이 더 좋다고 알려져있다.