MATLAB,Python,Scilab,Julia比較 第4章 その31【連鎖律の前準備⑤】

MATLAB,Python,Scilab,Julia比較 第4章 その31【連鎖律の前準備⑤】 数値計算
MATLAB,Python,Scilab,Julia比較 第4章 その31【連鎖律の前準備⑤】

バックナンバーはこちら。
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で動かして学ぶ!あたらしい線形代数の教科書

https://amzn.to/3OE5bVp

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

https://amzn.to/3OBiaax

ゼロからはじめるPID制御

https://amzn.to/3SvzuyR

OpenCVによる画像処理入門

https://amzn.to/498ZUgK

恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]

https://amzn.to/3STAe2i

Pythonによる制御工学入門

https://amzn.to/3uskuK5

理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析

https://amzn.to/3UAunQK

コメント

タイトルとURLをコピーしました