深度模型中的优化(二)

3、 基本算法

3.1 随机梯度下降
SGD

SGD算法中一个关键参数是学习率,一般学习率应随着时间的推移逐渐降低,学习率的最终值应设为大约初始值的1%。

3.2 动量


含有动量的更新规则

动量的主要目的是解决两个问题:Hessian矩阵的病态条件和随机梯度的方差。一个病态条件的二次目标函数看起来像一个长而窄的山谷,动量能够正确的纵向穿过峡谷。而普通的梯度步骤则会浪费时间在峡谷的窄轴上来回移动。
3.3 Nesterov动量
Nesterov动量

在凸批量梯度的情况下,Nesterov动量能降低额外误差收敛率,可惜在随机梯度的情况下并没有明显效果。

4、参数初始化策略
这部分书里写的不多,找时间再把xavier、MSRA什么的详细写一篇吧
5、自适应学习率方法
5.1 AdaGrad


AdaGrad

5.2 RMSProp


RMSProp

5.3 Adam
Adam

6、 二阶近似方法


牛顿法

共轭梯度法

7、 优化策略和元方法
7.1 批标准化

BN是一个自适应的重参数化的方法,试图解决训练非常深的模型的困难。非常深的模型会涉及多个函数或层组合。在其他层不改变的假设下,梯度用于如何更新每一个参数。在实践中,我们同时更新所有层。当我们进行更新时,可能会发生一些意想不到的结果,这是因为许多组合在一起的函数同事改变时,计算更新的假设是其他函数保持不变。(下面小公式忒多了,懒得打,只能粘图了)
image.png

BN保证了采样自单位高斯的x经过w以后,仍然能保持单位高斯。对于线性的模型,低层的参数在大多数情况下并没有什么影响,它们的输出总是重新标准化为单位高斯,学习这个模型也变得非常简单,而没有BN,几乎每个更新都会对层输出的统计量有着极端的影响。在上面的线性实例中,容易学习的代价是使得底层网络没有用,较低层不再有任何有害的影响,但他们也不再有任何有益的影响。而在具有非线性激活函数的深度神经网络中,较低层可以进行数据的非线性变换,所以它们仍然是有用的。
标准化一个单元的均值和标准差会降低包含该单元的神经网络的表达能力。为了保持网络的表现力,通常会将H替换为

这样新的参数可以表示旧参数作为输入的同一族函数,但是新参数有不同的学习动态。其均值不再由H下层中参数的复杂关联决定,而是由BN层的参数决定,这样新的参数很容易通过梯度下降来学习。

你可能感兴趣的:(深度模型中的优化(二))