关于强化学习的事后经验回放,我是这样理解的

点击上方关注,All in AI中国

近年来,强化学习取得了一些惊人的成功,比如,与人类职业选手在经典即时战略电脑游戏《星际争霸2》对战中,取得压倒性胜利,在围棋“人机大战”中成功击败人类顶尖围棋高手。这成就令人印象深刻。就像AlphaZero(最新的Go播放代理)那样,它从稀疏的二进制奖励中学习,它要么赢了,要么就输了。在没有中间奖励的情况下学习极其困难,因为agent可能永远不会获得真正的胜利,因此没有关于如何改善其性能的反馈。显然,像Go和星际争霸2这样的游戏(至少在比赛中的表现方式)具有一些独特的品质,可以用这些二元奖励来学习:它们是对称的零和游戏。我现在不打算进一步讨论这个问题,但我可能会在未来的文章中使用AlphaZero背后的算法。

问题是,大多数问题都不是对称的零和游戏,我们通常没有反馈也没有学习。举个例子,我们可以看一个名为Mountain-Car的经典RL问题。在这个问题上,一辆汽车正试图到达山顶挂旗帜的地方,但由于它没有足够的加速度直接向山上行驶,它必须来回摆动以获得速度并最终达到目标。

关于强化学习的事后经验回放,我是这样理解的

只要汽车没有到达旗帜的位置,每一步都会获得-1的奖励,直到完成固定的步数之后终止。经常使用的一种实用方法是使用领域知识来增加奖励,即所谓的奖励工程或奖励塑造。在我们的山地车示例中,由于我们知道汽车必须收集速度来登山,所以合理的方法是将汽车的速度加到奖励上,鼓励它加快速度。如果我们仔细地设计奖励,agent就会加快速度,最终偶然发现旗帜,并避免一些本来会得到的负面奖励。

这种方法的问题在于它并不总是容易做到的。在某些情况下,我们可能不知道如何塑造奖励以协助学习;换句话说,我们必须知道如何解决问题才能正确塑造奖励。这种知识并不总是可用,特别是对于困难问题。另一个危险是,一旦我们设计了奖励,我们就不再直接针对我们真正感兴趣的指标进行优化,而是优化一个agent,这将使学习过程更容易。这可能导致相对于真实目标的性能折衷,有时甚至会导致意外和不需要的行为,这可能需要经常微调工程奖励以使其正确。

多目标RL

许多著名的RL成就的另一个不同方面是,这些游戏关注的是一个非常具体的目标,例如“在突围中获得尽可能多的得分”。在这些问题中,agent会观察状态,选择一种行动并获得奖励。在这种情况下,我们的policy 可以表达为:

关于强化学习的事后经验回放,我是这样理解的

其中'a'是候选动作,'s'是当前状态。

但是,许多现实问题并非如此,我们必须执行一项全局任务。在许多情况下,我们希望我们的agent能够实现许多不同的目标,例如“获取红球”,还可以“获取绿色立方体”。我并不是说agent需要以某种方式立即执行这些目标,而是我们希望它能够根据请求执行任何这些任务。在这种情况下,我们可以把我们的policy表述为 :

关于强化学习的事后经验回放,我是这样理解的

其中'g'是期望的目标。在本文中,我们将把目标视为我们希望我们的agent达到的状态。这是一个多目标学习问题。如果我们将多目标问题与稀疏二元奖励的额外难度结合起来,我们就会陷入一些真正的困难。

在他们的论文“Hindsight Experience Replay”中,OpenAI的研究人员给出了一个这样一个问题的简单例子。假设我们有一个由二进制数(0-1)向量组成的状态,我们希望训练一个agent来达到任意给定的二进制目标向量。可能的操作是每次切换一个位,对于没有达到目标的每个时间步,奖励-1。显然,如果我们将状态和目标向量的大小设置得足够大,我们就没有希望使用传统方法解决这个问题。随机交换位的机会,无意中被期望的目标向量是不可能的,甚至使用专门的探索方法我们都很有可能会失败,因为每个目标向量对这些方法是完全不同的一个问题。状态目标空间太大了。作者证明,使用DQN,最大可解矢量大小为13,之后成功率急剧下降到零。

关于强化学习的事后经验回放,我是这样理解的

事后经验重演 - 从失败中学习

Off-Policy学习

但人类如何处理这些问题呢?有时,当我们未能完成某项任务时,我们会认识到我们所做的事情可能在另一个环境或其他任务中有用。

关于强化学习的事后经验回放,我是这样理解的

为了转换检查过去行为并从中推断有用信息的能力,即使我们最终失败了,我们将转向一种学习范式,即Off-Policy学习。

在RL中,我们尝试学习一种策略,该策略将在给定初始状态分布的情况下最大化预期的累积奖励。我们通过反复试验与环境互动来学习policy,并使用流程中收集的数据来改进我们的policy。但是一些RL算法可以从另一个策略收集的数据中学习policy。此其他policy记录其与环境的交互,我们的学习算法可以使用它来推断可能更好的策略。从现在开始,我将把我们正在努力学习的policy简单地称为policy,并将另一个policy称为探索policy。探索policy的目的是探索足够的状态 - 行动空间,以便我们的学习算法可以从中推断出应该在不同的状态下采取什么行动。离线policy学习算法的典型示例是DQN(Deep-Q-Network)和DDPG(Deep Deterministic Policy Gradient),这两种算法可以在给定一个探查策略收集的数据的情况下,学习状态 - 动作对的值。

与此相反,On-Policy学习算法必须仅依赖于所学习的相同policy收集的数据,这意味着它们不能使用由另一个policy收集的历史数据,包括其自身的旧版本(在SGD更新到神经网络之前)例)。policy上学习算法的典型示例是各种Policy-Gradient方法,例如REINFORCE和A3C(Asynchronous Advantage Actor-Critic)。

事后经验重演

在著名的DQN算法中,通过对用于神经网络更新的每批训练实例进行去关联,利用以往经验的缓冲来稳定训练。这个缓冲区记录过去的状态,在这些状态下采取的操作,收到的奖励以及观察到的下一个状态。如果我们希望将其扩展到我们的多目标设置,我们必须保存除状态之外的目标,并了解状态目标 - 动作三元组的价值。

正如我们所看到的,体验重放缓冲区中的数据可以来自探索策略,这提出了一个有趣的可能性;如果我们可以通过想象如果环境不同会发生什么来增加虚拟数据怎么办?这正是Hindsight Experience Replay(HER)实际上所做的事情。

在HER中,作者提出了以下policy:假设我们的agent执行了一个试图从初始状态S到达目标状态G的情节,但未能这样做并且最终在这段时间结束时达到了一些状态S'。我们将轨迹缓存到我们的重放缓冲区中:

关于强化学习的事后经验回放,我是这样理解的

其中r与下标k是在剧集的步骤k接收的奖励,而下标k是在剧集的步骤k采取的动作。 HER中的想法是想象我们的目标实际上一直是S',而在这个替代现实中,我们的agent已经成功地达到了目标,并获得了积极的回报。因此,除了如前所述缓存真实轨迹之外,我们还缓存以下轨迹:

关于强化学习的事后经验回放,我是这样理解的

这种轨迹是想象的轨迹,是人类从失败的尝试中学习有用的东西的能力所激发的。还应该注意的是,在想象的轨迹中,在事件的最后一步收到的奖励现在是通过达到想象的目标而获得的积极奖励。

通过将想象的轨迹引入我们的重播缓冲区,我们确保无论我们的policy多么糟糕,它都会有一些积极的回报可供学习。在这个阶段,我们可能会问自己有什么用于学习实现我们不感兴趣的目标?显然,在训练开始时,那些想象的目标只会是我们随机初始化policy所能达到的,这些都没有实际用处。然而,通过神经网络进行函数逼近的神奇之处将确保我们的policy也可以达到与之前相似的状态;这是泛化属性,是成功深度学习的标志。首先,agent将能够在初始状态周围的相对较小的区域内到达状态,但逐渐扩展状态空间的可到达区域,直到最终它学会达到我们实际感兴趣的那些目标状态。

这个过程与深度学习中的另一种常见做法有很多相似之处;课程学习。在课程学习中,我们希望我们的神经网络能够学到一些困难,但是如果我们让它在真正的任务上训练它很可能会失败。我们能做的就是让它开始对问题的较小实例进行训练,这样更容易,并逐渐增加实例的难度,直到我们的模型学会在我们要解决的任务上表现良好。课程学习在实践中通常很有效,但要求设计师手动设计课程,并生成更简单的任务实例。这并不总是容易做到的,因为有时我们可能无法生成更简单的问题版本,并且成功地设计课程可能既困难又耗时。

与此相反,HER给了我们一个非常相似的结果,而不需要我们调整问题或设计课程。我们可以将HER视为一种隐含的课程学习过程,我们总是为我们的经纪人提供它确实能够解决的问题,并逐渐增加这些问题的范围。

作者在几个机器人操作任务中测试了HER,其中agent必须从初始状态实现不同的目标,例如拾取物体或将它们滑动到某个目标位置。在这些任务中,如果agent及时完成任务,则它会收到奖励,如果没有,则不会获得奖励。作者使用DDPG作为基础算法测试HER,并且表明HER成功学习完成这些任务,其他算法无法学习。

关于强化学习的事后经验回放,我是这样理解的

作者还证明,即使在我们真正关心特定目标的任务中,HER也能提高性能,只要我们能够为训练目的提供其他目标。

关于强化学习的事后经验回放,我是这样理解的

这是解决许多RL应用中的困难和重要问题的非常优雅和简单的方法。

查看论文:https://arxiv.org/pdf/1707.01495.pdf

关于强化学习的事后经验回放,我是这样理解的

相关推荐