在神经网络中有几种常用的优化求解算法,在这里主要记录一下各个算法的优势和缺点,对选择提供一些依据。
常用算法
sgd:随机梯度下降法。每次从训练集中随机选择batch_size个样本进行正向传播计算平均loss,再进行反向传播更新权重参数。
Momentum SGD和Nesterov Momentum(下面统称动量法):增加了动量项。
Adagrad:在学习率上做文章。固定的学习率除以每个参数的历史更新累加值。
Adadelta:直接对每次更新的△W进行改进,学习率由一个除法得到,分母是历史的梯度累加,分子是历史的参数更新累加值。
RMSprop:Hinton提出的。固定的学习率除以参数的历史更新累加值。看起来与Adagrad很像,但是RMSprop是按权重累加,解决了Adagrad越加越大的问题。
Adam:同时使用了动量和梯度的平方和加权。
算法优缺点
算法名称 优点 缺点
sgd 每次都能直奔目标点,不走弯路 收敛速度慢,容易陷入局部最优点
动量法 收敛速度比较快,具备跳出局部最优点的能力 由于动量比较大,因此经常容易冲过目标点,然后再往回进行收敛
Adagrad 对不同参数的学习率区别对待,前期收敛速度比较快,不会陷入局部最优点 训练后期学习率过小导致收敛速度变慢
Adadelta 不需要人工给定学习率,收敛速度快,不会陷入局部最优点 容易冲过全局最优点
RMSprop Hinton已经给出学习率,收敛速度快,不会陷入局部最优点 容易冲过全局最优点
实际使用中,可以选择目前最常用的几个,如RMSprop、Adam等,效果一般不错。不过据说Adam会比同样达到最优的sgd在性能上低1个百分点。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!