码迷,mamicode.com
首页 > Web开发 > 详细

(六) 6.3 Neurons Networks Gradient Checking

时间:2016-03-20 11:37:20      阅读:135      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!