本系列为《模式识别与机器学习》的读书笔记。
一,Hessian
矩阵
反向传播也可以⽤来计算误差函数的⼆阶导数,形式为
∂ 2 E ∂ w j i ∂ w k l \frac{\partial^{2}{E}}{\partial{w_{ji}}\partial{w_{kl}}} ∂wji∂wkl∂2E
注意,有时将所有的权值和偏置参数看成⼀个向量(记作 w \boldsymbol{w} w )的元素 w i w_i wi 更⽅便,此时⼆阶导数组成了Hessian
矩阵 H \boldsymbol{H} H 的元素 H i j H_{ij} Hij ,其中 i , j ∈ { 1 , … , W } i, j \in \{1,\dots, W\} i,j∈{
1,…,W} ,且 W W W 是权值和偏置的总数。Hessian
矩阵在神经⽹络计算的重要的作⽤,包括:
1)⼀些⽤来训练神经⽹络的⾮线性最优化算法是基于误差曲⾯的⼆阶性质的, 这些性质由
Hessian
矩阵控制(Bishop and Nabney
, 2008);
2)对于训练数据的微⼩改变,Hessian
矩阵构成了快速重新训练前馈⽹络的算法的基础 (Bishop
, 1991);
3)Hessian
矩阵的逆矩阵⽤来鉴别神经⽹络中最不重要的权值,这是⽹络“剪枝”算法的⼀部分 (LeCun et al.
, 1990);
4)Hessian
矩阵是贝叶斯神经⽹络的拉普拉斯近似的核⼼。它的逆矩阵⽤来确定训练过的神经⽹络的预测分布,它的特征值确定了超参数的值,它的⾏列式⽤来计算模型证据。
二,对角近似
对于模式 n n n ,Hessian
矩阵的对角线元素可以写成
∂ 2 E n ∂ w j i 2 = ∂ 2 E n ∂ a j 2 z i 2 (5.56) \frac{\partial^{2}{E_n}}{\partial{w_{ji}^{2}}}=\frac{\partial^{2}{E_n}}{\partial{a_{j}^{2}}}z_{i}^{2}\tag{5.56} ∂wji2∂2En=∂aj2∂2Enzi2(5.56)
从而,反向传播⽅程的形式为
∂ 2 E n ∂ a j 2 = h ′ ( a j ) 2 ∑ k ∑ k ′ w k j w k ′ j ∂ 2 E n ∂ a k ∂ a k ′ + h ′ ′ ( a j ) ∑ k w k j ∂ E n ∂ a k (5.57) \frac{\partial^{2}{E_n}}{\partial{a_{j}^{2}}}=h^{\prime}(a_j)^2\sum_{k}\sum_{k^{\prime}}w_{kj}w_{k^{\prime}j}\frac{\partial^{2}{E_n}}{\partial{a_k}\partial{a_{k^{\prime}}}}+h^{\prime\prime}(a_j)\sum_{k}w_{kj}\frac{\partial{E_n}}{\partial{a_k}}\tag{5.57} ∂aj2∂2En=h′(aj)2k∑k′∑wkjwk′j∂ak∂ak′∂2En+h′′(aj)k∑wkj∂ak∂En(5.57)
如果忽略⼆阶导数中⾮对角线元素, 那么有(Becker and LeCun
, 1989; LeCun et al.
, 1990)
∂ 2 E n ∂ a j 2 = h ′ ( a j ) 2 ∑ k w k j 2 ∂ 2 E n ∂ a k 2 + h ′ ′ ( a j ) ∑ k w k j ∂ E n ∂ a k (5.58) \frac{\partial^{2}{E_n}}{\partial{a_{j}^{2}}}=h^{\prime}(a_j)^2\sum_{k}w_{kj}^{2}\frac{\partial^{2}{E_n}}{\partial{a_k^{2}}}+h^{\prime\prime}(a_j)\sum_{k}w_{kj}\frac{\partial{E_n}}{\partial{a_k}}\tag{5.58} ∂aj2∂2En=h′(aj)2k∑wkj2∂ak2∂2En+h′′(aj)k∑wkj∂ak∂En(5.58)
三,外积近似
当神经⽹络应⽤于回归问题时,通常使⽤下⾯形式的平⽅和误差函数
E = 1 2 ∑ n = 1 N ( y n − t n ) 2 (5.59) E=\frac{1}{2}\sum_{n=1}^{N}(y_n-t_n)^2\tag{5.59} E=21n=1∑N(yn−tn)2(5.59)
考虑单⼀输出的情形(推⼴到多个输出是很直接的),可以把Hessian
矩阵写成下⾯的形式
H = ∇ ∇ E = ∑ n = 1 N ∇ y n ( ∇ y n ) T + ∑ n = 1 N ( y n − t n ) ∇ ∇ y n (5.60) \boldsymbol{H}=\nabla\nabla{E}=\sum_{n=1}^{N}\nabla{y_n}(\nabla{y_n})^{T}+\sum_{n=1}^{N}(y_n-t_n)\nabla\nabla{y_n}\tag{5.60} H=∇∇E=n=1∑N∇y