バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia4-backnumber/
はじめに
連鎖律を把握するための解説。
今回はシグモイド関数の導関数について。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
【再掲】連鎖律を把握するための知識

まずは、連鎖律を把握するための知識を再掲
- 逆数の微分公式(済)
- 積の微分公式(済)
- 商の微分公式(済)
- シグモイド関数の導関数
- 多変量関数の連鎖律
- 勾配降下法

今回は、シグモイド関数の導関数について。
いままでの公式達

さて、今回はシグモイド関数の導関数を導出するわけだが、
いままでの公式達を再掲しておこう。
逆数の微分公式
\(
\displaystyle\bigg\{\frac{1}{f(x)}\bigg\}^\prime=-\frac{f\prime(x)}{\{f(x)\}^2}
\)
積の微分公式
\(
\{f(x)g(x)\}\prime=g\prime(x)f(x)+f\prime(x)g(x)
\)
商の微分公式
\(
\displaystyle\bigg\{\frac{g(x)}{f(x)}\bigg\}^\prime=\frac{g\prime(x)f(x)-f\prime(x)g(x)}{\{f(x)\}^2}
\)

本当にわけわからんものからわけわからんのに変形してるだけにしか見えない・・・。

ちなみにシグモイド関数の導関数は以下になる。
\(
\displaystyle\sigma\prime=\bigg\{\frac{1}{1+e^{-1}}\bigg\}^\prime=\sigma(x)\{1-\sigma(x)\}
\)

ちなみに\(\sigma(x)\)がシグモイド関数になる。

シグモイド関数の導関数の中にシグモイド関数が出てくるのか。
シグモイド関数の導関数の導出

それでは、シグモイド関数の導関数を求める。
商の微分公式を使用する。
商の微分公式の
分母の\(f(x)\)を\(1+e^x\)
分子の\(g(x)\)を\(1\)とする。
\(
\begin{eqnarray}
\displaystyle\bigg\{\frac{1}{1+e^{-1}}\bigg\}^\prime&=&\frac{1\prime\cdot(1+e^{-x})-(1+e^{-x})\prime\cdot1}{(1+e^{-x})^2}\\
\displaystyle&=&\frac{-1\prime-(e^{-x})\prime}{(1+e^{-x})^2}\\
\displaystyle&=&\frac{e^{-x}}{(1+e^{-x})^2}\\
\displaystyle&=&\frac{e^{-x}}{1+e^{-x}}\cdot\frac{1}{1+e^{-x}}\\
\displaystyle&=&\frac{(1+e^{-x})-1}{1+e^{-x}}\cdot\frac{1}{1+e^{-x}}\dots(分子側で1を足して1を引く)\\
\displaystyle&=&\bigg(1-\frac{1}{1+e^{-x}}\bigg)\frac{1}{1+e^{-x}}\\
\displaystyle&=&\sigma(x)\{1-\sigma(x)\}
\end{eqnarray}
\)

途中、1を足して1を引くとかでまたトリッキーなことしてるなー。

これがうまく機能して、シグモイド関数の形状に変形できているわけだ。
このあとはどうする?

シグモイド関数の導関数を求めるところを中間ゴールといってたけど、
このタイミングで何かするの?

求めたシグモイド関数の導関数が正しいかを確認する。

どうやって?

シグモイド関数をオイラー法で求めた微分結果のプロットと、
シグモイド関数の導関数のプロットを比較する。
これを実現するためのプログラムを作成するつもりだ。

なるほど。
それを各ツール、各言語でやってみるってことか。

そうそう。
まとめ

まとめだよ。
- いままでの公式達を再掲。
- 商の微分公式を使ってシグモイド関数の導関数を求めた。
- 本当に導関数になっているか、オイラー法で求めたシグモイド関数の微分のプロットと比較してみる。
バックナンバーはこちら。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント