バックナンバーはこちら。
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\sigma(x)=\frac{1}{1+e^{-x}}
\)
シグモイド関数の導関数
\(
\sigma\prime(x)=\sigma(x)\{1-\sigma(x)\}
\)
シグモイド関数のオイラー法による微分
\(
\displaystyle\sigma\prime_{euler}(x)=\frac{\sigma(x+h)-\sigma(x)}{h}\dots h=0.01
\)

オイラー法は、数式の性格を気にせず微分が求められるから楽ちんだね。

その代わりどこまで行っても近似値だ。
まぁ、今回はその近似値と比較して同等であれば導関数としては正しそうって評価の仕方になるけど。
プログラム化に向けて

とりえあず、さっきの数式でそれぞれをプロットする感じか。

そうだね。
-10~10の範囲で、0.1刻みでプロットできれば良いだろう。
出力された波形が等しければ導関数もきっと正しい。
ってことにしよう。

少しいい加減な雰囲気はあるが、
それ以外に正しさの証明も難しそうだもんね。

まぁ、シグモイド関数の導関数は有名だから、
試すまでもなく正しいんだけどね。

それを言ってしまったら身もふたも無いな・・・。
まとめ

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