【问题标题】:Setting gamma and lambda in Reinforcement Learning在强化学习中设置 gamma 和 lambda
【发布时间】:2013-06-24 12:52:40
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    伽玛

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

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

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

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

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

    拉姆达

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

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

    【讨论】:

    • 你将如何确定min_gamma?我正在尝试学习玩多人版的 Snake。我的 gamma 当前设置为 0.95。我的推理方式是我想展望未来 50 步,0.95^50 大约是 0.07。这是你的意思吗?
    猜你喜欢
    • 2011-02-14
    • 2018-11-05
    • 2016-10-24
    • 2019-06-30
    • 2013-12-06
    • 2022-12-28
    • 2019-04-16
    • 2017-08-28
    • 2022-09-28
    相关资源
    最近更新 更多