神经网络与深度学习 笔记3 反向传播算法
1. 使用矩阵快速计算输出的方法
使用 wljk 表示从(l−1)th 层的 kth个神经元到lth层的jth 个神经元的链接上的权重. 例如,下图给出了网络中第二层的第四个神经元到第三层的第二个神经元的链接上的权重:
对网络的偏置和**值也会使用类似的表示。 我们使用 blj 表示在 lth 层第jth 个神经元的偏置。使用 alj 表示 lth 层第jth 个神经元的**值:
有了这些表示, lth 层的第jth个神经元的**值alj 就和(l−1)th层的**值通过方程关联起来了:
alj=σ(∑kwljkal−1k+blj),
中间量zl≡wlal−1+bl,称zl为l层神经元的带权输入
我们使用 s ⊙ t 来表示按元素的乘积,称为 Hadamard 乘积,或者 Schur 乘积,所以 s ⊙ t 的元素就是(s⊙t)j=sjtj,给个例子,
[12]⊙[34]=[1∗32∗4]=[38].
2. 反向传播的四个基本方程
引入一个中间量δlj,
称为lth层第jth个神经元的误差。∂C∂zlj是神经元的误差的度量。误差定义为:δlj≡∂C∂zlj.
δLj=∂C∂aLjσ′(zLj).(BP1)
以矩阵形式重写方程:δL=∇aC⊙σ′(zL).(BP1a)
使用下一层的误差δl+1来表示当前层的误差δl
:
δl=((wl+1)Tδl+1)⊙σ′(zl),(BP2)
通过组合 (BP1) 和 (BP2),我们可以计算任何层的误差δl。首先使用 (BP1) 计算 δ L ,然后应用方程 (BP2) 来计算δL−1,然后再次用方程 (BP2) 来计算δL−2,如此一步一步地反向传播完整个网络。
代价函数关于网络中任意偏置的改变率:
∂C∂blj=δlj.(BP3)
总结:反向传播的四个方程式
3. 反向传播算法