\(f(x)=\displaystyle \frac{1}{1 + e^{-ax}} (a > 0)\)で表現される関数をシグモイド関数といい、このうち\(a=1\)の場合を標準シグモイド関数という。
今回は、標準シグモイド関数とその微分をグラフ化してみたので、その結果を共有する。
標準シグモイド関数\(f(x)=\displaystyle \frac{1}{1 + e^{-x}}\)をPythonでグラフ化した結果は、以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | %matplotlib inline import numpy as np import matplotlib.pyplot as plt # 標準シグモイド関数の定義 def std_sigmoid(x): return 1 / (1 + np.e**(-x)) # -10~10までを1000等分した値をxとする x = np.linspace(-10, 10, 1000) # 上記xに対応する標準シグモイド関数yの値を算出 y = std_sigmoid(x) # x,yに対応する値のグラフを表示 plt.plot(x, y) plt.title("standard sigmoid function") plt.xlabel("x", size=14) plt.ylabel("y", size=14) plt.grid() plt.show() |
また、\(f(x)=\displaystyle \frac{1}{1 + e^{-x}}\)を\(x\)について微分すると、以下のようになる。ただし、\(u=1 + e^{-x}\)と置き換えて計算するものとする。
\[
\begin{eqnarray}
\displaystyle \frac{ \mathrm{d} f(x)}{ \mathrm{d} x} &=& \frac{ \mathrm{d} f(x)}{ \mathrm{d} u}\frac{ \mathrm{d} u}{ \mathrm{d} x} \\
&=& \frac{ \mathrm{d}}{ \mathrm{d} u}\frac{1}{u} \frac{ \mathrm{d}}{ \mathrm{d} x}(1 + e^{-x}) \\
&=& -u^{-2} \times (-e^{-x}) = \frac{e^{-x}}{u^2} = \frac{e^{-x}}{(1 + e^{-x})^2} \\
&=& \frac{1}{1 + e^{-x}}\frac{e^{-x}}{1 + e^{-x}} = \frac{1}{1 + e^{-x}}\frac{1 + e^{-x} – 1}{1 + e^{-x}} \\
&=& \frac{1}{1 + e^{-x}} \left( \frac{1 + e^{-x}}{1 + e^{-x}} – \frac{1}{1 + e^{-x}} \right) \\
&=& \frac{1}{1 + e^{-x}} \left( 1 – \frac{1}{1 + e^{-x}} \right) = f(x)(1-f(x))
\end{eqnarray}
\]
なお、上記計算にあたっては、以下の合成関数の微分公式を利用している。
https://manabitimes.jp/math/936
上記、標準シグモイド関数の微分をグラフに追加した結果は、以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | %matplotlib inline import numpy as np import matplotlib.pyplot as plt # 標準シグモイド関数の定義 def std_sigmoid(x): return 1 / (1 + np.e**(-x)) # 標準シグモイド関数の微分の定義 def diff_std_sigmoid(x): return std_sigmoid(x) * (1 - std_sigmoid(x)) # -10~10までを1000等分した値をxとする x = np.linspace(-10, 10, 1000) # 上記xに対応する標準シグモイド関数y1の値を算出 y1 = std_sigmoid(x) # 上記xに対応する標準シグモイド関数の微分y2の値を算出 y2 = diff_std_sigmoid(x) # x,y1,y2に対応する値のグラフを表示 plt.plot(x, y1, label='sigmoid') plt.plot(x, y2, label='sigmoid differential') plt.title("standard sigmoid function and differential") plt.xlabel("x", size=14) plt.ylabel("y", size=14) plt.legend() plt.grid() plt.show() |
要点まとめ
- \(f(x)=\displaystyle \frac{1}{1 + e^{-ax}} (a > 0)\)で表現される関数をシグモイド関数といい、このうち\(a=1\)の場合を標準シグモイド関数という。
- 標準シグモイド関数\(f(x)=\displaystyle \frac{1}{1 + e^{-x}}\)を微分すると、\(f(x) (1-f(x))\)となる。