pymc.adagrad#
- pymc.adagrad(loss_or_grads=None, params=None, learning_rate=1.0, epsilon=1e-06)[源代码]#
Adagrad 更新
通过将学习率除以累积平方梯度的平方根来缩放学习率。进一步描述请参见 [1]。
- 参数:
- loss_or_grads: 符号表达式或表达式列表
一个标量损失表达式,或一个梯度表达式列表
- 参数: 共享变量的列表
用于生成更新表达式的变量
- learning_rate: float 或符号标量
学习率控制更新步骤的大小
- epsilon: float 或符号标量
数值稳定性的小值增加
- 返回:
OrderedDict
一个字典,将每个参数映射到其更新表达式
注释
使用步长 eta,Adagrad 计算在时间步 t 时特征 i 的学习率为:
\[\eta_{t,i} = \frac{\eta}{\sqrt{\sum^t_{t^\prime} g^2_{t^\prime,i}+\epsilon}} g_{t,i}\]因此,学习率是单调递减的。
Epsilon 不包含在典型的公式中,参见 [2]。
优化器可以在不传入 loss_or_grads 和 params 的情况下调用,在这种情况下会返回一个偏函数。
参考文献
[1]Duchi, J., Hazan, E., & Singer, Y. (2011): 自适应次梯度方法用于在线学习和随机优化。JMLR, 12:2121-2159.
[2]Chris Dyer: AdaGrad 笔记。http://www.ark.cs.cmu.edu/cdyer/adagrad.pdf
示例
>>> a = pytensor.shared(1.) >>> b = a*2 >>> updates = adagrad(b, [a], learning_rate=.01) >>> isinstance(updates, dict) True >>> optimizer = adagrad(learning_rate=.01) >>> callable(optimizer) True >>> updates = optimizer(b, [a]) >>> isinstance(updates, dict) True