LoginSignup
42
47

More than 5 years have passed since last update.

誤差逆伝播法等に用いる 計算グラフ の基本パーツ

Last updated at Posted at 2017-04-16

計算グラフ(computational graph)の 基本パーツ の図解です。

ニューラルネットワークの誤差逆伝播法を学習時に 計算グラフを 知りました。
局所的な計算を連鎖させていく考え方で、理解しやすくて良いですね。

計算グラフの基本パーツ

本記事の図では、黒線・黒文字は順伝搬、赤線・赤文字は逆伝播を示します。

z=f(x)

BN_A_5_OneWay.PNG

順方向 z=f(x) の計算の場合、
その逆伝播は 入力値$E$に f(x)の微分値を掛けた値が 出力となる。

加算ノード

BN_A_1_Plus_E.PNG

加算ノードの逆伝播は、 入力値$E$ をそのまま 伝達する。

順方向 $z=x+y$ に対し、
  $x$ の微分値 $\frac{\partial z} {\partial x}$ は $1$
  $y$ の微分値 $\frac{\partial z} {\partial y}$ も $1$
のため、入力$E$ を そのまま伝達 となる。

乗算ノード

BN_A_2_Multiply_E.PNG

加算ノードの逆伝播は、 入力値$E$ × 順伝播を入れ替えた値 を伝達する。

順方向 $z=xy$ に対し、
  $x$ の微分値 $\frac{\partial z} {\partial x}$ は $y$
  $y$ の微分値 $\frac{\partial z} {\partial y}$ は $x$
のため、入力値$E$ × 順伝播を入れ替えた値を 伝達となる。

分岐ノード

順伝播の式中の2か所で $x$が参照されている場合に、$x$の分岐と扱う。
BN_A_6_Branch.PNG

逆伝播は、分岐先からの逆伝播値の和 を伝達する。

総和ノード

伝播する行列での一方向で(下図の例では$N$の方向で)総和を求める場合、(N,D)の行列は (D,)の次元になる。
BN_A_3_Sum_0.PNG

総和は 下図の様に 多数の加算ノード と読みかえ出来る。
BN_A_3_Sum_1.PNG

総和の逆伝播は、(D,)次元の逆伝播の入力行列を、そのまま$N$個に伝達し(N,D)次元の行列を生成する。

BN_A_3_Sum_2.PNG

Broadcast ノード

行列のアダマール積にて
(N,D)次元の行列A と (D,)次元の行列Bの積を求める場合、Bは下図で示す Broadcast が行われ(N,D)次元の行列として演算する。

BN_A_4_BroadCast_0.PNG

Broadcastは N個への分岐ノードと読みかえが出来る。
逆伝播は、(N,D)次元の行列から (D,)次元への 総和となる。

BN_A_4_BroadCast_1.PNG

参考文献

関連項目
  Mind で Neural Network (準備編2) 順伝播・逆伝播 図解

42
47
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
47