1 梯度下降
1.1 SGD
算法介绍
SGD(Stochasitic Gradient Descent)很简单,就是沿着梯度的反方向更新参数,优化目标函数。优化公式如下:
di=g(θi−1) d i = g ( θ i − 1 )
θi=θi−1−λdi θ i = θ i − 1 − λ d i
其中 di d i 为当前位置的梯度,也就是损失函数关于参数的一阶导数
优点
操作简单,计算量小,在损失函数是凸函数的情况下能够保证收敛到一个较好的全局最优解
缺点
- λ λ 是个定值(在最原始的版本),它的选取直接决定了解的好坏,过小会导致收敛太慢,过大会导致震荡而无法收敛到最优解。
- 对于非凸问题,只能收敛到局部最优,并且没有任何摆脱局部最优的能力(一旦梯度为0就不会再有任何变化)
对于非凸的优化问题,我们可以将其转化为对偶问题,对偶函数一定是凹函数,但是这样求出来的解并不等价于原函数的解,只是原函数的一个确下界
1.2 Momentum
算法介绍
Momentum改进自SGD,让每一次的参数更新方向不仅取决于当前位置的梯度,还受到上一次参数更新方向的影响。 di=βdi−1+(1−β)g(θi−1) d i = β d i − 1 + ( 1 − β ) g ( θ i − 1 ) θi=θi−1−λdi θ i = θ i − 1 − λ d i Momentum的意思就是动量,也就意味着上一次更新的方向对本次更新仍然有影响。优点
一定程度上缓解了SGD收敛不稳定的问题,并且有一定的摆脱局部最优的能力(当前梯度为0时,仍可能按照上次迭代的方向冲出局部最优点),直观上理解,它可以让每次迭代的“掉头方向不是那个大“。缺点
这里又多了另外一个超参数 β β 需要我们设置,它的选取同样会影响到结果。β β 一般取0.9