pymc.rmsprop#
- pymc.rmsprop(loss_or_grads=None, params=None, learning_rate=1.0, rho=0.9, epsilon=1e-06)[源代码]#
RMSProp 更新
通过将学习率除以均方根(RMS)梯度的移动平均值来缩放学习率。进一步的描述请参见 [1]。
- 参数:
- loss_or_grads: 符号表达式或表达式列表
一个标量损失表达式,或一个梯度表达式列表
- 参数: 共享变量的列表
用于生成更新表达式的变量
- learning_rate: float 或符号标量
学习率控制更新步骤的大小
- rho: float 或符号标量
梯度移动平均衰减因子
- epsilon: float 或符号标量
数值稳定性的小值增加
- 返回:
OrderedDict
一个字典,将每个参数映射到其更新表达式
注释
rho 应在 0 和 1 之间。rho 接近 1 的值将缓慢衰减移动平均值,而接近 0 的值将快速衰减移动平均值。
使用步长 \(\eta\) 和衰减因子 \(\rho\),学习率 \(\eta_t\) 计算如下:
\[\begin{split}r_t &= \rho r_{t-1} + (1-\rho)*g^2\\ \eta_t &= \frac{\eta}{\sqrt{r_t + \epsilon}}\end{split}\]优化器可以在不传入 loss_or_grads 和 params 的情况下调用,在这种情况下会返回一个偏函数。
参考文献
[1]Tieleman, at. 和 Hinton, G. (2012): 机器学习中的神经网络, 第6.5讲 - rmsprop. Coursera. http://www.youtube.com/watch?v=O3sxAc4hxZU (公式 @5:20)
示例
>>> a = pytensor.shared(1.) >>> b = a*2 >>> updates = rmsprop(b, [a], learning_rate=.01) >>> isinstance(updates, dict) True >>> optimizer = rmsprop(learning_rate=.01) >>> callable(optimizer) True >>> updates = optimizer(b, [a]) >>> isinstance(updates, dict) True