设计简单有效的强化学习探索算法,快手有新思路

简介: 在本篇论文中,来自德州农工大学和快手的研究者提出了一种简单有效的探索算法,旨在为随机环境的探索问题提供有效的解决方案。

微信图片_20211205094535.jpg



探索是强化学习的经典问题,一个好的探索策略可以极大地提高强化学习的效率,节省计算资源。

例如,在下图所示的迷宫中,智能体(红色三角形)需要从第一个房间出发,逐个打开通往下个房间的门,最终到达终点(绿色方块)。智能体所能得到的奖励是稀疏的,只有在到达终点的时候才能得到奖励。如果不能进行有效的探索,智能体就不知道什么动作是合适的,从而很容易困在前几个房间,陷入局部最优。

微信图片_20211205094537.jpg


研究现状和分析
行业中处理探索问题最常用的方法是内部奖励(Intrinsic Reward)[2][3]。这种方法的基本逻辑是为首次发现的状态设计更大的奖励,从而鼓励智能体去探索未知区域。比如对于上面的迷宫问题,我们可以为没有进过的房间设计更大的奖励,从而让智能体自发地去探索更多的房间。然而,已有的内部奖励方法在随机环境中效果会大打折扣。
例如,我们考虑在每个新的回合产生一个完全不一样的房间情形。下图展示了四个不同的回合,每个回合房间的结构都不一样,智能体遇到的每个房间几乎都是没见过的,内部奖励机制很难区分探索的好坏。因此,我们需要新的的算法去应对环境随机性问题。随机的环境能更好地建模很多现实中的问题,比如股票交易、推荐系统、机器人控制等。

微信图片_20211205094542.jpg


为了解决这个问题,该论文提出了回合排序算法(Rank the Episodes,简称 RAPID)。

回合排序算法

如下图所示,研究者提出了一种为每个回合的探索动作打分和排序的机制,以选出好的探索行为。

微信图片_20211205094545.jpg


对每个回合产生的数据,该算法从三个不同的维度为探索动作打分。从局部角度,算法通过计算覆盖率来打分。比如在上述迷宫中,该研究给访问更多房间的回合打更高的分,因为研究者希望算法能探索更多的房间。从全局角度,研究者希望每个回合尽量访问与之前不一样的状态。最后,算法考虑了外部的奖励大小。在这种迷宫环境中,能取得较好的外部奖励往往意味着探索较好。

为了更好地利用这些好的探索行为,该研究设计了一个简单的缓冲器来暂存分数最高的一批数据。然后,算法利用模仿学习去复现这些比较好的探索行为。例如,如果一个回合访问了很多的房间,算法会通过模仿学习去再现这种好的探索行为,从而间接鼓励智能体探索更多的房间。

回合排序算法可以有效地应对环境的随机性。首先,回合排序算法为整个回合打分,而不聚焦于某个具体的状态。这种整体的行为对随机性更加鲁棒。其次,缓冲器机制可以把一些好的探索行为存起来重复利用,因此一个好的回合可以被学习多次,这从另一方面提高了算法的效率。


回合排序算法在随机环境中的效果


为了验证回合排序算法的有效性,该研究进行了大量的实验。在第一组实验中,该研究考虑了多个来自于 MiniGrid [4] 的不同难度的迷宫:

微信图片_20211205094548.jpg


研究者将回合排序算法和 SOTA 探索算法进行了比较。结果如下(其中 RAPID 为该研究提出的回合排序算法):

微信图片_20211205094554.jpg


这些环境中的数字(SX-RY)代表迷宫中房间的大小和数量。它们越大意味着环境越难探索。实验结果表明,回合排序方法在困难环境中的性能显著优于已有方法。比如在 MultiRoom-N7-S8 上,回合排序算法的学习速度比已有方法快十倍以上。在 KeyCorridor-S4-R3 上,回合排序算法是唯一有效的方法。

在第二组实验中,该研究考虑了一个 3D 迷宫的情况,如下图所示。智能体看到的是一个第一人称视角的图片。类似的,迷宫的结构在每个回合会随机生成。智能体在这样的环境中需要学会怎么在原始的图片信息中探索。

微信图片_20211205094557.jpg


实验表明回合排序算法显著优于已有方法,说明算法在原始图片上依然适用:

微信图片_20211205094600.jpg


回合排序算法在非随机环境中的效果


在第三组实验中,研究者探究了算法是否可以用于机器人控制。如下图所示,智能体需要操作机器人完成特定的任务,比如前进,跳跃,保持平衡等。

微信图片_20211205094603.jpg


实验结果表明回合排序算法在这些非随机环境中依然有较好的效果:

微信图片_20211205094606.jpg


总结

该研究为强化学习探索问题提供了一个新的解决思路,不同于以往基于内部奖励的方法,回合排序算法将好的探索行为记录下来,然后通过模仿学习鼓励智能体探索。初步结果表明,该方法具有非常好的效果,特别是在具有随机性的环境中。


[1] Berner, Christopher, et al. "Dota 2 with large scale deep reinforcement learning." arXiv preprint arXiv:1912.06680 (2019).[2] Pathak, Deepak, et al. "Curiosity-driven exploration by self-supervised prediction." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops. 2017.[3] Burda, Yuri, et al. "Exploration by random network distillation." International Conference on Learning Representations. 2018.[4] Chevalier-Boisvert, Maxime, Lucas Willems, and Suman Pal. "Minimalistic gridworld environment for openai gym." GitHub repository (2018).

相关文章
|
1月前
|
机器学习/深度学习 算法 机器人
多代理强化学习综述:原理、算法与挑战
多代理强化学习是强化学习的一个子领域,专注于研究在共享环境中共存的多个学习代理的行为。每个代理都受其个体奖励驱动,采取行动以推进自身利益;在某些环境中,这些利益可能与其他代理的利益相冲突,从而产生复杂的群体动态。
190 5
|
3月前
|
机器学习/深度学习 算法 TensorFlow
深入探索强化学习与深度学习的融合:使用TensorFlow框架实现深度Q网络算法及高效调试技巧
【8月更文挑战第31天】强化学习是机器学习的重要分支,尤其在深度学习的推动下,能够解决更为复杂的问题。深度Q网络(DQN)结合了深度学习与强化学习的优势,通过神经网络逼近动作价值函数,在多种任务中表现出色。本文探讨了使用TensorFlow实现DQN算法的方法及其调试技巧。DQN通过神经网络学习不同状态下采取动作的预期回报Q(s,a),处理高维状态空间。
59 1
|
3月前
|
机器学习/深度学习 存储 算法
强化学习实战:基于 PyTorch 的环境搭建与算法实现
【8月更文第29天】强化学习是机器学习的一个重要分支,它让智能体通过与环境交互来学习策略,以最大化长期奖励。本文将介绍如何使用PyTorch实现两种经典的强化学习算法——Deep Q-Network (DQN) 和 Actor-Critic Algorithm with Asynchronous Advantage (A3C)。我们将从环境搭建开始,逐步实现算法的核心部分,并给出完整的代码示例。
268 1
|
3月前
|
测试技术 数据库
探索JSF单元测试秘籍!如何让您的应用更稳固、更高效?揭秘成功背后的测试之道!
【8月更文挑战第31天】在 JavaServer Faces(JSF)应用开发中,确保代码质量和可维护性至关重要。本文详细介绍了如何通过单元测试实现这一目标。首先,阐述了单元测试的重要性及其对应用稳定性的影响;其次,提出了提高 JSF 应用可测试性的设计建议,如避免直接访问外部资源和使用依赖注入;最后,通过一个具体的 `UserBean` 示例,展示了如何利用 JUnit 和 Mockito 框架编写有效的单元测试。通过这些方法,不仅能够确保代码质量,还能提高开发效率和降低维护成本。
54 0
|
4月前
|
机器学习/深度学习 存储 数据采集
强化学习系列:A3C算法解析
【7月更文挑战第13天】A3C算法作为一种高效且广泛应用的强化学习算法,通过结合Actor-Critic结构和异步训练的思想,实现了在复杂环境下的高效学习和优化策略的能力。其并行化的训练方式和优势函数的引入,使得A3C算法在解决大规模连续动作空间和高维状态空间的问题上表现优异。未来,随着技术的不断发展,A3C算法有望在更多领域发挥重要作用,推动强化学习技术的进一步发展。
|
5月前
|
机器学习/深度学习 分布式计算 算法
在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)
【6月更文挑战第28天】在机器学习项目中,选择算法涉及问题类型识别(如回归、分类、聚类、强化学习)、数据规模与特性(大数据可能适合分布式算法或深度学习)、性能需求(准确性、速度、可解释性)、资源限制(计算与内存)、领域知识应用以及实验验证(交叉验证、模型比较)。迭代过程包括数据探索、模型构建、评估和优化,结合业务需求进行决策。
59 0
|
6月前
|
机器学习/深度学习 算法 Python
使用Python实现强化学习算法
使用Python实现强化学习算法
82 1
使用Python实现强化学习算法
|
6月前
|
机器学习/深度学习 敏捷开发 算法
算法人生(1):从“强化学习”看如何“战胜拖延”
算法人生系列探讨如何将强化学习理念应用于个人成长。强化学习是一种机器学习方法,通过奖励和惩罚促使智能体优化行为策略。它包括识别环境、小步快跑、强正避负和持续调优四个步骤。将此应用于克服拖延,首先要识别拖延原因并分解目标,其次实施奖惩机制,如延迟满足和替换刺激物,最后持续调整策略以最大化效果。通过这种动态迭代过程,我们可以更好地理解和应对生活中的拖延问题。
110 8
|
6月前
|
机器学习/深度学习 算法
算法人生(2):从“强化学习”看如何“活在当下”
本文探讨了强化学习的原理及其在个人生活中的启示。强化学习强调智能体在动态环境中通过与环境交互学习最优策略,不断迭代优化。这种思想类似于“活在当下”的哲学,要求人们专注于当前状态和决策,不过分依赖历史经验或担忧未来。活在当下意味着全情投入每一刻,不被过去或未来牵绊。通过减少执着,提高觉察力和静心练习,我们可以更好地活在当下,同时兼顾历史经验和未来规划。文章建议实践静心、时间管理和接纳每个瞬间,以实现更低焦虑、更高生活质量的生活艺术。
|
6月前
|
机器学习/深度学习 存储 算法
数据结构与算法 动态规划(启发式搜索、遗传算法、强化学习待完善)
数据结构与算法 动态规划(启发式搜索、遗传算法、强化学习待完善)
100 1
下一篇
无影云桌面