【问题标题】:When to use a certain Reinforcement Learning algorithm?何时使用某种强化学习算法?
【发布时间】:2014-05-08 13:32:21
【问题描述】:

我正在学习强化学习并阅读 Sutton 的大学课程书籍。除了经典的 PD、MC、TD 和 Q-Learning 算法之外,我还在阅读用于解决决策问题的策略梯度方法和遗传算法。 我以前从未有过这个主题的经验,而且我在理解什么时候应该优先选择一种技术时遇到了问题。我有一些想法,但我不确定。有人可以简要解释或告诉我一个来源,我可以在哪里找到关于应该使用某种方法的典型情况的信息?据我了解:

  • 仅当 MDP 的动作和状态很少且模型已知时才应使用动态规划和线性规划,因为它非常昂贵。但是什么时候 DP 比 LP 好呢?
  • 当我没有问题的模型但我可以生成样本时使用蒙特卡洛方法。它没有偏差,但具有高方差。
  • 当 MC 方法需要太多样本以保证低方差时,应使用时间差异方法。但是什么时候应该使用 TD,什么时候应该使用 Q-Learning?
  • 策略梯度和遗传算法适用于连续 MDP。但是什么时候一个比另一个更好呢?

更准确地说,我认为程序员在选择学习方法时应该问自己以下问题:

  • 代理是在线学习还是离线学习?
  • 我们能否将探索和开发阶段分开?
  • 我们可以进行足够的探索吗?
  • MDP 的范围是有限的还是无限的?
  • 状态和动作是否连续?

但我不知道问题的这些细节如何影响学习方法的选择。 我希望一些程序员已经对 RL 方法有一定的经验,可以帮助我更好地理解他们的应用程序。

【问题讨论】:

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


    【解决方案1】:

    简单地说:

    代理是在线学习还是离线学习?帮助您决定是使用在线算法还是离线算法。 (例如在线:SARSA,离线:Q-learning)。网上的方法有更多的局限性,需要多加注意。

    我们可以将探索和开发阶段分开吗?这两个阶段通常处于平衡状态。例如,在 epsilon-greedy 动作选择中,您使用 (epsilon) 概率进行开发,使用 (1-epsilon) 概率进行探索。您可以将这两者分开并要求算法首先探索(例如选择随机动作)然后利用。但是当您离线学习并且可能使用系统动力学模型时,这种情况是可能的。而这通常意味着提前收集大量的样本数据。

    我们可以进行足够的探索吗?探索的程度可以根据问题的定义来决定。例如,如果您在内存中有问题的仿真模型,那么您可以随意探索。但真正的探索仅限于您拥有的资源数量。 (例如能量、时间……)

    状态和动作是否连续?考虑这个假设有助于选择正确的方法(算法)。有为 RL 开发的离散和连续算法。一些“连续”算法在内部将状态或动作空间离散化。

    【讨论】:

    • 对于离线案例的 Q-Learning,我必须不同意。 Q-Learning 可以很容易地在网上完成,据我所见,它与在线案例的结合非常好。
    • 我没有明确说明 SARSA 没有上线,因为我在评论中没有提到 SARSA。我只是说 Q-learning 可以在这两种情况下使用。
    • SARSA 是 on-policy 算法的一个示例。当您想在学习策略的同时控制系统时,这种算法是最佳选择。关于 Q-learning 我不得不提一下,当我们说 Q-learning 时,我们指的是 Watkins(如果我没记错的话是 1997 年)提出的算法的原始版本,尽管 Q-learning 的许多修改版本可以使用。
    • 在线与离线你的意思是在线与离线。
    • @mimoralea 在线和离线不同于在线和离线策略(我只是想纠正这个错误,以防有人偶然发现这篇文章):在线更新是在运行剧集时执行的,通常执行在每一步之后,一旦情节终止并且知道全部奖励(无引导),就会执行离线更新。另一方面,策略更新是指对用于采样的策略进行的更新。策略外更新使用某些技术(iimportance 采样、v-traces)来使用其他策略的推出来更新策略。
    猜你喜欢
    • 1970-01-01
    • 2012-09-06
    • 2013-12-06
    • 2018-06-09
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2019-04-16
    • 2017-03-19
    相关资源
    最近更新 更多