シグモイド関数とその微分

シグモイド関数

今日は、こんな関数について考えます。

 
\begin{align}
\displaystyle
\sigma (x) &= \frac{1}{1 + e^{-x}} \tag{1}
\end{align}

機械学習の分野では、しばしばニューラルネットワークの活性化関数などに利用されています。 その手の古典的な参考書では必ず言及されるほど有名な関数です。

このシグモイド関数微分すると、ふしぎなことに導関数が以下のような再帰っぽい形になります。

 
\begin{align}
\displaystyle
\sigma'(x) = \sigma(x) \left(  1- \sigma(x) \right) \tag{2}
\end{align}

というわけで今回は、このシグモイド関数をだらだら微分してみようと思います。 何番煎じだろうか。

てきとう導出

Step 1

 (1) をそのまままるごと微分するのは骨が折れるので、いったん計算しやすい関数に分解します。

 
\begin{align}
\displaystyle
\sigma &= f(t) = t^{-1} \tag{3} \\
t &= g(u) = 1 + e^{u} \tag{4} \\
u &= h(x) = -x \tag{5}
\end{align}

すなわち  \sigma (x) を、 f(t),\, g(u),\, h(x) による合成関数  \sigma = f(\,g(\,h(x))) とみなします。

ちなみに、順番に代入してけば、ちゃんと元の  \sigma (x) に戻ります。
 
\begin{align}
\displaystyle
\sigma &= t^{-1} = \frac{1}{ \underbrace{t}_{g(u)}} = \frac{1}{ \underbrace{g(u)}_{1+e^{u}}} \\
 &= \frac{1}{1+e^{\underbrace{u}_{h(x)}}} = \frac{1}{1+e^{\underbrace{h(x)}_{-x}}}  \\
 &= \frac{1}{1+e^{-x}} \tag{6}
\end{align}

Step 2

次に、さきほどの  f(t),\, g(u), \, h(x) それぞれについて導関数を計算します。

それぞれ十分にかんたんな形まで分解されているので、計算に窮することはないと思います。
 
\begin{align}
\require{cancel}
\displaystyle
f'(t) &= \left( t^{-1} \right)' \\
&= -t^{-2} \tag{7} \\
g'(u)& = \left( \cancel{1} + e^{u} \right)' \\
&= e^{u} \tag{8} \\
h'(x) &=  (-x)'  \\
&= -1  \tag{9}
\end{align}

Step 3

あとは合成関数の微分公式より  
\displaystyle
\begin{align}
\sigma'(x) &= f'(t) \cdot g'(u) \cdot h'(x) 
\end{align}
となるため*1シグモイド関数  \sigma(x)導関数は以下のように計算できます。 途中式をなるべく省かずに書きました。

 
\displaystyle
\require{cancel}
\begin{align}
\sigma'(x) &=  \underbrace{f'(t)}_{-t^{-2}} \cdot \underbrace{ g'(u) }_{e^{u}}  \cdot \underbrace{ h'(x) }_{-1} \\
&= - \! \! \left. \underbrace{t}_{1 + e^{-x}} \right. \! \! ^{-2}  \cdot  \underbrace{ e^{u} }_{e^{-x}}  \cdot  \left( -1 \right) \\
&= \cancel{-} \left( 1 + e^{-x} \right)^{-2} \cdot e^{-x} \cdot ( \cancel{-1} ) \\
&= \frac{e^{-x}}{ \left( 1 + e^{-x} \right)^2} \\
&= \frac{e^{-x}}{ \left( 1 + e^{-x} \right) \left( 1 + e^{-x} \right) } \\
&= \frac{e^{-x}}{ 1 + e^{-x} } \cdot \underbrace{ \frac{1}{ 1 + e^{-x} } }_{\sigma (x)} \\
&= \frac{e^{-x}}{ 1 + e^{-x} } \cdot \sigma(x) \\
&= \frac{e^{-x} + (1 - 1)}{1 + e^{-x}} \cdot \sigma(x) \\
&= \frac{\left( e^{-x} + 1 \right) - 1}{1 + e^{-x}} \cdot \sigma(x) \\
&= \Bigl( \underbrace{ \frac{e^{-x} + 1 }{1 + e^{-x}} }_{1} - \underbrace{ \frac{ 1}{1 + e^{-x}} }_{\sigma(x)} \Bigr) \sigma(x) \\
&= (1 - \sigma(x) ) \sigma(x) \tag{10}
\end{align}

以上。

*1:合成関数の微分公式より  
\begin{align}
\frac{\mathrm{d} \sigma}{\mathrm{d}x} = \frac{\mathrm{d} \sigma}{\mathrm{d} t} \! \cdot \! \underbrace{ \frac{\mathrm{d} t}{\mathrm{d} x} }_{ \frac{\mathrm{d} t}{\mathrm{d} u}  \cdot  \frac{\mathrm{d} u}{\mathrm{d} x}  } = \frac{\mathrm{d} \sigma}{\mathrm{d} t} \! \cdot \!  \frac{\mathrm{d} t}{\mathrm{d} u}  \! \cdot \!  \frac{\mathrm{d} u}{\mathrm{d} x} 
\end{align}