深度学习: BP (反向传播) 计算 & 链式法则

BP

每个epoch:
每个batch:
每个level (n = N, … to 1,即从顶层往底层):
分别计算出该层误差(对该层参数、该层输入数据)的导数:
1. Lωn=Lxn+1xn+1ωn ∂ L ∂ ω n = ∂ L ∂ x n + 1 ∂ x n + 1 ∂ ω n (更新本level的 ωn ω n 时即用)
2. Lxn=Lxn+1xn+1xn ∂ L ∂ x n = ∂ L ∂ x n + 1 ∂ x n + 1 ∂ x n (留给底一层的level用)
更新参数:
1. ωnωnηLωn ω n ← ω n − η ∂ L ∂ ω n
2. bnbnηLbn b n ← b n − η ∂ L ∂ b n

Arg:

  • ω ω :欧米茄;
  • η η :艾塔。

Note

  • BP中的 Lωn ∂ L ∂ ω n Lxn ∂ L ∂ x n 的计算结果 来源于 对 前馈计算时 L=f(wnxn) L = f ( w n x n ) 求导

链式法则

Lωn=Lxn+1xn+1ωn=(Lxn+1)xn+1ωn=(Lxn+2xn+2xn+1)xn+1ωn=(Lxn+3xn+3xn+2xn+2xn+1)xn+1ωn ∂ L ∂ ω n = ∂ L ∂ x n + 1 ∂ x n + 1 ∂ ω n = ( ∂ L ∂ x n + 1 ) ∂ x n + 1 ∂ ω n = ( ∂ L ∂ x n + 2 ∂ x n + 2 ∂ x n + 1 ) ∂ x n + 1 ∂ ω n = ( ∂ L ∂ x n + 3 ∂ x n + 3 ∂ x n + 2 ∂ x n + 2 ∂ x n + 1 ) ∂ x n + 1 ∂ ω n

你可能感兴趣的:(深度学习,深度学习)