シグモイド関数の微分
シグモイド関数(Sigmoid function)は $f(x) = \frac{1}{1+e^{-ax}} (a > 0) $ の形をしている関数です。下の図で表しています。
値は(0, 1)の間にあるので、よく確率として使われています。例えば 0.7だったら70%の確率という意味をします。
ニューラルネットワークの中で、シグモイド関数はよくTrue/Falseの判定に使われています。例えば画像が猫なのか、猫じゃないなのかを判断する場合、0.7だったら、猫であると判定します。
このようなニューラルネットワークを実装する際に逆伝播(Back propagation)を実装する必要になります。その中の一部として、シグモイド関数の微分を求めることになります。
シグモイド関数の微分は 下の形をしています。これを方程式を使えば、Numpyでかなり簡単に実装できるようなります。
$$ f(x) = \frac{1}{1+e^{-ax}} (a > 0) \\ f(x)’ = af(x)(1−f(x)) $$ 上の方程式を導いてみると
$$
(\frac{1}{1+e^{-ax}})’ = \\
\frac{-1} {(1+e^{-ax})^2} (1+e^{-ax}) = \\
\frac{-1} {(1+e^{-ax})^2} (e^{-ax})(-ax)’ = \\
\frac{-1} {(1+e^{-ax})^2} (e^{-ax})(-a) = \\
\frac{ae^{-ax}} {(1+e^{-ax})^2} = \
\frac{a}{(1+e^{-ax})} \frac{e^{-ax}}{(1+e^{-ax})} = \
\frac{a}{(1+e^{-ax})} \frac{1+ e^{-ax} -1 }{(1+e^{-ax})} = \
af(x)(1-f(x))
$$
$a = 1$の時に $f(x)’ = f(x)(1-f(x)) $ になります。