
初歩的な質問なのですが、Reluの誤差逆伝播法の行列演算がよくわかりません。
http://qiita.com/Ugo-Nama/items/04814a13c9ea8497 …
ここの「勾配消失とRectifier Linear Unit」を参考に書いているのですが、下記式は行列演算にするとどうなるでしょうか?

A 回答 (6件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
Yは行ベクトルですね、失礼しました。
∂E/∂Wtj = (Wij*J)*(Wjk*K)*δk*Yti
ωij ωjk
┌ω11 ω12 ω13┐┌Fj1 0 0 ┐┌ω11 ω12 ω13┐┌Fk1 0 0 ┐┌δk1┐
│ω21 ω22 ω23││ 0 Fj2 0 ││ω21 ω22 ω23││ 0 Fk2 0 ││δk2│[yt1 yt2 yt3]
└ω31 ω32 ω33┘└ 0 0 Fj3┘└ω31 ω32 ω33┘└ 0 0 Fk3┘└δk3┘
No.4
- 回答日時:
すみません、素人なもので間違っているかもしれないのですが……
No.2さんの回答に疑問なのですが。
質問者様ご提示の式には i層の発火条件が含まれていないですよね?
出力側の信号から入力側へ順に計算していくのですから、下記の行列を右側から計算していく様な感じになるのではないでしょうか。
∂E/∂Wtj = Yti*(Wij*J)*(Wjk*K)*δk
ωij ωjk
┌yt1 0 0 ┐┌ω11 ω12 ω13┐┌Fj1 0 0 ┐┌ω11 ω12 ω13┐┌Fk1 0 0 ┐┌δk1┐
│ 0 yt2 0 ││ω21 ω22 ω23││ 0 Fj2 0 ││ω21 ω22 ω23││ 0 Fk2 0 ││δk2│
└ 0 0 yt3┘└ω31 ω32 ω33┘└ 0 0 Fj3┘└ω31 ω32 ω33┘└ 0 0 Fk3┘└δk3┘
※ Fln : l層のセルnが発火していれば 1 、発火していなければ 0
ytn:t層の出力
ωij:i層→j層の重み
ωjk:j層→k層の重み
No.3
- 回答日時:
ごめん。
さらに、修正。実際には、i層、j層、k層は、ニューロンの数が同じとは限らないので、I, J, K はサイズが違う可能性があります。それを考えると、
∂E/∂Wtj = (I*Wij)*(J*Wjk)*(K*δk)*Y
と表示しておくべきでしょう。
(もし、3層のニューロンの数がみな同じであるなら、#2の計算でよいですが。)
No.2
- 回答日時:
ごめん。
i層の発火条件が抜けていた。#1の文字の定義に
・i層のニューロンが発火している(1)orしていない(0)を表すベクトルを対角成分として持つ対角行列を I
というのも追加して、
∂E/∂Wtj = I*J*K*Wij*Wjk*δk*Y
ですね。
No.1
- 回答日時:
単純に、その式を計算したい、という話なら、そのまま上の式通り、成分毎に計算すればよい。
行列表示しても、あんまり見やすくならないと思うけど。
(むしろ、逆に、もとが行列表示されていたら、結局のところ各成分はどうなんだ?と思って成分計算したくなるというなら分かりますけど。。)
あえて書けば、たとえば、
・i層への入力y_t を並べた行ベクトルを Y
・j層のニューロンが発火している(1)orしていない(0)を表すベクトルを対角成分として持つ対角行列を J
・k層のニューロンが発火している(1)orしていない(0)を表すベクトルを対角成分として持つ対角行列を K
・δ_k^out を表す列ベクトルを δk
・各成分がw_jk である行列を Wjk
・各成分が w_ij である行列を Wij
・各成分が、∂E/∂W_tj である行列を ∂E/∂Wtj
と書くことにすれば、上記の式の行列表示は、
∂E/∂Wtj = J*K*Wij*Wjk*δk*Y
となりますかね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
matlabで計算終了
-
65536は2の何乗なのでしょうか?
-
あまりわかりません。 複素数$c...
-
アドオン利率を実質年率に変換
-
javascriptで何日何時間何分何...
-
Javaを使った行列計算
-
C言語初心者。静磁場の計算。台...
-
Fortran でのマイナス乗数の書き方
-
エクセルで特定のセルのみを任...
-
C言語についてです。 再帰を使...
-
a=2, b=1のとき”x=(a-b+3)%3”の...
-
変化させるセルが変化しない
-
円の最小二乗法のプログラム
-
ファイルの開き方
-
正しい五十音順について
-
Bluestacks内でダウンロードし...
-
CASLIIのプログラム(並び替え...
-
CPUが16bitでも32bitOSでコンパ...
-
socketでの複数NICの扱い
-
フローチャートの菱形が狭い。。。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAで関数をつくる
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
変化させるセルが変化しない
-
引き放し法による除算アルゴリ...
-
モジュラス103の計算とは何でし...
-
C言語についてです。 再帰を使...
-
スレッド処理からダイアログを...
-
階乗のマクロ
-
Perlで時間の計算
-
エクセルで特定のセルのみを任...
-
傾いた四角形内の範囲の条件式
-
モジュロ
-
VBA入力フォームで労働時間の計...
-
三菱シーケンサー works2 の日...
-
Java 電卓の連続計算
-
パソコン
おすすめ情報