初歩的な質問なのですが、Reluの誤差逆伝播法の行列演算がよくわかりません。
http://qiita.com/Ugo-Nama/items/04814a13c9ea8497 …
ここの「勾配消失とRectifier Linear Unit」を参考に書いているのですが、下記式は行列演算にするとどうなるでしょうか?
A 回答 (6件)
- 最新から表示
- 回答順に表示
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
となりますかね。
No.2
- 回答日時:
ごめん。
i層の発火条件が抜けていた。#1の文字の定義に
・i層のニューロンが発火している(1)orしていない(0)を表すベクトルを対角成分として持つ対角行列を I
というのも追加して、
∂E/∂Wtj = I*J*K*Wij*Wjk*δk*Y
ですね。
No.3
- 回答日時:
ごめん。
さらに、修正。実際には、i層、j層、k層は、ニューロンの数が同じとは限らないので、I, J, K はサイズが違う可能性があります。それを考えると、
∂E/∂Wtj = (I*Wij)*(J*Wjk)*(K*δk)*Y
と表示しておくべきでしょう。
(もし、3層のニューロンの数がみな同じであるなら、#2の計算でよいですが。)
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.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┘
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 誤差についてです 誤差の逐次伝播の問題を出されたのですが、どのように解けば良いかわからず困っています 2 2023/04/22 21:54
- 計算機科学 誤差についてです 誤差の逐次伝播の問題を出されたのですが、どのように解けば良いかわからず困っています 11 2023/04/22 15:47
- PHP 空文字 "" ですが 空文字の意味を教えてください。 3 2022/08/05 03:51
- Excel(エクセル) エクセル VBAでセル内容を別の列の最下行に転記したい 2 2022/11/29 08:47
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- 物理学 誤差伝播についての問題を解説が分からず困っています。 ある抵抗に流れる電流と電圧から抵抗値を相対誤差 1 2022/05/22 20:26
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- 数学 考え方が全くわかりません。お助けください。行列の利用の仕方がわかりません。 2 2022/05/29 22:12
- Excel(エクセル) VBAで重複データを合算したい(時間) 1 2022/12/08 23:06
- 数学 群の公理 xの逆元yはxごとにただ1つ決まる。そこで そのyを、一般的には記号x'で表す。 この演算 2 2022/08/06 02:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
CとFORTRANの計算速度はどちら...
-
プログラミング 処理速度
-
60進数の四則計算
-
再帰呼び出しの計算量
-
構文解析を利用した計算プログ...
-
数値計算の高速化 (cos, sin, exp)
-
Perlでのルートの計算
-
排他的論理和 BCC(水平パリテ...
-
Perlで時間の計算
-
DLL(VC++で作った)で稼動中の...
-
Visual C++でdebugとreleaseで...
-
「評価」「評価値」という言葉...
-
[急募]Pythonについてです。
-
10進数から8進数へ
-
VBAの再計算が反映されない件に...
-
VB6.0でのバイナリデータの扱い...
-
R言語での極小値の指数形式での...
-
円周上の3点で作られる三角形...
-
アドオン利率を実質年率に変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
C言語の課題で、1年の秒数を計...
-
バッチファイルでウインドウを...
-
骨折リスク評価のFRAXについて...
-
変化させるセルが変化しない
-
CとFORTRANの計算速度はどちら...
-
なぜオーバーフローになるので...
-
数値計算の高速化 (cos, sin, exp)
-
モジュラス103の計算とは何でし...
-
C# 計算処理中に実行中ウィン...
-
モジュロ
-
引き放し法による除算アルゴリ...
-
60進数の四則計算
-
C言語についてです。 再帰を使...
-
Perlで時間の計算
-
CRC8を教えてください
-
傾いた四角形内の範囲の条件式
おすすめ情報