【E資格対策】誤差逆伝播法

計算グラフ

複数のエッジとノードによって表現され, エッジはデータや勾配の流れを表す. 計算グラフを利用することで, 逆伝播における微分の複雑な計算を各ノードでの単純な計算に分解でき, 問題を単純化することが可能である.

計算グラフ問題の解き方

  1. 各エッジの順伝播の勾配に対応する変数を置く. 最終的な値は EE と置く.
  2. 逆伝播の勾配を, EE の各変数に対する偏微分として表す.
  3. 連鎖律を用いて偏微分の式変形を行う.
  4. (具体的な数値があれば) 3. で得られた式に数値を代入し, 各偏微分の値を計算する.

練習問題

問題1

下図の計算グラフで逆伝播を行ったとき, (A), (B) に入る値を求めよ.

問題1


解答 (クリックで展開)

まず, 各エッジに対応する変数を次のように定める.

  • x0=100,x1=300,x2=6000x_0 = 100, \quad x_1 = 300, \quad x_2 = 6000
  • w1=3,w2=20w_1 = 3, \quad w_2 = 20
  • E=x2E = x_2

このとき, 順伝播の勾配は以下のようになる.

  • x1=w1x0x_1 = w_1 x_0
  • x2=w2x1x_2 = w_2 x_1

したがって, 逆伝播の勾配は以下のように表せる.

  • Ex2=1\dfrac{\partial E}{\partial x_2} = 1
  • Ex1=Ex2x2x1=(A)\dfrac{\partial E}{\partial x_1} = \dfrac{\partial E}{\partial x_2} \cdot \dfrac{\partial x_2}{\partial x_1} = \mathrm{(A)}
  • Ex0=Ex2x2x1x1x0=(B)\dfrac{\partial E}{\partial x_0} = \dfrac{\partial E}{\partial x_2} \cdot \dfrac{\partial x_2}{\partial x_1} \cdot \dfrac{\partial x_1}{\partial x_0} = \mathrm{(B)}

ここで, x2x1=20,x1x0=3\dfrac{\partial x_2}{\partial x_1} = 20, \: \dfrac{\partial x_1}{\partial x_0} = 3 であるから,

  • (A)=1×20=20.\mathrm{(A)} = 1 \times 20 = \underline{20}.
  • (B)=1×20×3=60.\mathrm{(B)} = 1 \times 20 \times 3 = \underline{60}.

問題2

下図の計算グラフで逆伝播を行ったとき, (A), (B) に入る値を求めよ. ただし, XXは入力データの行列, WW は重み行列である.

問題2


解答 (クリックで展開)

E=yE = y とすると, 順伝播の勾配は以下のようになる.

y=WXy = WX

したがって, 逆伝播の勾配は以下のように表せる.

(A)=EX=EyyX=EyW.(B)=EW=EyyW=XEy.\begin{align*} \mathrm{(A)} & = \dfrac{\partial E}{\partial X} \\ & = \dfrac{\partial E}{\partial y} \cdot \dfrac{\partial y}{\partial X} \\ & = \underline{\dfrac{\partial E}{\partial y} \cdot W^{\top}}. \\ \mathrm{(B)} & = \dfrac{\partial E}{\partial W} \\ & = \dfrac{\partial E}{\partial y} \cdot \dfrac{\partial y}{\partial W} \\ & = \underline{X^{\top} \cdot \dfrac{\partial E}{\partial y}}. \end{align*}

(B) の行列積の順番に注意すること.

X=(n×d),W=(d×m)X = (n \times d), W = (d \times m) とすると, y=(n×m)y = (n \times m) であり, Ey=(n×m)\dfrac{\partial E}{\partial y} = (n \times m) となる. また, EW=(d×m)\dfrac{\partial E}{\partial W} = (d \times m) であるため, X=(d×n),Ey=(n×m)X^{\top} = (d \times n), \dfrac{\partial E}{\partial y} = (n \times m) の順番でないと, 積の計算ができない.

ただし, バッチサイズをnn, 入力の次元数を dd, 出力の次元数を mm とした(全結合層を想定).


問題3

下図の計算グラフで逆伝播を行ったとき, (A), (B) に入る値を求めよ.

問題3


解答 (クリックで展開)

まず, 各エッジに対応する変数を次のように定め, 順伝播の勾配を求める.

  • u1=x,u2=eu1,u3=1+u2u_1 = -x, \quad u_2 = e^{u_1}, \quad u_3 = 1 + u_2
  • y=1u3y = \dfrac{1}{u_3}
  • E=yE = y

したがって, 逆伝播の勾配は以下のように表せる.

(B)=Eu2=Eyyu3u3u2=Ey(1u32)1=Eyy2.(A)=Ex=Eyyu3u3u2u2u1=Ey(1u32)1u1x=Eyy2ex.\begin{align*} \mathrm{(B)} & = \dfrac{\partial E}{\partial u_2} \\ & = \dfrac{\partial E}{\partial y} \cdot \dfrac{\partial y}{\partial u_3} \cdot \dfrac{\partial u_3}{\partial u_2} \\ & = \dfrac{\partial E}{\partial y} \cdot \left( -\dfrac{1}{u_3^2} \right) \cdot 1 \\ & = \underline{- \dfrac{\partial E}{\partial y} y^2}. \\ \mathrm{(A)} & = \dfrac{\partial E}{\partial x} \\ & = \dfrac{\partial E}{\partial y} \cdot \dfrac{\partial y}{\partial u_3} \cdot \dfrac{\partial u_3}{\partial u_2} \cdot \dfrac{\partial u_2}{\partial u_1} \\ & = \dfrac{\partial E}{\partial y} \cdot \left( -\dfrac{1}{u_3^2} \right) \cdot 1 \cdot \dfrac{\partial u_1}{\partial x} \\ & = \underline{- \dfrac{\partial E}{\partial y} y^2 e^{-x}}. \end{align*}

参考文献