最后更新于
最后更新于
将优化算法的框架搬来. 首先定义符号. 为待优化参数, 为目标函数, 为初始学习率.
在每步中:
计算目标函数关于当前参数的梯度:
根据历史梯度计算一阶动量和二阶动量: ;
计算当前时刻的下降梯度:
根据下降梯度更新参数:
Adadelta是对Adagrad的扩展. Adagrad计算二阶动量的方法是将至今所有时间的梯度的平方和累加起来:
造成了学习率单调递减的问题. 在AdaDelta中, 改变了二阶动量的计算方法, 不再累计全部的历史梯度, 而是只关注一个时间窗口的梯度. 类似于动量的累计方式, 使用指数移动平均值计算二阶累计动量:
这样就避免了二阶动量持续累积, 导致训练过程提前结束的问题. 一般来说在训练的初期, 中期, 训练很快, 但在后期容易出现反复抖动的问题.