バックナンバーはこちら。
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
【再掲】多変量関数の連鎖律を把握するための知識

とりあえず多変量関数の連鎖律を把握するための知識を再掲。
- 合成関数(済)
- 合成関数の微分(連鎖律)(済)
- 多変数関数の連鎖律(済)
- 学習データの多入力による暗黙的関数追加

今回は学習データの多入力による暗黙的関数追加の話になる。
暗黙的に追加される関数

実は、ニューラルネットワークの学習を想定した場合、
暗黙的に追加される関数がある。

どんな関数?
なんか必要な関数が思付かないけど。

入力データ群だな。

入力データは入力データであって関数じゃないような?

入力データが1個なら問題ない。
ただ、今回の単純パーセプトロンだけで考えても4種類の入力パターンがある。

単純パーセプトロンにやらせるのは、たしかANDゲートとかのはずだから、
真理値表の4パターンの入力のことか?!

そうそう。

機械学習の学習パターンは大きく3つある。
- 一つずつデータを入れるオンライン学習
- 一括でデータを入れるバッチ学習
- 学習データを小さなグループに分けてから入れるミニバッチ学習

今回の場合は、学習データが4つと少ないため、一括で学習データを入れる方が効率的。
つまりバッチ学習が該当する。
まぁ、ミニバッチ学習でも一度に複数の学習データを入れる以上、同じ問題にはなるけどね。
実際に追加される関数

実際に追加される関数を書き出そう。
こんな形になり、\(X\)という関数が増えるイメージになる。
\(
\begin{eqnarray}
X&=&
\begin{bmatrix}
x_{11}&x_{12}\\
x_{21}&x_{22}\\
x_{31}&x_{32}\\
x_{41}&x_{42}
\end{bmatrix}\\
WX+b&=&
\begin{bmatrix}
x_{11}&x_{12}\\
x_{21}&x_{22}\\
x_{31}&x_{32}\\
x_{41}&x_{42}
\end{bmatrix}
\begin{bmatrix}
w_1\\
w_2
\end{bmatrix}+b=
\begin{bmatrix}
w_1x_{11}+w_2x_{12}+b\\
w_1x_{21}+w_2x_{22}+b\\
w_1x_{31}+w_2x_{32}+b\\
w_1x_{41}+w_2x_{42}+b
\end{bmatrix}
\end{eqnarray}
\)

確かに関数と言えば関数になるのか。

まぁ、実際に演算する場合、
重みで微分すると重みは消えて、入力しか残らないから
足し算の数がふえるだけなんだけどね。

あー、確かにそれはなんとなくわかる。
まとめ

まとめだよ。
- ニューラルネットワークの学習を想定した場合、暗黙的に追加される関数として入力群がある。
- イメージ的に1層増える感じになる。
- これはバッチ学習、ミニバッチ学習時の起きる現象。
- と言っても、微分すると重みが消えるので足し算に化ける。
バックナンバーはこちら。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント