7

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

我知道 lambda 与资格迹线的长度相关,而 gamma 可以解释为对未来奖励的折扣多少,但是我怎么知道我的 lambda 值对于给定任务何时太低,或者我的 gamma 太高?

我意识到这些问题没有明确的答案,但是了解一些具有不适当值的“危险信号”将非常有用。

以标准的推车杆或倒立摆任务为例。我应该将 gamma 设置为高,因为它需要许多步骤才能使任务失败,还是因为状态信息完全是马尔可夫而设置低?而且我什至无法理解 lambda 值的理性...

4

1 回答 1

17

伽玛

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

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

哪里是从当前状态rn的时间步收到的奖励。n因此,对于伽玛的一种选择,算法可能会优化一件事,而对于另一种选择,它会优化另一件事。

但是,当您定义了某个高级目标时,通常仍然存在建模选择,因为许多不同的 gamma 可能满足目标的要求。例如,在推车杆中,目标是无限期地平衡杆。如果您对平衡的每一步给予 +1 的奖励,则相同的策略(始终平衡极点的策略)对于所有 gamma > 0 都是最优的。但是,次优策略的排名 - 决定了学习属性这个目标 - 对于不同的伽马值会有所不同。

一般来说,大多数算法在不必对未来展望太远的情况下学习得更快。因此,有时将 gamma 设置得相对较低有助于性能。一般的经验法则可能是:确定min_gamma仍然满足您的高级目标的最低 gamma,然后将 gamma 设置为gamma = (min_gamma + 1)/2. (你不想使用gamma = min_gamma它自己,因为那样的话,一些次优的目标将被认为实际上与期望的目标一样好。)另一个有用的经验法则:对于许多问题,0.9 或 0.95 的 gamma 是可以的。但是,当与奖励函数结合使用时,请始终考虑这样的 gamma 对您正在优化的目标意味着什么。

拉姆达

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

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

于 2013-07-11T11:20:39.233 回答