读书笔记-怎样高效地走出鞍点

此文章是一篇读书笔记,概念和图片来自这篇重量级NIPS 2017文章:How to Escape Saddle Points Efficiently.

鞍点的重要性

每个神经网络都离不开梯度下降(gradient descent)的核心概念:训练神经网络的过程本质上是在代表网络参数的多维空间上进行梯度下降,对于每一次迭代,都求出当前位置的梯度,然后根据梯度向降低代价的方向调整参数。

随着神经网络靠近最优点,代价逼近最低点,梯度逐渐降至零,训练也随之顺利终止。

不过,梯度降为零,却不一定意味着梯度下降已经找到了最优点。

在鞍点上,方程在一些方向上处于低谷,在其他方向上却处于本地最高点–这意味着鞍点的梯度为零,却又不是我们所求的最低点。显然,保证算法不会遇到鞍点终止而得到非最优解,是至关重要的。

算法

文章中主要提出的算法思想是Perturbed Gradient Descent-其本质在于,当梯度小到一定程度时,PGD会将当前解移向一个随机的方向。

Pseudo code这个伪码表示中, x t ← x ~ t + ξ t , ξ t  uniformly  ∼ B 0 ( r ) \mathbf{x}_{t} \leftarrow \tilde{\mathbf{x}}_{t}+\xi_{t}, \quad \xi_{t} \text { uniformly } \sim \mathbb{B}_{0}(r) xtx~t+ξt,ξt uniformly B0(r)**是随机移动的关键步骤。**这里 ξ t \xi_{t} ξt是从一个小半径高位球体上随机选取的移动矢量。

同时,文章证明了该算法可以快速地走出鞍点,达到本地最优点,并且速度几乎不受维度的影响,和一般梯度下降相比速度代价微小。

影响

那么问题来了:PGD算法在实际中有应用吗?
其实,PGD更像是一种思想,在现实中极为流行的随机梯度下降(Stochastic Gradient Descent)中是有所体现的。
道理其实很简单:在不同的训练样本上求出的梯度是有差异的,如果使用批量梯度下降,那么每次更新的梯度是该批所有样本的平均,相当稳定。

而SGD中Batch Size为1,那么每次更新使用的是一个随机样本,梯度的随机性也相当大。虽然SGD中没有特意加入梯度噪音,每次更新之间的梯度随机跳动和PGD噪音的作用相等。
换句话说,这篇文章通过数学方式证明了流行SGD算法的优点(之一)

事实上,这篇文章并不是这种思想的第一个呈现:文章的作者早在2015年就证明加入噪音的梯度下降可在多项式时间内找到本地最优;2016年另一团队改进了该预测,而这篇文章再次改进,从2017年发布至今已被引用200余次,也是对数学证明的重要性的一种见证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值