【E資格対策】誤差逆伝播法
複数のエッジとノードによって表現され, エッジはデータや勾配の流れを表す.
計算グラフを利用することで, 逆伝播における微分の複雑な計算を各ノードでの単純な計算に分解でき, 問題を単純化することが可能である.
- 各エッジの順伝播の勾配に対応する変数を置く. 最終的な値は E と置く.
- 逆伝播の勾配を, E の各変数に対する偏微分として表す.
- 連鎖律を用いて偏微分の式変形を行う.
- (具体的な数値があれば) 3. で得られた式に数値を代入し, 各偏微分の値を計算する.
下図の計算グラフで逆伝播を行ったとき, (A), (B) に入る値を求めよ.

解答 (クリックで展開)
まず, 各エッジに対応する変数を次のように定める.
- x0=100,x1=300,x2=6000
- w1=3,w2=20
- E=x2
このとき, 順伝播の勾配は以下のようになる.
- x1=w1x0
- x2=w2x1
したがって, 逆伝播の勾配は以下のように表せる.
- ∂x2∂E=1
- ∂x1∂E=∂x2∂E⋅∂x1∂x2=(A)
- ∂x0∂E=∂x2∂E⋅∂x1∂x2⋅∂x0∂x1=(B)
ここで, ∂x1∂x2=20,∂x0∂x1=3 であるから,
- (A)=1×20=20.
- (B)=1×20×3=60.
下図の計算グラフで逆伝播を行ったとき, (A), (B) に入る値を求めよ.
ただし, Xは入力データの行列, W は重み行列である.

解答 (クリックで展開)
E=y とすると, 順伝播の勾配は以下のようになる.
y=WX
したがって, 逆伝播の勾配は以下のように表せる.
(A)(B)=∂X∂E=∂y∂E⋅∂X∂y=∂y∂E⋅W⊤.=∂W∂E=∂y∂E⋅∂W∂y=X⊤⋅∂y∂E.
(B) の行列積の順番に注意すること.
X=(n×d),W=(d×m) とすると, y=(n×m) であり, ∂y∂E=(n×m) となる.
また, ∂W∂E=(d×m) であるため, X⊤=(d×n),∂y∂E=(n×m) の順番でないと, 積の計算ができない.
ただし, バッチサイズをn, 入力の次元数を d, 出力の次元数を m とした(全結合層を想定).
下図の計算グラフで逆伝播を行ったとき, (A), (B) に入る値を求めよ.

解答 (クリックで展開)
まず, 各エッジに対応する変数を次のように定め, 順伝播の勾配を求める.
- u1=−x,u2=eu1,u3=1+u2
- y=u31
- E=y
したがって, 逆伝播の勾配は以下のように表せる.
(B)(A)=∂u2∂E=∂y∂E⋅∂u3∂y⋅∂u2∂u3=∂y∂E⋅(−u321)⋅1=−∂y∂Ey2.=∂x∂E=∂y∂E⋅∂u3∂y⋅∂u2∂u3⋅∂u1∂u2=∂y∂E⋅(−u321)⋅1⋅∂x∂u1=−∂y∂Ey2e−x.