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