常用梯度下降优化方法

(1)Batch gradient descent: 计算整个数据集上, Cost function 对于parameters的偏导,而后更新梯度;对于convex error surfaces可以得到global minimum,而对于non-convex error surfaces能得到local minimum

其优点在于每次更新都会朝着正确的方向进行,最后能够保证收敛于极值点(凸函数收敛于全局极值点,非凸函数可能会收敛于局部极值点),但是其缺点在于每次学习时间过长,并且如果训练集很大以至于需要消耗大量的内存,并且全量梯度下降不能进行在线模型参数更新。

(2) Stochastic gradient descent: 计算单个sample上,Cost function对于parameters的偏导,而后更新梯度;相较于BGD,SGD更容易从一个local minimum跳到另一个local minimum(但是当learning rate过小时,performance便和BGD相似);High variance,更容易使得loss curve产生震荡

Batch梯度下降算法每次都会使用全部训练样本,因此这些计算是冗余的,因为每次都使用完全相同的样本集。而随机梯度下降算法每次只随机选择一个样本来更新模型参数,因此每次的学习是非常快速的,并且可以进行在线更新。 随机梯度下降最大的缺点在于并非每次更新可能并不会按照正确的方向进行,因此可以带来优化波动(扰动)

(3)Mini-batch gradient descent: 综合了batch梯度下降与stochastic梯度下降,计算whole dataset某个子集(通常设置为50-256)对于paremeters的偏导,而后更新梯度;比SGD更稳定,更易收敛;能够使用高效的矩阵化trick,使得在runing的时候更加efficient

(4)面临的几大问题:
  1. Learning rate很难选择,太小了收敛很慢,太大了容易在local minimum周围晃动,甚至发散
  2.  在训练时当loss一直在某个范围摆动时,这时候应该减小learning rate,但是这个trick受数据集属性或者模型的capacity等因素的影响较大,需要人为的fine-tune
  3. 所用的参数更新都是基于同一个learning rate的,但是当数据集很稀疏,或者features出现的频率有很大不同,这时候我们会希望用较大的learning rate来更新rarely出现的feature,即希望实现feature-wise的learning rate的调整
Share this to:

发表评论

电子邮件地址不会被公开。 必填项已用*标注