梯度下降是很常见的,但是这个演算过程看不太懂,再深入看笔记之前,再整理一波思路:
这是个demo,还需要修改~~~~
主要是看其中的2篇文章:
目前还没有整理出比较好的文档,明天继续看~~
- SGD指mini-batch gradient descent:SGD就是每一次迭代计算mini-batch的梯度,然后对参数进行更新。
- Momentum:momentum是模拟物理里动量的概念,积累之前的动量来替代真正的梯度。
- Nesterov:nesterov项在梯度更新时做一个校正,避免前进太快,同时提高灵敏度。
- Adagrad:Adagrad其实是对学习率进行了一个约束。
- Adadelta:Adadelta是对Adagrad的扩展,最初方案依然是对学习率进行自适应约束,但是进行了计算上的简化;Adagrad会累加之前所有的梯度平方,而Adadelta只累加固定大小的项,并且也不直接存储这些项,仅仅是近似计算对应的平均值。
- RMSprop:RMSprop可以算作Adadelta的一个特例
- Adam:Adam(Adaptive Moment Estimation)本质上是带有动量项的RMSprop,它利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率;Adam的优点主要在于经过偏置校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。