バックナンバーはこちら。
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\frac{\partial E}{\partial W}=\frac{\partial E}{\partial A}{\color{red}\frac{\partial A}{\partial Z}}\frac{\partial Z}{\partial W}
\)

ちょうど真ん中だね。
活性化関数の導関数

今回の活性化はシグモイド関数。
つまり、シグモイド関数の導関数が活性化関数の導関数ってことになる。

シグモイド関数の導関数については、以前のここでやったね。

わすれているなら復習しておくと良いだろう。
シグモイド関数の偏導関数

シグモイド関数の導関数が分かっているから、偏導関数もほぼ確定するのだが、
一応書き出しておこう。
以下の式になる、
\(
\displaystyle\frac{\partial A}{\partial Z}=\sigma^\prime(Z)=\sigma(Z){1-\sigma(Z)}
\)

そうそう。
シグモイド関数を微分したものは、シグモイド関数で表現できちゃうんだよね。

活性化関数の必要な特性として、「微分ができること」というのがあるが、
それは逆伝播を実施するための偏導関数が定義できるかってことになる。

ということは他の活性化関数も微分可能なものってこと?

基本的にはそのはずだ。
中には確率分布関数みたいなものを使って、微分が困難なものもあるが、
その場合は、変分と言う微分の親戚みたいな手法で逆伝播可能な状態にしている。
変分は今回は扱わないので、そういうものがあるって程度で頭の片隅に置いておけばOKだ。

(また妙な魔境に突入するのかと思ったぜ・・・。)
まとめ

まとめだよ。
- 活性化関数の微分について説明。
- 活性関数のブロック図と連鎖律上の位置づけを確認。
- シグモイド関数の導関数を復習。
- シグモイド関数の偏導関数を確認。
バックナンバーはこちら。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント