news 2026/2/26 18:59:14

实践模仿学习:从行为克隆到多模态模仿学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实践模仿学习:从行为克隆到多模态模仿学习

原文:towardsdatascience.com/hands-on-imitation-learning-from-behavior-cloning-to-multi-modal-imitation-learning-11ec0d37f4a2?source=collection_archive---------10-----------------------#2024-09-12

对模仿学习中最突出的几种方法进行概述,并在网格环境中进行测试

https://medium.com/@mryasinusif?source=post_page---byline--11ec0d37f4a2--------------------------------https://towardsdatascience.com/?source=post_page---byline--11ec0d37f4a2-------------------------------- Yasin Yousif

·发表于 Towards Data Science ·14 分钟阅读·2024 年 9 月 12 日

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/120c495851c2f0539761925dddc91cbf.png

图片由 Possessed Photography 提供,来源于 Unsplash

强化学习是机器学习的一个分支,关注通过标量信号(奖励)的指导进行学习;与需要目标变量完整标签的监督学习不同。

可以通过一个直观的例子来解释强化学习,例子描述的是一所学校的两门课,每门课有两种类型的测试,且测试不断重复进行。第一班解答测试并得到了所有正确答案(监督学习:SL)。第二班解答测试并且每个问题只得到了分数(强化学习:RL)。在第一种情况下,学生们似乎更容易学习正确答案并记住它们。在第二班中,任务更困难,因为他们只能通过反复试验来学习。然而,他们的学习将更加稳健,因为他们不仅知道什么是对的,还知道所有错误的答案,从而避免它们。

为了在强化学习(RL)中高效学习,应该设计一个准确的奖励信号(评分),这被认为是一个困难的任务,尤其是在现实世界的应用中。例如,一个人类专家驾驶员知道如何开车,但无法为“正确驾驶”技能设置奖励,做饭或绘画也是如此。这就产生了对模仿学习方法(IL)的需求。IL 是强化学习的一个新分支,专注于从纯粹的专家轨迹中学习,而不需要知道奖励。IL 的主要应用领域是在机器人技术和自动驾驶领域。

接下来,我们将探索文献中最著名的 IL 方法,按提议时间从旧到新排序,如下图所示的时间线。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/052ad6e337c649a08caa6e76fb3ecd9a.png

IL 方法的时间线

数学公式将与符号的命名一同展示。然而,理论推导在这里保持到最小;如果需要进一步的深度,可以查阅引用部分列出的原始文献。重现所有实验的完整代码已提供在随附的github 仓库中。

所以,系好安全带!让我们通过模仿学习深入探索,从行为克隆(BC)到信息最大化生成对抗模仿学习(InfoGAIL)。

示例环境

本文使用的环境表示为一个 15x15 的网格。环境状态如下所示:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/417a0103d83622ac19add6a8c7479bf8.png

代理的目标是通过任何三个窗口,以最短的方式到达第一行,并使其位于相对于通过网格中心的垂直轴的初始位置的对称位置。目标位置不会在状态网格中显示。

因此,初始位置只有 15 种可能性,目标位置会基于此发生变化。

动作空间

动作空间A包含从 0 到 4 的离散数值,表示四个方向的移动和停止动作,如下所示:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/7a40b44e70067c461e30172c23fe1768.png

奖励函数

这里的真实奖励R(s,a) 是当前状态和动作的函数,其值等于朝目标移动的位移距离:

其中,𝑝1​是旧位置,p2​是新位置。代理总是从最后一行初始化,但每次位置都是随机的。

专家策略

所有方法(除 InfoGAIL 外)使用的专家策略旨在以最短的路径到达目标。这涉及三个步骤:

  1. 朝最近的窗口移动

  2. 直接朝目标移动

  3. 停止在目标位置

该行为由一个 GIF 演示:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1629324006841fb80098705a78561bd6.png

专家策略生成用于其他强化学习方法的演示轨迹。每条轨迹τ表示为一系列有序的状态-动作对。

专家演示集定义为 D={τ0​,⋯,τn​}

专家的每集回报平均为 16.33±6,共 30 集,每集长度为 32 步。

前向强化学习

首先,我们将使用真实奖励训练一个模型,设定一些基准并调优超参数,以便后续与 IL 方法一起使用。

本文中使用的前向强化学习算法的实现基于 Clean RL 脚本[12],该脚本提供了可读的强化学习方法实现。

介绍

我们将分别测试最先进的策略内方法——近端策略优化(PPO)[2]和著名的策略外方法——深度 Q 网络(DQN)[1]。

以下是每种方法的训练步骤总结以及它们的特点:

在策略内(PPO)

该方法使用当前训练中的策略,并在每次收集回合后更新其参数。PPO 包含两个主要部分:评论员和演员。演员表示策略,而评论员为每个状态提供价值估计,并具有自己的更新目标。

策略外(DQN)

DQN 通过收集回放缓冲区中的回合来离线训练其策略,采用ε-贪婪探索策略。这意味着 DQN 在每个状态下并不总是选择当前策略下的最佳动作,而是随机选择一个动作。这有助于探索不同的解决方案。可能还会使用一个目标网络,该网络以较低的频率更新策略版本,以使学习目标更加稳定。

结果与讨论

下图显示了两种方法的每集回报曲线。DQN 用黑色表示,而 PPO 用橙色线条表示。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3a1db66541085517545021eef57c3ea4.png

对于这个简单的例子:

训练这两种方法的参数大致相同。欲深入了解这些曲线是如何生成的,可以查看随附仓库中的ppo.pydqn.py脚本。

行为克隆(BC)

行为克隆(Behavior Cloning,BC),最早在[4]中提出,是一种直接的强化学习方法。它通过监督学习将每个状态映射到一个动作,基于专家演示集 D。目标定义为:

其中π_bc​是训练后的策略,π_E​是专家策略,l(π_bc​(s),π_E​(s))是响应同一状态时,专家策略和训练策略之间的损失函数。

BC 和监督学习的区别在于将问题定义为一个交互式环境,在该环境中,行为是对动态状态的响应(例如,一个机器人朝着目标移动)。相比之下,监督学习涉及将输入映射到输出,比如图像分类或温度预测。这个区别在[8]中有解释。

在此实现中,智能体的初始位置全集只有 15 种可能性。因此,只有 15 条轨迹可以学习,而这些轨迹可以被 BC 网络有效地记住。为了增加问题的难度,我们将训练数据集 D 的大小裁剪为一半(仅有 480 个状态-动作对中的 240 个),并将此操作应用于后续所有的 IL 方法。

结果

在训练模型后(如bc.py脚本所示),我们得到的平均回报是 11.49,标准差为 5.24。

这比之前的前向强化学习方法要小得多。以下 GIF 展示了训练好的 BC 模型的实际表现。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4d844fec525ada99e1b12814cdde3f86.png

从 GIF 中可以看出,几乎三分之二的轨迹已经学会了穿越墙壁。然而,模型在最后三分之一的轨迹上遇到了困难,因为它无法从之前的例子中推断出真实的策略,特别是由于它只从 15 条专家轨迹中的一半进行学习。

最大熵逆强化学习(MaxENT)

MaxEnt [3] 是一种与行为克隆(BC)并行的训练奖励模型的另一种方法(而不是迭代方式)。其主要思想是基于当前的奖励函数,最大化采取专家轨迹的概率。这可以表示为:

其中N是轨迹长度,Z是在给定策略下,所有可能轨迹回报之和的归一化常数。

从这里开始,该方法基于最大熵定理[3]推导出其主要目标,该定理指出:满足给定条件的最具代表性的策略是具有最大熵 H 的策略。因此,MaxEnt 需要一个额外的目标来最大化策略的熵。这导致了以下公式:

其导数为:

其中SVD是状态访问频率,可以通过动态规划算法在给定策略下计算得出。

在我们这里实现的最大熵(MaxEnt)中,我们跳过了训练一个新的奖励模型,因为动态规划算法在此过程中会变得缓慢且冗长。相反,我们选择通过重新训练一个行为克隆(BC)模型来测试最大化熵的主要思想,方法与之前的过程完全相同,只是将推断出的行动分布的负熵项添加到损失函数中。熵应该是负的,因为我们希望通过最小化损失来最大化它。

结果

在给动作分布添加了权重为 0.5 的负熵(选择正确的值很重要,否则可能导致更差的学习)后,我们看到与之前的 BC 模型相比,性能略有提升,现在的平均回合回报为 11.56(+0.07)。这种小幅提升可以通过环境的简单性质来解释,该环境包含有限数量的状态。如果状态空间变大,熵的作用预计会变得更加重要。

生成对抗模仿学习(GAIL)

GAIL 的原始工作[5]灵感来源于生成对抗网络(GANs)的概念,GANs 将对抗训练的理念应用于增强主模型的生成能力。同样,在 GAIL 中,这一概念被应用于使训练策略与专家策略之间的状态-动作分布相匹配。

这可以推导为 Kullback-Leibler 散度,如主文献[5]所示。文献最终推导出了两个模型(在 GAIL 中称为生成器和判别器模型)的主要目标,如下所示:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3d98990eb6f613a4842efbd3f5682a05.png

其中,Dt​ 是判别器,πθ​ 是生成器模型(即正在训练的策略),πE​ 是专家策略,H(πθ​) 是生成器模型的熵。

判别器充当二分类器,而生成器则是实际的策略模型,正在接受训练。

GAIL 的主要优势

GAIL 相对于以前方法的主要优势(也是其表现更好的原因)在于其交互式训练过程。训练得到的策略在判别器奖励信号的指导下学习并探索不同的状态。

结果

在训练了 1.6 百万步后,GAIL 模型收敛到了比 BC 和 MaxEnt 模型更高的水平。如果继续训练,甚至可以取得更好的结果。

具体来说,我们获得了 12.8 的平均回合奖励,这一点值得注意,因为只有 50%的示范在没有任何真实奖励的情况下提供。

此图显示了 GAIL 的训练曲线(y 轴为真实的回合奖励)。值得注意的是,由于 GAIL 的对抗性训练特性,来自 log(D(s,a))的奖励会比真实奖励更加混乱。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/64b2b61d8406584fafe7665aed713417.png

对抗性逆强化学习(AIRL)

GAIL 的一个剩余问题是,训练得到的奖励模型(判别器)并不真正代表真实的奖励。相反,判别器被训练为一个专家与生成器状态-动作对之间的二分类器,导致其值的平均为 0.5。这意味着判别器只能作为一个替代奖励。

为了解决这个问题,文献[6]通过以下公式重新构造了判别器:

其中,​(s,a) 应该收敛到实际的优势函数。在这个例子中,这个值表示代理与不可见目标的接近程度。通过添加另一个项以包含形状奖励,可以得到地面真实奖励;然而,在本次实验中,我们将限制使用上面的优势函数。

结果

在使用与 GAIL 相同参数训练 AIRL 模型后,我们得到以下训练曲线:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/fca3ec99819c63a12137e5791e9c6f12.png

注意,考虑到相同的训练步数(160 万步),由于训练判别器的复杂性增加,AIRL 收敛较慢。然而,现在我们已经得到了一个有意义的优势函数,尽管其表现只有 10.8 的每集奖励,但仍然足够好。

让我们将这个优势函数的值与响应专家演示的地面真实奖励进行比较。为了使这些值更具可比性,我们还对学习到的优势函数​ 的值进行了归一化。由此,我们得到了以下图表:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5a9cc6f81f11b38b39c4840e9be7e623.png

在这个图中,有 15 个脉冲对应代理的 15 个初始状态。我们可以看到,在图的后半部分,训练模型的误差较大,这是由于在训练中仅有限使用了专家演示的一半。

对于前半部分,我们观察到在代理静止在目标位置并获得零奖励时,状态较低,而在训练模型中评估时该值较高。后半部分则普遍偏向于较低的值。

大致来说,学习到的函数大致跟随地面真实奖励,并通过 AIRL 恢复了关于它的有用信息。

信息最大化生成对抗模仿学习(InfoGAIL)

尽管前述方法取得了一定进展,但在模仿学习(IL)中仍然存在一个重要问题:多模态学习。为了将 IL 应用于实际问题,需要从多个可能的专家策略中学习。例如,在开车或踢足球时,并没有一种“正确”的做事方式;专家在方法上有所不同,IL 模型应该能够一致地学习这些变化。

为了解决这个问题,开发了 InfoGAIL [7]。InfoGAIL 受到 InfoGAN [11] 的启发,InfoGAN 使用额外的风格向量来调节生成对抗网络(GAN)生成输出的风格,InfoGAIL 在 GAIL 目标的基础上增加了另一个标准:最大化状态-动作对与新的控制输入向量z之间的互信息。这个目标可以推导为:

Kullback-Leibler 散度,

其中,后验概率p(zs,a) 的估计通过一个新模型Q进行近似,Q以 (s,a) 为输入,输出z

InfoGAIL 的最终目标可以写为:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b5bc5c1f07a8eea226011e43329d8b49.png

结果是,策略有一个额外的输入,即z,如以下图所示:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/cdb73e4f39a5c4a376c9da575e4f02e8.png

在我们的实验中,我们生成了新的多模态专家演示,其中每个专家只能从一个间隙进入(墙上有三个间隙),与其目标无关。完整的演示集在没有标签的情况下使用,标签不会指明是哪个专家在行动。z变量是一个独热编码向量,表示专家类别,包含三个元素(例如,左门的表示为[1 0 0])。策略应该:

注意,由于对抗性训练,判别器、Q 模型和策略模型的训练图表是混乱的。

幸运的是,我们成功地清晰地学习到了两种模式。然而,第三种模式既没有被策略也没有被 Q 模型识别出来。以下三个 GIF 展示了 InfoGAIL 在给定不同z值时学到的专家模式:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c12ec76451dee278e191b253b631f0ae.png

z = [1,0,0]

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ab355cdb776ac470e7b1e8b5aa1552a3.png

z = [0,1,0]

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0a66821dfd5078e24edbf1a7557fef59.png

z = [0,0,1]

最后,策略能够在 800K 训练步数下收敛到大约 10 的回报。随着训练步数的增加,可以取得更好的结果,即使这个例子中使用的专家不是最优的。

最终概述与结论

在回顾我们的实验时,很明显所有的模仿学习方法在集回报标准方面表现良好。下表总结了它们的表现:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b240ddb57578ec3271d55c9076130b7e.png

InfoGAIL 的结果不可比,因为专家演示基于多模态专家

表格显示,GAIL 在这个问题上表现最好,而 AIRL 由于其新的奖励公式较慢,导致回报较低。InfoGAIL 也学得不错,但在识别所有三个专家模式时遇到了一些困难。

结论

模仿学习是一个具有挑战性且迷人的领域。我们探索的方法适用于网格仿真环境,但可能无法直接转化为现实应用。模仿学习的实际应用仍处于起步阶段,除了某些 BC 方法之外。将仿真与现实联系起来会由于两者的性质差异而引入新的误差。

模仿学习中的另一个开放挑战是多智能体模仿学习。像 MAIRL [9] 和 MAGAIL [10] 这样的研究已经在多智能体环境中进行过实验,但从多个专家轨迹学习的通用理论仍然是一个开放问题。

附加的GitHub 仓库提供了实现这些方法的基本思路,且可以方便地进行扩展。代码将在未来更新。如果您有兴趣贡献,请提交一个问题或拉取请求,包含您的修改。或者,欢迎留下评论,我们会跟进并提供更新。

注意:除非另有说明,所有图像均由作者生成

参考文献

[1] Mnih, V. (2013). 通过深度强化学习玩 Atari 游戏。arXiv 预印本 arXiv:1312.5602.

[2] Schulman, J., Wolski, F., Dhariwal, P., Radford, A., & Klimov, O. (2017). 近端策略优化算法。arXiv 预印本 arXiv:1707.06347.

[3] Ziebart, B. D., Maas, A. L., Bagnell, J. A., & Dey, A. K. (2008 年 7 月). 最大熵逆向强化学习。载于《AAAI》(Vol. 8, pp. 1433–1438).

[4] Bain, M., & Sammut, C. (1995 年 7 月). 行为克隆框架。载于《机器智能 15》(pp. 103–129).

[5] Ho, J., & Ermon, S. (2016). 生成对抗模仿学习。《神经信息处理系统进展》(Advances in neural information processing systems), 29.

[6] Fu, J., Luo, K., & Levine, S. (2017). 通过对抗逆向强化学习学习稳健奖励。arXiv 预印本 arXiv:1710.11248.

[7] Li, Y., Song, J., & Ermon, S. (2017). Infogail:从视觉示范中进行可解释的模仿学习。《神经信息处理系统进展》(Advances in neural information processing systems), 30.

[8] Osa, T., Pajarinen, J., Neumann, G., Bagnell, J. A., Abbeel, P., & Peters, J. (2018). 以算法视角看模仿学习。《机器人学基础与趋势》(Foundations and Trends® in Robotics), 7(1–2), 1–179.

[9] Yu, L., Song, J., & Ermon, S. (2019 年 5 月). 多智能体对抗逆向强化学习。载于《国际机器学习大会》(International Conference on Machine Learning)(pp. 7194–7201)。PMLR.

[10] Song, J., Ren, H., Sadigh, D., & Ermon, S. (2018). 多智能体生成对抗模仿学习。《神经信息处理系统进展》(Advances in neural information processing systems), 31.

[11] Chen, X., Duan, Y., Houthooft, R., Schulman, J., Sutskever, I., & Abbeel, P. (2016). Infogan:通过信息最大化生成对抗网络进行可解释的表示学习。《神经信息处理系统进展》(Advances in neural information processing systems), 29.

[12] Huang, S., Dossa, R. F. J., Ye, C., Braga, J., Chakraborty, D., Mehta, K., & AraÚjo, J. G. (2022). Cleanrl:高质量的单文件深度强化学习算法实现。《机器学习研究期刊》(Journal of Machine Learning Research), 23(274), 1–18.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/26 15:42:18

Python+Vue的校园自助洗衣服务管理系统 Pycharm django flask

收藏关注不迷路!!需要的小伙伴可以发链接或者截图给我 项目介绍 本系统共有管理员,用户2个角色,具体功能如下: 1.管理员角色的功能主要包括管理员登录,用户管理,洗衣机分类管理,洗衣机管理&…

作者头像 李华
网站建设 2026/2/21 1:14:46

LobeChat品牌命名建议生成器搭建

LobeChat品牌命名建议生成器搭建 在企业创新节奏不断加快的今天,一个响亮、独特且富有意义的品牌名称往往成为产品成功的第一步。然而,传统命名过程依赖团队头脑风暴,耗时长、创意易枯竭,且难以系统化迭代。与此同时,尽…

作者头像 李华
网站建设 2026/2/22 20:41:58

Flutter URL唤醒神器:url_launcher 6.3.2 全场景实战,从配置到进阶

【导语】在Flutter开发中,“唤醒外部资源”是高频需求——打开网页、拨打电话、发送邮件、启动地图导航……这些操作若从零实现,需适配多平台原生API,耗时且易出错。官方插件url_launcher 6.3.2完美解决此问题,它封装了全平台URL唤…

作者头像 李华
网站建设 2026/2/25 10:59:56

使用STM32H743的CMAKE工程添加到vscode

1、打开系统HSE时钟2、配置一下GPIO3、配置freertos系统时钟源,此处使用1ms时钟源配置freertos时钟。4、配置freertos;5、配置时钟树,使用的是外部晶振,25mhz;6、生产cmake工程;7、vscode配置cmake环境,直接…

作者头像 李华