PRML第五章读书笔记——Neural Networks 二次下降、Hessian矩阵的近似求解和精确求解、正切传播/Tikhonov正则化/软权值共享、混合密度网络、贝叶斯神经网络

本文精选神经网络发展中具有长期价值的概念和技术,涵盖单隐层神经网络拟合能力、训练技巧如逻辑回归中的损失函数选择、梯度下降方法比较、误差反向传播、Hessian矩阵及其近似计算、正则化策略等,特别强调了理论与实践相结合的重要性。

(神经网络发展很快,书中的思想停留在2006年左右那个时代。所以这里只对其中有价值的部分进行摘录。对于一般的知识略去,有更好的介绍书籍)

5.1 Feed-forward Network Functions

P231 单隐层神经网络的拟合能力

这里只用了三个隐层单元,tanh激活,就已经能拟合的这么好了。感受一下。
在这里插入图片描述
分类能力
在这里插入图片描述

5.2 Network Training

P235 逻辑回归中的交叉熵和平方损失

在逻辑回归中,用sum-of-squares做loss其实也还凑合(注意和感知机做区分,感知机因为没有sigmoid,所以直接用平方损失会受离群点影响)。不过Simard et al.(2003)指出,对分类问题,用交叉熵会比平方损失更快,也能提高泛化性

P239 梯度下降和二次下降的效率对比

如果参数量为 W W W

  • 二次下降:求Hessian矩阵需要 O ( W 2 ) \mathcal O(W^2) O(W2)的复杂度,目标优化中的 H − 1 g H^{-1}g H1g一项又至少需要 O ( W 3 ) \mathcal O(W^3) O(W3)的复杂度
  • 梯度下降:求梯度 O ( W ) \mathcal O(W) O(W)复杂度,找极小值需要 O ( W ) \mathcal O(W) O(W)的复杂度(待证明),所以一共只需要 O ( W 2 ) \mathcal O(W^2) O(W2)的复杂度

P241 随机梯度下降相比于梯度下降的优势

  1. 容易逃出局部最优解
  2. 更高效。想象数据集复制成原先两倍,梯度下降要全部过一遍,而随机梯度下降则不受影响。

5.3 Error Backpropagation

P246 梯度的数值解近似

方法1为
∂ E n ∂ w j i = E n ( w j i + ϵ ) − E n ( w j i ) ϵ + O ( ϵ ) \frac{\partial E_n}{ \partial w_{ji}} = \frac{E_n(w_{ji} + \epsilon)-E_n(w_{ji})}{\epsilon} + \mathcal O(\epsilon) wjiEn=ϵEn(wji+ϵ)En(wji)+O(ϵ)
方法2为
∂ E n ∂ w j i = E n ( w j i + ϵ ) − E n ( w j i − ϵ ) 2 ϵ + O ( ϵ 2 ) \frac{\partial E_n}{ \partial w_{ji}} = \frac{E_n(w_{ji} + \epsilon)-E_n(w_{ji} - \epsilon)}{2\epsilon} + \mathcal O(\epsilon^2) wjiEn=2ϵEn(wji+ϵ)En(wjiϵ)+O(ϵ2)
方法2的无穷小项阶数更小,可以用泰勒展开进行证明。这好神奇啊。
不过方法2的计算量是方法1的两倍(在神经网络已知 E n ( w j i ) E_n(w_{ji}) En(wji)的前提下)

P247 Jacobian矩阵

神经网络中可以计算jacobian矩阵,计算的时候可以前向计算,也可以反向计算。

5.4 The Hessian Matrix

计算Hessian矩阵时,通常考虑所有参数,包括weights和bias,一起算一个大的Hessian矩阵 H \textbf H H.

P250 对角近似

  • 考虑到有时候只是用Hessian矩阵的逆,所以更愿意估计一个对角阵 H \textbf H H。存在一种方法能让计算复杂度退化到 O ( W ) \mathcal O(W) O(W)(Becker and Le Cun, 1989; Le Cun et al., 1990),具体计算过程略去,翻书……
  • 如果损失函数 E = ∑ n E n E=\sum_n E_n E=nEn,是 n n n个样本相加,那么 H \textbf H H也可以每个样本单独算,最后加起来

P251 外积近似

考虑最小二乘为损失函数的回归问题,
E = 1 2 ∑ n = 1 N ( y n − t n ) 2 E=\frac{1}{2}\sum_{n=1}^N (y_n - t_n)^2 E=21n=1N(yntn)2
H = ∇ 2 E = ∑ n = 1 N ∇ y n T ∇ y n + ∑ n = 1 N ( y n − t n ) ∇ 2 y n \textbf H = \nabla^2 E=\sum_{n=1}^N \nabla y_n^T \nabla y_n+\sum_{n=1}^N (y_n - t_n)\nabla^2 y_n H=2E=n=1NynTyn+n=1N(yntn)2yn
如果 y n y_n yn t n t_n tn很接近,第二项很小,忽略。(或者假定第二项中 y n − t n y_n-t_n yntn ∇ 2 y n \nabla^2 y_n 2yn无关,则求和后,因为 y n − t n y_n-t_n yntn的误差期望是0,苏所以也能忽略)
剩下
H ≃ ∑ n = 1 N b n b n T \textbf H \simeq \sum_{n=1}^N \textbf b_n \textbf b_n^T Hn=1NbnbnT
其中 b n = ∇ a n \textbf b_n = \nabla a_n bn=an a n a_n an是没有激活的网络最后一层(logit值)
对于逻辑回归,则有类似结论
H ≃ ∑ n = 1 N y n ( 1 − y n ) b n b n T \textbf H \simeq \sum_{n=1}^N y_n(1-y_n)\textbf b_n \textbf b_n^T Hn=1Nyn(1yn)bnbnT
这种方式的计算,比较高效, O ( W 2 ) \mathcal O(W^2) O(W2)的复杂度发生在 b n \textbf b_n bn的矩阵乘法那里

用这种方式可以近似计算 H − 1 \textbf H^{-1} H1。考虑数据是序列进来的,
H L + 1 = H L + b L + 1 b L + 1 T \textbf H _{L+1} = \textbf H_L + \textbf b_{L+1} \textbf b_{L+1}^T HL+1=HL+bL+1bL+1T
利用woodbury等式可以得到
H L + 1 − 1 = H L − 1 − H L − 1 b L + 1 b L + 1 T H L − 1 1 + b L + 1 T H L − 1 b L + 1 \textbf H_{L+1}^{-1} = \textbf H_{L}^{-1} - \frac{\textbf H_{L}^{-1} \textbf b_{L+1}\textbf b_{L+1}^T \textbf H_{L}^{-1}}{1+\textbf b_{L+1}^T\

评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值