|
|
|
|
移动端

2.5.7 AdaDelta的进一步改进

《深度学习与计算机视觉:算法原理、框架应用与代码实现》第2章 深度学习和计算机视觉中的基础数学知识,本章会尽量从定性的角度讲解一些与深度学习、计算视觉紧密联系的基础数学概念,不一定会很严谨细致,但力求简单、形象。本节为大家介绍AdaDelta的进一步改进。

作者:叶韵来源:机械工业出版社|2017-11-16 18:29

年前最后一场技术盛宴 | 1月27日与京东、日志易技术大咖畅聊智能化运维发展趋势!


2.5.7  AdaDelta的进一步改进

AdaGrad中存在的问题在AdaDelta中得到了一个解决方案。AdaDelta是第1章中提到过的Mathew Zeiler在Google实习时独立完成的工作。和AdaGrad比起来AdaDelta的主要改进有两点。第一点是将累计梯度信息从全部历史梯度变为当前时间向前的一个窗口期内的累积,具体来说在计算历史梯度信息的时候采用的是下面的公式:

相当于对历史梯度信息的累计乘上一个衰减系数ρ,然后用(1-ρ)作为当前梯度平方的加权系数相加,这样就隐式实现了梯度平方在一定时间窗口内的累积。这种历史梯度信息用类似AdaGrad的方法开方后作为分母项,公式如下:

其中ε是一个非常小的项防止分母为0。忽略这一项,则分母就是均方根(Root Mean Square,RMS)。用(Δxt)i表示每次更新的步长,则公式如下:

虽然梯度累积后学习率一直下降的问题解决了,可是手动设置学习率η仍然是个问题。AdaDelta中用第二个改进解决这个问题。第二个改进主要是受到牛顿法和LeCun关于牛顿法近似工作的启发。LeCun在1988年的时候提出用Hessian矩阵的对角线近似Hessian矩阵,进而更新步长的时候可以用如下公式:

这个步长被称为伪牛顿步长(pseudo-Newton step),其中ε还是一个用来防止分母为0的项。根据这个关系Matthew在论文中用了一个看上去有些多余的推导:

大意就是,步长可以用梯度除以用于近似Hessian的二阶导数来表示。所以换一下等式的顺序,也就是箭头右边的形式,等号左边的项是用来近似Hessian的逆。这一项可以表示成等号右边的形式,步长除以导数:。把步长除以导数的这一项和公式2-48中梯度前的系数进行类比,发现分母上的和的量纲是一样的,并且定性来说具有相同的物理意义(都是导数),所以作为分子的η和Δx也是应该有相同的量纲及物理意义。其实说了这么多,就是要说明下面的式子:

简单来说,就是对应的物理量要有相同的量纲。Matthew远论文里还有不少推导用于说明这件事,并指出了一般的梯度法和AdaGrad都没有正确对应的量纲,这些细节这里就略过了。

总之,按照这个道理,以及对函数平滑性的假设,把Δx的历史累积也和gt一样如法炮制,只不过用的是Δxt-1,就得到了AdaDelta的更新公式:

AdaDelta除了梯度和梯度历史信息,只额外引入了一个保存Δx历史信息的量,就完成了对Hessian对角近似的某种程度上的近似。另外,AdaDelta的一个巨大的优点就是不用手动指定学习率。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

SQL Server 2005实现与维护(MCTS教程)

本书是微软认证技术专家(MCTS) 70-431考试的专用教材,全书共21章,围绕着考查目标,通过详尽的描述、大量课程和课后测试,全面介绍了SQL S...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊