随机梯度下降

1.局部梯度的反方向不一定是函数整体下降的方向(比如隧道型曲面)

2.手动设定的学习率衰减很难根据数据自适应

3.数据有一定的稀疏性时, 希望对不同特征采取不同的学习率

4.神经网络训练中梯度下降法容易困在鞍点附近

 

似牛顿法

1.在求目标函数的二阶导数(Hessian Matrix)时, 计算复杂.

2.小批量时, 很容易受噪音影响.

3.由于似合的是二次曲面, 比随机梯度更容易困在鞍点. 还容易困在极大值点.

 

动量法

解决问题

局部梯度的反方向不一定是函数整体下降的方向(比如隧道型曲面)

存在问题

1.最初版的动量算法: 用梯度修改速度, 用速度更新参数. 问题为在最低点往反返运动.

2.改进版的动量算法: 通过当前的速度找到下一点, 用下一点的梯度来更新速度而不是当前的梯度来更新速度, 用速度更新参数. 

 

Adagrad

解决问题

1.随着模型的训练, 学习率自动衰减.

2.对于更新频次不同的参数, 会采用不同的学习率.

算法

对某参数更新时, 学习率变为学习率除以根号G(加小数防止除0错), G为这个参数曾经更新使用过的所有梯度的平方和.

存在问题

学习率下降过快

数学公式

梯度下降参数更新_牛顿法

梯度下降参数更新_梯度下降参数更新_02

梯度下降参数更新_数据_03

 

 

RMSprop

在Adagrad基础上改进版Adadelta使用移动平均来代替G, 避免学习率下降过快的问题.

梯度下降参数更新_梯度下降参数更新_04

 

Adadelta

不再需要传入学习率做为超参数, 可自适应增大和缩小学习率.

梯度下降参数更新_数据_05

 

Adam

梯度下降参数更新_梯度下降参数更新_06

梯度下降参数更新_数据_07

开始的时候采用无偏估计

梯度下降参数更新_数据_08

 

 

选用哪种优化方法

数据震荡厉害, 动量法

文本数据, 数据有稀疏维度, RMSprop, Adadelta, Adam

不了解数据, Adam

 

优化方法评估指标

收敛速度训练稳定性

 

其它优化方法:

1.每次epoch大洗牌一次数据

2.批规范化

3.early stopping

4.Gradient Noise

梯度下降参数更新_牛顿法_09