雷锋网 AI 科技评论按:近期,Unity 发布了版本 0.4 的机器学习智能体工具包(ML-Agent toolkit v0.4),其中最为突出的新功能是通过额外的基于好奇心的内在激励进行智能体的训练。由于这个新功能在解释时有很多方面需要解开,作者 Arthur Juliani 独立编写了一篇文章进行描述。雷锋网 AI 科技评论把这篇文章编译如下。
在原理上,如果奖励出现的几率不高或稀疏的分布情况下,现在是有更有效的方式让智能体进行环境感知的。这些智能体可以通过使用一种基于对结果好奇的程度进行奖励的方式对这样的环境进行探索。在这篇文章中,作者讲述了这种方式的工作原理并且展现了如何通过使用这种方式解决一个实际的任务,同时与原始版本的强化学习方法进行对比,表现出了这种新方法的优越性。
当涉及强化学习时,主要的学习信息以奖励的形式出现:即每次决定做出时,向智能体提供一个标量值。这种奖励通常是由环境自身产生的,并且由环境的创造者进行指定。奖励的范围为(-1.0,+1.0),+1.0的含义为接近目标,而 -1.0 的含义为智能体的这条命死掉了。可以认为这种奖励是外部的,因其从智能体外产生。如果有外部奖励的话,那么一定有内部奖励。与外部奖励不同的是,内部奖励不是由环境提供,而是智能体自己基于一些标准产生的。当然了,不是所有的内部激励都是这样的。内部奖励最终还是希望可以服务于一些目标的,比如改变智能体的行为,并在将来获取更好的外部激励,或者智能体可以接触更多的外部环境。在人类和其他哺乳动物中,追求这些内在奖励常常被称为内在动机,并与我们的情感紧密联系在一起。
强化学习领域的研究者们已经投入了大量的精力来开发良好的系统来为智能体提供内在的奖励,这给他们提供了与我们在自然智能体中找到的动机相似的动机。一种流行的方法是赋予智能体一种好奇心,并根据它周围的世界感到惊讶来奖励它。如果你想一个小婴儿是如何了解这个世界的,它不是在追求任何特定的目标,而是在为新的体验而玩耍和探索 —— 这样你就可以说孩子是有好奇心的。好奇驱动的探索背后的想法是把这种动机灌输给我们的智能体。如果智能体得到奖励,达到令它自己惊喜的状态,那么它将学习到新的探索环境的策略,以找到越来越多的令自己惊喜的状态。通过这种方式,智能体也希望能发现外在的奖励,比如在迷宫中遥远的目标位置,或者稀疏的资源。
作者选择了去年 Deepak Pathak 和他的同事们发布的一份最新论文中的一个具体的方法。它被称为好奇驱动探索自我监督预测,如果你对全部细节的感兴趣话,你可以打开原文链接。在文中,作者公式化了好奇的想法,以一种聪明和可归纳的方式。这种方式建议训练两个独立的神经网络:正向模型和反向模型。反向模型被训练来接受由智能体接收的当前和下一次观测信息,使用单个编码器对它们进行编码,并使用该结果来预测在两次观测的发生之间采取的行动。然后对正向模型进行训练,以获得编码的当前的观测结果和行为,并预测编码的下一观察值。预测和实际编码之间的差异然后被用作内在奖励,并馈送给智能体。较大的差异意味着更大的惊喜,而这又意味着更大的内在回报。
通过同时使用这两个模型,智能体获得的奖励不仅捕获了令智能体觉得惊喜的东西,而且具体地捕获了智能体通过自己的动作而获得了控制的东西。在超级玛丽的游戏中,他们的方法可以使一个没有任何外在奖励的智能体取得进步。下面是他们方法设计的示意图。
为了检验好奇心,目前没有一个普通的环境能做到。通过版本 0.3 的机器学习智能体工具包发布的大多数示例环境包含相对密集的奖励,并且不会从好奇或其他探索增强方法中获益。为了把新发现的好奇心放在测试中,作者创造了一个新的稀有奖励环境,叫做金字塔环境。在它里面,只有一个奖励,随机探索很少会让智能体遇到它。在这种环境中,智能体采用类似于以前的一些环境中熟悉的蓝色立方体的形式。代理可以向前或向后移动,然后向左或向右移动,并且可以通过立方体前面的一系列光线投射来访问周围世界的视图。
智能体被放入一个包含九个房间的封闭空间中。一个房间包含一个随机放置的开关,其他房间中包含随机放置的不可移动的石头金字塔。当智能体与开关相互作用时,开关从红色变成绿色。随着这种颜色的变化,环境会在某一个房间中的随机位置生成一个新的砖块可以移动的金字塔。在金字塔的顶端有一块金色的砖。当智能体接触到这砖块的时候,它就会收到 +2 外部奖励。这里的有难度的地方是走到新的房间、翻转开关、把塔撞倒的过程里都是没有中间奖励的。智能体必须学会在没有中间帮助的情况下执行这个序列。
当智能体使用原始版本的近端策略优化(Proximal Policy Optimization, PPO, Unity 环境中默认的强化学习算法)进行训练时,其表现很差,即便在进行 200,000 个步骤的运动之后,结果通常甚至没有比随机产生的结果(平均奖励为-1)更好。(下图)
相反的,通过 PPO 和好奇心驱动的内部奖励共同进行训练的智能体,在多次实验中都可以在 200,000 步内甚至一半时间内解决问题。(下图)
作者还研究了仅用内在奖励信号训练的智能体,尽管他们不学习解决任务,他们学习了一种更为有趣的定性策略,使他们能够在多个房间之间移动;相比之下,在外在奖励作为唯一策略的情况下,智能体仅能在一个房间里转小圈。(下图)
如果要使用好奇心策略来帮助在环境中训练智能体的话,使能训练是很简单的。首先,获得最新的机器学习工具包,然后将下面的代码加入到超参数文档中: use_curiosity: true。然后,向之前一样的进行训练。如果使用了 TensorBoard,结果中可以看到许多新的度量被跟踪了。这个过程包含了前向和反向模型损失,以及每个步骤累积的内在奖励。
给予智能体好奇心并不是在所有场景下都适用。特别是如果环境已经包含了一个密集的奖励函数,例如爬虫(Crawler)和沃克(Walker)环境,在大多数动作之后接收到一个非零的奖励,由此可能看不到太多的改进。如果环境只包含稀疏奖励,那么添加内在奖励有可能将这些任务从使用强化学习的不可解改善到容易解决。这尤其适用于当它对简单的奖励(如赢/输或完成/失败)等任务时。
—
如果你使用好奇心功能,Unity 团队也希望可以听到你的使用反馈。直接发邮件至 ml-agents@unity3d.com或通过Github的问题专栏进行留言~祝训练顺利!
via blogs.unity3d.com,雷锋网 AI 科技评论编译