机器学习之优化算法学习总结
2018-01-29 20:45
387 查看
优化算法演化历程
机器学习和深度学习中使用到的优化算法的演化历程如下:SGD –> Momentum –> Nesterov –> Adagrad –> Adadelta –> Adam –> Nadam
表1 优化算法演化过程及其原因表1 优化算法演化过程及其原因
演化过程 | 原因 |
---|---|
SGD –> Momentum | 由于SGD在优化过程中容易产生震荡,为减小震荡,Momentum在梯度下降过程中引入了动量,使之具有惯性 |
Momentum –> Nesterov | 对梯度项进行矫正,使梯度下降方向由积累的动量和假设走到下一步的梯度两部分决定的 |
Nesterov –> Adagrad | Adagrad中引入二阶动量,使之能够自适应调节学习率 |
Adagrad –> Adadelta | 由于Adagrad 使用了之前所有梯度的平方,会导致训练到后面梯度为0,因此,在Adadelta中只用前面一段时间的下降梯度的配方 |
Adadelta –> Adam | 在梯度更新中,使用了动量,并且能够自适应调节学习率 |
Adam –> Nadam | 引入了Nesterov 动量项 |
各优化算法的公式与特点
SGD
公式:θ=θ−η∇θJ(θ)θ=θ−η∇θJ(θ)
特点:
仅由当前所在的梯度来决定参数如何更新
梯度下降过程中容易出现震荡
Momentum
公式:mt=μ∗mt−1+η∇θJ(θ)mt=μ∗mt−1+η∇θJ(θ)
θt=θt−1−mtθt=θt−1−mt
特点:
引入动量,减小SGD在梯度下降过程中的震荡
梯度下降过程中,之前的动量也对当前运动有影响
Nesterov
公式:mt=μ∗mt−1+η∇θJ(θ−μ∗mt−1)mt=μ∗mt−1+η∇θJ(θ−μ∗mt−1)
θt=θt−1−mtθt=θt−1−mt
特点:
在Momentum优化算法的基础上,对当前梯度值进行矫正
矫正方式为,假设参数往积累的动量方向走了一步时所在位置的梯度作为当前的梯度值
Adagrad
公式:gt=∇θJ(θ)gt=∇θJ(θ)
nt=nt−1+(gt)2nt=nt−1+(gt)2
θt=θt−1−ηnt+ϵ−−−−−√∗gtθt=θt−1−ηnt+ϵ∗gt
特点:
适合用于稀疏梯度
前期梯度下降较快,后期梯度下降较慢
具有自适应学习率
训练后期,由于梯度累计较大,会使训练提前结束
Adadelta
公式:gt=∇θJ(θ)gt=∇θJ(θ)
nt=v∗nt−1+(1−v)∗(gt)2nt=v∗nt−1+(1−v)∗(gt)2
θt=θt−1−ηnt+ϵ−−−−−√∗gtθt=θt−1−ηnt+ϵ∗gt
特点:
在Adagrad基础上,减小提前结束训练的风险
Adam
公式:mt=μ∗mt−1+(1−μ)∇θJ(θ)mt=μ∗mt−1+(1−μ)∇θJ(θ)
nt=v∗nt−1+(1−v)∗(gt)2nt=v∗nt−1+(1−v)∗(gt)2
mt^=mt1−μtmt^=mt1−μt
nt^=nt1−vtnt^=nt1−vt
θt=θt−1−mt^∗ηnt^+ϵ−−−−−√∗gtθt=θt−1−mt^∗ηnt^+ϵ∗gt
特点:
Adam梯度经过偏置校正后,每一次迭代学习率都有一个固定范围,使得参数比较平稳
结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
为不同的参数计算不同的自适应学习率
也适用于大多非凸优化问题——适用于大数据集和高维空间
各优化算法的分类
表2 各优化算法的分类表2 各优化算法的分类梯度修正 | 优化算法 |
---|---|
没进入动量,且不具有自适应学习率 | BGD、SGD |
引入动量 | Momentum、Nesterov |
自适应学习率 | Adagrad、Adadelta、RMSprop |
引入动量且自适应学习率 | Adam、Adamx、Nadam |
优化算法使用总结
在不考虑优化算法的使用细节及其技巧的情况下,一般使用Adam虽然后面的优化算法都是在SGD上改进而来,但是目前很多paper依旧使用SGD
一般在训练时,数据都要进行shuffle
几种优化算法并不一定哪一个绝对好,视模型和数据而定
相关文章推荐
- 一张表总结机器学习/深度学习常用权重学习优化算法的迭代公式
- 深度学习常用优化算法总结整理
- 系统学习机器学习之SVM(四)--SVM算法总结
- 深度学习:基于梯度下降不同优化算法的比较总结
- 机器学习总结(lecture 18)算法:强化学习Reinforcement Learning(RL)
- 机器学习笔记(8)---K-近邻算法(6)---KNN算法学习总结
- 机器学习总结(lecture 2)算法:感知机学习算法 (PLA)
- (转)机器学习工具WEKA使用总结,包括算法选择、参数优化、属性选择
- 深度学习DeepLearning.ai系列课程学习总结:12. 优化算法实战
- 机器学习总结(十一):深度学习算法(CNN,SAE,等)及常见问题总结
- 深度学习DeepLearning.ai系列课程学习总结:11. 优化算法理论讲解
- 机器学习优化算法总结
- 深度学习优化算法总结(cs231n)
- Android之ListView原理学习与优化总结
- 深度学习优化算法记录
- 机器学习实战-基本算法总结1
- Android之ListView原理学习与优化总结
- 普林斯顿大学算法第一部分学习总结(Week4-Priority Queue)
- (斯坦福机器学习课程笔记)牛顿法算法学习
- gossip 算法学习总结