您当前的位置:首页 > IT编程 > TensorFlow
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:Nesterov加速和Momentum动量方法

51自学网 2020-01-11 23:13:52
  TensorFlow
这篇教程Nesterov加速和Momentum动量方法写得很实用,希望能帮到您。

Nesterov加速和Momentum动量方法

 

这篇讲下我对这两个方法的理解。

Momentum动量

首先讲动量方法,它的基本迭代通常可以表述为

[公式] (1)

这里的 [公式] 表示衰减因子,可以理解为对以前方向的依赖程度,注意到如果 [公式] ,那就变成了普通的梯度方法了。有时会看到下面这种写法:

[公式]

其实这是一样的。 这里我想推导下另外一种等价形式。

[公式]

然后我们引入一个中间变量 [公式] ,并令它满足

[公式]

这样我们就得到了新的迭代形式

[公式] (2)

 

Nesterov加速

Nesterov加速方法的基本迭代形式为

[公式] (3)

和动量方法的区别在于二者用到了不同点的梯度,动量方法采用的是上一步 [公式] 的梯度方向,而Nesterov加速方法则是从 [公式] 朝着 [公式] 往前一步。 一种解释是,反正要朝着 [公式] 方向走,不如先利用了这个信息,这个叫未卜先知。 接下来我来推导出第二种等价形式

[公式]

然后引入中间变量 [公式] ,使得它满足

[公式]

然后得到第二种等价形式

[公式] (4)

这可以理解为,先走个梯度步,然后再走个加速步。 我最早了解到Nesterov加速方法就(4)这种形式,看很多优化方面的文章,都是(4)这种形式,比如在FISTA方法中。 (3)这种形式是在看深度学习相关文献时了解到的,一开始看到二者的不同有点懵逼,后面才知道二者是等价的,这下就舒畅了。


常见的关于momentum的误解(上)
tf.keras.optimizers.SGD
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1