目录
符号说明:
- 上标 ( l ) (l) (l) 是指该元素属于第 l l l 层
- 下标 i i i 是指该元素是当前层的第 i i i 个元素
- y y y 是指一层的输出
- w i j w_{ij} wij 是指权重,连接上一层的第 i i i 个输出,和下一层的第 j j j 个神经元
- Σ \Sigma Σ 是指加权求和
- φ \varphi φ 是指激活函数
- η \eta η 是指学习率
说明:本博客中省略下标或者下标不全的情况
- 比如 φ ( b ) \varphi^{(b)} φ(b) 没有下标,是因为 ( b ) (b) (b) 层只有一种激活函数;
- 比如写成 w i w_{i} wi 而非 w i j w_{ij} wij,是因为下一层只有一个神经元;
- 但有些时候只有一个输出时,我也加了下标,比如 y 1 ( 0 ) y_{1}^{(0)} y1(0)。
1 正向传播
- 假设一个层包含的是:权重、激活函数。
- 记权重为 w i ( l ) w^{(l)}_i wi(l),其中 ( l ) (l) (l) 代表权重所属的层, i i i 表示该权重是当前层中的第 i i i 个权重。记神经元输入经求和后的值为 v ( l ) v^{(l)} v(l),经激活函数后的输出为 y ( l ) y^{(l)} y(l)。
- 上图中 y i ( a ) y^{(a)}_i yi(a) 是 ( a ) (a) (a) 层的输出, ( b ) (b) (b) 层的输入, y ( b ) y^{(b)} y(b) 是 ( b ) (b) (b) 层的输出。假设 ( b ) (b) (b) 层只有一个神经元和一个输出,因此其激活函数和输出没有下标。
上图中的数学关系
v ( b ) = ∑ i = 0 n w i ( b ) y i ( a ) y ( b ) = φ ( b ) ( v ( b ) ) \begin{alignat}{2} \nonumber v^{(b)} =& \sum_{i=0}^{n}w^{(b)}_i y^{(a)}_i \\ \nonumber y^{(b)} =& \varphi^{(b)}(v^{(b)}) \end{alignat}{} v(b)=y(b)=i=0∑nwi(b)yi(a)φ(b)(v(b))
2 反向传播
- 假设 ( b ) (b) (b) 层就是输出层,它的输出 y ( b ) y^{(b)} y(b) 经损失函数后得到 ε \varepsilon ε。
2.1 输出层神经元的梯度
注意:不管是神经元还是权重的梯度,都是损失函数 ε \varepsilon ε 对其进行求导。
记 δ ( l ) \delta^{(l)} δ(l) 为 ( l ) (l) (l) 层神经元的梯度, ( b ) (b) (b) 层神经元的梯度为:
δ ( b ) = ∂ ε ∂ v ( b ) = ∂ ε ∂ y ( b ) ∗ ∂ y ( b ) ∂ v ( b ) = ∂ ε ∂ y ( b ) ∗ φ ′ ( b ) ( v ( b ) ) \delta^{(b)}=\frac{\partial \varepsilon}{\partial v^{(b)}} =\frac{\partial \varepsilon}{\partial y^{(b)}} * \frac{\partial y^{(b)}}{\partial v^{(b)}} =\frac{\partial \varepsilon}{\partial y^{(b)}} * \varphi'^{(b)}(v^{(b)}) δ(b)=∂v(b)∂ε=∂y(b)∂ε∗∂v(b)∂y(b)=∂y(b)∂ε∗φ′(b)(v(b))
上式无非就是利用求导的链式法则进行展开。
2.2 前一层神经元的梯度
刚才我们已经得到了输出层 ( b ) (b) (b) 的神经元梯度,现在可以根据 ( b ) (b) (b) 层的神经元梯度求得 ( a ) (a) (a) 层的神经元梯度,即利用 δ ( b ) \delta^{(b)} δ(b) 求得 δ i ( a ) \delta_i^{(a)} δi(a),计算过程如下:
δ 1 ( a ) = ∂ ε ∂ v 1 ( a ) = ∂ ε ∂ v ( b ) ∗ ∂ v ( b ) ∂ y 1 ( a ) ∗ ∂ y 1 ( a ) ∂ v 1 ( a ) = δ ( b ) ∗ w 1 ( b ) ∗ φ ′ ( a ) ( v 1 ( a ) ) \begin{alignat}{2} \nonumber \delta^{(a)}_1 =& \frac{\partial \varepsilon}{\partial v^{(a)}_1} = \frac{\partial \varepsilon}{\partial v^{(b)}} * \frac{\partial v^{(b)}}{\partial y^{(a)}_1} * \frac{\partial y^{(a)}_1}{\partial v^{(a)}_1} \\ \nonumber =& \delta^{(b)} * w^{(b)}_1 * \varphi'^{(a)}(v^{(a)}_1) \end{alignat}{} δ1(a)==∂v1(a)∂ε=∂v(b)∂ε∗∂y1(a)∂v(b)∗∂v1(a)∂y1(a)