【模仿学习】:离线和在线模仿

news2024/12/25 9:32:18

一、说明

         模仿学习(Imitation Learning )是机器学习的一种,代理通过观察和模仿专家的行为来学习。在这种方法中,为代理提供了一组所需行为的演示或示例,并通过尝试复制专家的行为来学习输入观察和输出操作之间的映射。

        模仿学习通常用于难以定义代理优化目标函数的场景,例如玩游戏或驾驶汽车等复杂任务。通过从专家演示中学习,代理可以实现高水平的性能,而不需要复杂或手工设计的奖励函数。

        模仿学习的主要挑战之一是当代理暴露于新环境或一组不同的输入时处理分布变化。这可能会导致学习的行为变得脆弱或导致意外的失败。领域适应和逆强化学习等技术可以用来解决这个问题。

二、什么是模仿学习?

        正如同样本身所暗示的那样,包括人类在内的几乎所有物种都通过模仿和即兴创作来学习。一句话就是进化。同样,我们可以让机器模仿我们并向人类专家学习。自动驾驶就是一个很好的例子:我们可以让代理从数百万个驾驶员演示中学习,并模仿专家驾驶员。

        这种从演示中学习也称为模仿学习 (IL),是强化学习和一般人工智能的一个新兴领域。IL在机器人中的应用无处不在,机器人可以通过分析人类主管执行的策略演示来学习策略。

        专家缺席与在场: 模仿学习采取 2 个方向,条件是专家在培训期间是否缺席或专家是否在场以纠正代理的行为。让我们谈谈专家缺席时的第一种情况。

三、培训期间专家缺席

        专家的缺席基本上意味着代理只能访问专家演示,仅此而已。在这些“专家缺席”任务中,代理尝试使用由专家演示的固定训练集(状态-操作对),以便学习策略并实现与专家尽可能相似的操作。这些“专家缺席”任务也可以称为离线模仿学习任务。

        这个问题可以按分类框定为监督学习。专家演示包含许多训练轨迹,每个轨迹都包含一系列观察和专家执行的一系列动作。这些训练轨迹是固定的,不受代理策略的影响,这种“专家缺席”任务也可以称为离线模仿学习任务。

        这个学习问题可以表述为监督学习问题,其中可以通过解决一个简单的监督学习问题来获得策略:我们可以简单地训练一个监督学习模型,该模型直接将状态映射到动作上,通过他/她的演示来模仿专家。我们称这种方法为“行为克隆”。

        现在我们需要一个替代损失函数来量化所证明的行为和学习策略之间的差异。我们使用最大预期对数似然函数来制定损失。

L2 误差 ~ 最大化对数似然

        如果我们要解决分类问题,我们选择交叉熵,如果解决回归问题,我们选择 L2 损失。很容易看出,最小化 l2 损失函数等效于最大化高斯分布下的预期对数似然。

四、挑战

        到目前为止,一切看起来都很好,但行为克隆的一个重要缺点是泛化。专家只收集代理可以体验的无限可能状态的子集。一个简单的例子是,专业的汽车驾驶员不会通过偏离航线来收集不安全和危险的状态,但代理可能会遇到这样的危险状态,它可能没有学习纠正措施,因为没有数据。这是因为“协变量偏移”是一个已知的挑战,其中训练期间遇到的状态与测试期间遇到的状态不同,从而降低了鲁棒性和泛化性。

        解决这种“协方差偏移”问题的一种方法是收集更多风险状态的演示,这可能非常昂贵。培训期间的专家出席可以帮助我们解决这个问题,并弥合所展示的策略和代理策略之间的差距。

五、专家展示:在线学习

        在本节中,我们将介绍最著名的在线模仿学习算法,称为数据聚合方法:DAGGER。 这种方法在缩小训练期间遇到的状态与测试期间遇到的状态之间的差距方面非常有效,即“协变量移位”。

        如果专家在学习过程中评估学习者政策怎么办?专家提供了正确的行动,以采取来自学习者自身行为的例子。这正是DAgger试图实现的目标。DAgger的主要优点是专家教学习者如何从过去的错误中恢复过来。

        这些步骤很简单,类似于行为克隆,只是我们根据代理到目前为止学到的知识收集了更多的轨迹。

        1. 通过对专家演示 D 的行为克隆来初始化政策,从而产生政策
        π1 2.代理使用 π1 并与环境交互以生成包含轨迹
        1 的新数据集 D3。D = D U D1:我们将新生成的数据集 D1 添加到专家演示 D.
        1 中。新的演示 D 用于训练策略 π2.....

        为了利用专家的存在,专家和学习者的组合用于查询环境和收集数据集。因此,DAGGER从学习策略诱导的状态分布下的专家演示中学习策略。如果我们设置 β=0,在这种情况下,这意味着期间的所有轨迹都是从学习代理生成的。

六、算法:

DAgger缓解了“协方差偏移”的问题(由学习器策略诱导的状态分布与初始演示数据中的状态分布不同)。这种方法显著减小了获得令人满意的性能所需的训练数据集的大小。

七、结论

        DAgger在机器人控制方面取得了非凡的成功,并已应用于控制无人机。由于学习者会遇到专家没有演示如何行动的各种状态,因此在这些应用程序中,诸如 DAGGER 之类的在线学习方法是必不可少的。

        在本系列的下一篇博客中,我们将了解DAgger算法的缺点,重要的是我们将强调DAgger算法的安全方面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/817357.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【单机多卡】torch改造代码为DDP单机多卡分布式并行

torch分布式数据并行DDPtorch.nn.parallel.DistributedDataParallel代码修改记录。(要求pytorch_version>1.0) 目录 1.🍄🍄要修改的地方概览 2.✏️✏️初始化 3.✏️✏️设置当前进程GPU 4.✏️✏️设置sampler 5.✏️✏…

HTML笔记(1)

介绍 浏览器中内置了HTML的解析引擎,通过解析标记语言来展现网页;HTML标签都是预定义好的;Java工程师:后台代码的编写,和数据库打交道,把数据给网页前端的工程师;网页前端工程师:写H…

拯救者Y9000K无线Wi-Fi有时不稳定?该如何解决?

由于不同品牌路由器的性能差异,无法完美兼容最新的无线网卡技术,在连接网络时(特别是网络负载较大的情况下),可能会出现Wi-Fi信号断开、无法网络无法访问、延迟突然变大的情况;可尝试下面方法进行调整。 1…

go 如何知道一个对象是分配在栈上还是堆上?

如何判断变量是分配在栈(stack)上还是堆(heap)上? Go和C不同,Go局部变量会进行逃逸分析。如果变量离开作用域后没有被引用,则优先分配到栈上,否则分配到堆上。判断语句:…

Stable Doodle:Stability AI推出的一款零门槛AI绘画神器

Stable Doodle是由Stability AI推出的一款零门槛AI绘画神器,可以将简单的草图转化为精美的图像。它可以将随手的塗鴉草稿转化为高畫質的完成圖,让用户能够以更快的速度将想法转化为精美的艺术作品。Stable Doodle利用最新的Stable Diffusion模型&#xf…

智能车域控制器设计

摘要: 本文主要针对ADCU从硬件设计到软件设计的开发流程进行详细阐述,主要包含了需求场景、关键硬件电路、电路可靠性、AUTOSAR架构、CAN通信简介、CAN通信软件设计等。最后基于以上硬件技术和软件技术开发出一款产品级智能驾驶域控制器。 // 智能驾驶域控制器研究现状 //…

iOS开发-实现自定义Tabbar及tabbar按钮动画效果

iOS开发-实现自定义Tabbar及tabbar按钮动画效果 之前整理了一个继承UITabbarController的Tabbar效果 查看 https://blog.csdn.net/gloryFlow/article/details/132012628 这里是继承与UIViewController的INSysTabbarViewController实现及点击tabbar按钮动画效果。 一、INSysT…

学习记录——TransNormerLLM

Scaling TransNormer to 175 Billion Parametes 线性注意力的Transformer大模型 2023 Transformer 存在局限。首要的一点,它们有着对于序列长度的二次时间复杂度,这会限制它们的可扩展性并拖累训练和推理阶段的计算资源和时间效率。 TransNormerLLM 是首…

中小企业如何低成本实施MES管理系统

中小企业在市场竞争中需要有高效的管理体系来支持其运营和发展。中小企业MES管理系统是一种先进的管理系统,可以提升工厂智能化水平,提高生产效率,是中小企业必须采取的有效管理工具。然而,由于资金和技术的限制,中小企…

Java API指南:掌握常用工具类与字符串操作

文章目录 1. API简介2. Java API的使用2.1 创建和使用Java API工具类2.2 使用String类进行字符串操作 结语 导语: Java作为一门功能强大的编程语言,其成功之处不仅在于语法结构的简洁明了,更因为其丰富的API(Application Programm…

面向对象中的多态性

一、权限修饰符 public, 缺省, protected,private 二、this和super关键字 this:表示当前对象 super:表示父类声明的成员 原则:遵循就近原则和追根溯源原则。 三、Object类 java.lang.Object类是所有java类的超类,即所有的J…

微信小程序测试要点

一、什么是小程序? 可以将小程序理解为轻便的APP,不用安装就可以使用的应用。用户通过扫一扫或者搜索的方式,就可以打开应用。 小程序最主要的特点是内嵌于微信之中,而使用小程序的目的是为了能够方便用户不在受下载多个APP的烦…

更好搭建负载测试环境的六个技巧

如果你如我昨天谈到的客户一样,花费了24到48个小时用于每个负载测试环境的搭建,那你的测试及构建部署能力绝对是受限的。 搭建一个仿真测试环境对于做好负载测试非常重要,同时它也是一个非常具有挑战性的任务,需要考虑技术解决、…

2023 7-31

题目1 寻找不同二叉树两节点的公共祖先 递归解法 仔细看这个解法更加容易理解: l、r 非空时,说明 p、q 分居 root 的两侧,root 就是 LCAl、r 任一为空,说明 LCA 位于另一子树或其祖先中代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* …

展锐USB充电图标更新流程

介绍 power_supply 目录下online节点是用于判断是否插入battery、ac(外部电源) 和USB 的节点,目录在sys/class/power_supply/battery(ac、usb)/online,主要用于在StatusBar 上显示充电的闪电图标。 SystemUI层介绍 流程介绍 在SystemUI 中控制充电图…

【ChatGPT辅助学Rust | 基础系列 | 基础语法】变量,数据类型,运算符,控制流

文章目录 简介:一,变量1,变量的定义2,变量的可变性3,变量的隐藏 二、数据类型1,标量类型2,复合类型 三,运算符1,算术运算符2,比较运算符3,逻辑运算…

Redis系列二:Clion+MAC+Redis环境搭建

1. ClionMACRedis-3.0-annotated环境搭建 参考: https://github.com/huangz1990/redis-3.0-annotated https://gitee.com/dumpcao/redis-3.0-annotated-cmake-in-clion https://tool.4xseo.com/a/12910.html 1.1 下载并导入Clion git clone https://gitee.com/dum…

基于SSM+JSP+LayUI的校园任务帮管理系统

校园帮项目 校园即时服务平台 用户角色 管理员 功能 登录、公告管理(发布公告、停用公告)、任务管理(下架任务、删除任务)、用户管理(用户充值、限制用户)、修改密码 用户角色 用户 功能 注册、登录…

Allied Telesis 证实 AR4050S-5G 路由器已成功通过 Splashtop On-Prem 快速处理现场数据

日本东京 —— Allied Telesis Inc. 和 NTT Comware Corporation 很高兴地宣布,Allied Telesis AR4050S-5G 路由器经证实已与 Splashtop On-Prem 解决方案成功集成,可安全快速地处理现场数据。根据测试结果,使用该方案,可以在实地…

dolphinscheduler switch+传参无坑版

dolphinscheduler 的前后传参有较多的坑,即便是3.0.5版本仍然有一些bug 下面是目前能无坑在3.0.5版本上使用的操作 前置任务 在界面上设置变量和参数名称 跟官方网站不一样,注意最后一行一定使用echo ${setValue(key$query)}的方式,注意引…