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