在强化学习中设置gamma和lambda

时间:2013-06-27 06:32:28

标签: machine-learning artificial-intelligence reinforcement-learning markov

在使用广义时间差分(例如SARSA,Q学习)的任何标准强化学习算法中,出现的问题是用于特定任务的lambda和gamma超参数的值。

我知道lambda与资格痕迹的长度有关,而gamma可以解释为对未来奖励的折扣,但我怎么知道我的lambda值对于给定的任务来说太低,或者我的gamma也是如此高?

我意识到这些问题没有明确定义的答案,但是知道某些“危险信号”会产生不适当的价值会非常有用。

以标准cart-pole, or inverted pendulum任务为例。我应该将gamma设置为高,因为它需要很多步骤才能使任务失败,或者因为状态信息完全是Markovian而需要很少?而且我甚至无法理解lambda值......

1 个答案:

答案 0 :(得分:10)

伽玛

通常,gamma被视为问题的一部分,而不是算法的一部分。强化学习算法尝试每个州优化累积折扣奖励:

r1 + gamma*r2 + gamma^2*r3 + gamma^3*r4 ...

其中rn是从当前状态的时间步n收到的奖励。因此,对于一种伽玛选择,算法可以优化一件事,而对于另一种选择,它将优化其他东西。

但是,当您定义了某个高级别目标时,仍然经常会有一个建模选择,因为许多不同的伽玛可能会满足目标的要求。例如,在推车杆中,目标是无限期地平衡杆。如果你为平衡的每一步给予+1的奖励,那么相同的政策(总是平衡极点的政策)对于所有伽玛都是最佳的>然而,对于不同的伽玛值,次优政策的排名 - 确定实现这一目标的学习属性 - 将会有所不同。

通常,大多数算法在不必看得太远的情况下学得更快。因此,它有时可以帮助将性能设置得相对较低。一般的经验法则可能是:确定仍然满足您的高级目标的最低伽玛min_gamma,然后将伽玛设置为gamma = (min_gamma + 1)/2。 (你不想使用gamma = min_gamma本身,因为一些次优的目标将被视为与预期目标一样好。)另一个有用的经验法则:对于许多问题,伽玛值为0.9或0.95就可以了。但是,在与奖励功能结合使用时,请始终考虑这样的伽马对于您正在优化的目标意味着什么。

LAMBDA

lambda参数确定您使用当前的蒙特卡罗推出时对早期学习值的引导程度。这意味着在更多偏差(低λ)和更多方差(高λ)之间进行权衡。在许多情况下,将lambda设置为零已经是一个很好的算法,但将lambda设置得更高有助于加快速度。在这里,您不必担心您正在优化的内容:目标与lambda无关,此参数仅有助于加快学习速度。换句话说,lambda完全是算法的一部分,而不是问题的一部分。

一般的经验法则是使用等于0.9的lambda。然而,尝试一些设置(例如,0,0.5,0.8,0.9,0.95和1.0)并绘制学习曲线可能是好的。然后,你可以选择似乎学得最快的那个。