Pythonと機械学習スマートフォン用の表示で見るPythonと機械学習Pythonも機械学習も初心者ですが、頑張ってこのブログで勉強してこうと思います。多層パーセプトロンの計算グラフはじめに多層パーセプトロンの実装を考える際に、テンソルの全ての要素を考えるのは結構骨が折れます。計算途中でインデックスを書き間違えたりすると、かなり悲惨な目にあいます。テンソル要素の2つのインデックスをまとめ上げた行列で考える方が楽で、プログラムを書く時も、行列演算のライブラリを使った方が簡潔で演算速度も速いです。チェーンルールでの展開は、スカラーで偏微分した時と同じようにできるわけではないので注意が必要です。ネットワークが複雑になった場合は、大量に計算式を書くことになるので、行列で書いたとしても訳が分からなくなってしまいます。いった場合は、計算グラフというものを使うと計算がしやすくなります。計算グラフというのは、演算を数式では無く、ただ絵に書いて表現しただけの物なのですが、いくつかの行列演算について順伝播と逆伝播のルールをまとめておくと、複雑なネットワークになった場合でも楽に計算ができるようになります。数式で書くよりも絵で描いた方が分かりやすいという訳です。ここではいくつかの行列演算ルールを計算グラフでまとめて、最後に多層パーセプトロンの順伝播と逆伝播を計算グラフで表してみたいと思います。要素で書いた場合は、これを計算グラフで書くと以下のようになります。展開されるか見ていきましょう。同様に計算すると、これを計算グラフで書くと、つまり順伝播での行列同士の和の演算は、逆伝播では分岐になります。全結合時の閾値の演算になります。本来は、行列にベクトルを足すと言うのは変ですが、まあnumpyでもこのまま演算できるので、あまり気にせず行きましょう。要素で書いた場合は以下の様な演算です。左からかけて分岐します。順伝播時に分岐した場合を考えてみます。合成関数になるので、つまり逆伝播時は和になります。入力と重みの掛け算を想定しています。行列の積を表しておきます。掛け方の順序がわかる様に、掛け算の左側はL、右側はRの記号を書いておきます。かける順序に注意です。計算グラフは以下の様になります。記号で表記しておきます。こちらは特に掛け算の順番は気にする必要がありません。シグモイド関数、tanh関数、ReLU関数などの演算を想定しています。アダマール積でかけます。行列演算では表記するのはちょっと難しいでが、無理やり書くと、は行列の要素を逆数にしてアダマール積でかける演算です。一般的にこの演算を表す記号はありません。計算グラフでは、特に詳細に表記するのはやめときましょう。活性化関数の時と同じように書いときます。ソフトマックス関数の演算であることが分かるように、下にsoftmaxとでも書いておきましょう。次に逆伝播ですが、こちらも行列表記にするのは結構難しいです。ソフトマックス関数の微分は、以前の記事多クラスロジスティック回帰の(8)式で求めてました。それを使うと、は、対角成分を縦ベクトルに並べたもので、まあ無理やり表記です。逆伝播の計算グラフを無理やり書いてもいいですが、ぐちゃぐちゃになって余計わかりずらくなるので、交差エントロピーと一緒にして書くとよいです。(スカラー値)になります。entropyとでも書いておきましょう。ソフトマックス関数と一緒にして書いておくことにします。次に逆伝播の計算です。要素を逆数にして、アダマール積でかけるという意味です。要素が1つでもゼロになるとゼロ割りエラーになりますし、ソフトマックス関数の逆伝播の行列表記も厳しいものがあるので、ソフトマックス関数と交差エントロピーを一緒にして、逆伝播を考えるとよいです。計算すると、その対角成分がすべて1になるという性質があるみたいです。以下確認用スクリプト。対角成分がちゃんと1になっています。1.]事前に要素で計算していたので、そうなるのはわかっていましたが、なんか不思議な発見ですね。よって(31)式の続きは、すごく簡単にかけました。多層パーセプトロンの計算グラフ最後に多層パーセプトロンの順伝播の計算グラフから、逆伝播の計算グラフを機械的に作成し、逆伝播の計算式を求めてみましょう。計算式を先に書いてから、その後順伝播時の計算グラフを組み立てていきます。層あるとしています)です。ソフトマックス関数と交差エントロピーが後ろにつきます。作成した順伝播の計算グラフをもとに、今度は逆伝播の計算グラフを書いていきます。順伝播の計算グラフを各演算要素ごとに分解して考える事で、逆伝播の計算グラフを機械的に書く事が出来ます。逆伝播時の中間層の計算グラフです。ベクトルの和の演算、行列同士の積の演算の3つの演算要素の逆伝播を組み合わせて行きます。計算グラフが出来上がると、逆伝播の計算式は容易に算出できます。逆伝播時の出力層です。ソフトマックス関数と交差エントロピーの逆伝播をくっつけてます。世の中には非常に多くの最適化問題が存在します。(13)はてなブログをはじめよう!dardenさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。