机器学习几乎所有算法都要利用损失函数lossfunction
来检验算法模型的优劣,同时利用损失函数来提升算法模型的。
这个提升的过程就是优化的过程
也就是
常用的优化方法(Optimizer)
- 1 SGD 和 BGD 和 Mini-BGD
- SGD 随机梯度下降,算法在每读入一个数据都会立刻计算loss function的梯度来update参数。假设loss function为w
所以SGD的batchsize为1
收敛的速度快,但是不容易跳出局部最优解 - BGD(batch gradient descent):批量梯度下降,算法在读取整个数据集后才去计算损失函数的梯度
batchsize 为n
数据处理量加大,梯度下降较慢;训练过程中占内存 - Mini - BGD(mini-batch gradient descent):选择小批量来进行梯度下降,这是一种折中的方法,采用训练子集的方法来计算loss
- SGD 随机梯度下降,算法在每读入一个数据都会立刻计算loss function的梯度来update参数。假设loss function为w
上面的方法都存在一个问题,就是update更新的方向完全依赖于计算出来的梯度.很容易陷入局部最优的马鞍点.能不能改变其走向,又保证原来的梯度方向.就像向量变换一样,我们模拟物理中物体流动的动量概念(惯性).
引入Momentum的概念.
Momentum
在更新方向的时候保留之前的方向,增加稳定性而且还有摆脱局部最优的能力
;
若当前梯度的方向与历史梯度一致(表明当前样本不太可能为异常点),则会增强这个方向的梯度,若当前梯度与历史梯方向不一致,则梯度会衰减。一种形象的解释是:我们把一个球推下山,球在下坡时积聚动量,在途中变得越来越快,可视为空气阻力,若球的方向发生变化,则动量会衰减
Adagrad:(adaptive gradient)自适应梯度算法,是一种改进的随机梯度下降算法.以前的算法中,每一个参数都是用相同的学习率,Adagrad算法能够在训练中自动对learning_rate进行调整,出现频率较低参数采用较大的𝛼更新,出现频率较高的参数采用较小的𝛼更新.根据描述这个优化方法很适合处理稀疏数据.
RMSprop(root mean square propagation) 也是一种自适应学习率方法. 不同之处在于,Adagrad会累加之前所有的梯度平方,RMProp仅仅是计算对应的平均值.可以缓解Adagrad算法学习率下降较快的问题.
,其中
是遗忘因子
参数更新
Adam (adaptive moment estimation) 是对RMSProp优化器的更新.利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率.
优点:每一次迭代学习率都有一个明确的范围,使得参数变化很平稳.