首页 > Web开发 > 详细

(六) 6.3 Neurons Networks Gradient Checking

时间:2016-03-20 11:35:14      阅读:308      评论:0      收藏:0      [点我收藏+]

BP算法很难调试,一般情况下会隐隐存在一些小问题,比如(off-by-one error),即只有部分曾德权重得到训练,或者忘记计算bais unit,这虽然会得到一个正确的结果,但效果差于准确BP得到的结果。

有了cost function,目标是求出一组参数W,b,这里以技术分享表示,cost function 暂且记做技术分享。假设 技术分享,则 技术分享,即一维情况下的Gradient Descent:

技术分享

根据6.2中对单个参数单个样本的求导公式:

技术分享

可以得到每个参数的偏导数,对所有样本累计求和,可以得到所有训练数据对参数 技术分享 的偏导数记做技术分享技术分享是靠BP算法求得的,为了验证其正确性,看下图回忆导数公式:

技术分享

可见有:技术分享那么对于任意 技术分享 值,我们都可以对等式左边的导数用:

技术分享来近似。

给定一个被认为能计算 技术分享 的函数技术分享,可以用下面的数值检验公式

技术分享

应用时,通常把技术分享设置为一个很小的常量,比如在技术分享 数量级,最好不要太小了,会造成数值的舍入误差。上式两端值的接近程度取决于 技术分享 的具体形式。假定技术分享 的情况下,上式左右两端至少有4位有效数字是一样的(通常会更多)。

技术分享是一个n维向量而不是实数时,且 技术分享,在 Neorons Network 中,J(W,b)可以想象为 W,b 组合扩展而成的一个长向量 技术分享,现在又一个计算 技术分享的函数 技术分享,如何检验技术分享能否输出到正确结果呢,用技术分享的取值来检验,对于向量的偏导数:

技术分享

根据上图,对 技术分享求导时,只需要在向量的第i维上进行加减操作,然后求值即可,定义 技术分享,其中

技术分享

技术分享 和 技术分享 几乎相同,除了第 技术分享 行元素增加了 技术分享,类似地,技术分享 得到的第 技术分享 行减小了 技术分享,然后求导并与技术分享比较:

技术分享

上式中左边为BP算法的结果,右边为真正的梯度,只要两者很接近,说明BP算法是在正确工作,对于梯度下降中的参数是按照如下方式进行更新的:

技术分享

即有 技术分享 分别为:

技术分享

最后只需总体损失函数J(W,b)的偏导数与上述技术分享 的值比较即可。

除了梯度下降外,其他的常见的优化算法:1) 自适应技术分享的步长,2) BFGS L-BFGS,3) SGD,4) 共轭梯度算法,以后涉及到再看。

(六) 6.3 Neurons Networks Gradient Checking

原文:http://www.cnblogs.com/ooon/p/5297200.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!