[关闭]
@songying 2019-03-25T10:35:42.000000Z 字数 2033 阅读 1066

深度学习:优化算法

deep-learning


优化算法公式

1. 标准梯度下降算法

2. 随机梯度下降算法

3. mini-batch 梯度下降算法

4. 动量梯度下降算法

5. Nesterov 梯度下降算法

6. Adagrad 优化算法

7. Adadelta 优化算法

如果我们不想设置学习率,可以令:

8. RMSprop 优化算法

9. Adam 优化算法

优化算法的选择

如果输入数据集比较稀疏,SGD、NAG和动量项等方法可能效果不好。因此对于稀疏数据集,应该使用某种自适应学习率的方法,且另一好处为不需要人为调整学习率,使用默认参数就可能获得最优值。

如果想使训练深层网络模型快速收敛或所构建的神经网络较为复杂,则应该使用Adam或其他自适应学习速率的方法,因为这些方法的实际效果更优。

优化技巧

1. batch vs mini-batch vs stochastic

随机梯度下降优点:

  • 通常比其余梯度下降算法要快
  • 通常,随机梯度下降能获得较好的解(跳出局部最小值与鞍点)
  • 随机梯度下降可以用来跟踪数据变化(batch中变化被平均了,难以监测)

随机梯度下降缺点:

  • 有噪声,迭代过程并不可测,这导致并非每次的梯度都是朝着全局最优解的方向前进

标准梯度下降的优点:

  • Conditions of convergence are well understood.
  • Many acceleration techniques only operate in batch learning.
  • Theoretical analysis of the weight dynamics and convergence rates are simpler.

2. Shuffling 训练样本

在优化中有一个原则是:网络从意料之外的样本中学习最快,所以说,如果为了加速学习,我们要求每次喂入的数据和前一份数据相关性较低。注意,对于标准梯度下降算法则没有这个必要shuffle,因为其每次都将所有样本都拿去学习的。

3. 对输入进行 Normalize (没看懂)

训练样本的输入向量的平均值都为0时网络收敛更快
通常情况下,平均输入的任何偏离零点的变化都会使更新偏向于特定的方向,从而减慢学习速度。(与激活函数有关)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注