「ゼロから作るDeepLearning」で気づいたこと(その4)
5.5.2 Sigmoid レイヤについて
合成関数の微分を利用したほうが理解しやすかったのでメモしておきます。
Lを損失関数とする。
◎ステップ1
α(i) = 1+exp(-x) とすると、 y = 1/α(i)
∂L/∂α(i) = (∂L/∂y )(∂y/∂α(i))
∂y/∂α(i) = - 1/α(i)^2 = -(1/α(i))^2 = -y^2 だから
∂L/∂α(i) = -(∂L/∂y )y^2
◎ステップ2
α(i) = 1+exp(-x)
α(i-1) = exp(-x) と置くと、α(i) = 1+α(i-1)
よって、
∂L/∂α(i-1) = (∂L/∂α(i))(∂α(i)/∂α(i-1))
ステップ1より、∂L/∂α(i) = -(∂L/∂y )y^2
また、∂α(i)/∂α(i-1) = 1 なので
∂L/∂α(i-1) = -(∂L/∂y )y^2
◎ステップ3
α(i-2) = -x とすると、
α(i-1) = exp(α(i-2))
よって、
∂L/∂α(i-2) = (∂L/∂α(i-1))(∂α(i-1)/∂α(i-2))
ステップ2より ∂L/∂α(i-1) = -(∂L/∂y )y^2
また、∂α(i-1)/∂α(i-2) = exp(α(i-2)) = exp(-x) であるから、
∂L/∂α(i-2) = -(∂L/∂y )(y^2)(epx(-x))
◎ステップ4
∂L/∂x = (∂L/∂α(i-2))(∂α(i-2)/∂x)
ステップ3より ∂L/∂α(i-2) = -(∂L/∂y )(y^2)(epx(-x))
また、∂α(i-2)/∂x =-1 であるから、
∂L/∂x = (∂L/∂y )(y^2)(epx(-x))
※(∂L/∂y)(y^2)(exp(−x)) という値が順伝播の入力 x と出力 y だけから計算できる点が注目すべきところ