优化方法
随机梯度下降SGD
随机梯度下降(SGD, stochastic gradient descent):名字中已经体现了核心思想,随机选取一个店做梯度下降,而不是遍历所有样本后进行参数迭代。因为梯度下降法的代价函数计算需要遍历所有样本,而且是每次迭代都要遍历,直至达到局部最优解,在样本量庞大时就显得收敛速度比较慢了,计算量非常庞大。
随机梯度下降仅以当前样本点进行最小值求解,通常无法达到真正局部最优解,但可以比较接近。属于大样本兼顾计算成本的折中方案。
- 缺点
- 当梯度方向不指向最小值,会在更敏感的方向上震荡
- 局部最小值和鞍点及其附近(高维空间上,后者更容易发生)
SGD+momentum(带动量的SGD)
用“在速度方向上步进”替代“在原始梯度方向上步进”
可以解决上面的两个问题:相当于一定程度上保留了惯性
momentum初始化:初始化到0
AdaGrad & RMSProp
1. AdaGrad 一般不用
- 思想:累加每一步的梯度平方和,并在梯度下降时用梯度除以平方和
- 原因:在梯度陡峭的地方降低迭代步长,在梯度平滑的地方提升迭代步长
- 优点:避免问题一(即在每个维度上做出相同程度的优化),且步长越来越小(在凸函数的情况下符合期待)
- 缺点:非凸时困在局部最优点
2. RMSProp
- 思想:在平方和这一项中加入动量(decay_rate设置到0.9~0