当前位置: 首页 > 编程日记 > 正文

如何通过结构化智能体完成物理构造任务?| 技术头条

640?wx_fmt=jpeg


作者 | Victor Bapst, Alvaro Sanchez-Gonzalez,Carl Doersch, Kimberly L. Stachenfel

译者 | Linstancy

编辑 | 一一

出品 | AI 科技大本营(ID:rgznai100)


摘要


物理构造 (physical construction) 是根据物理动力学原理构造带有一些功能的物体的能力,这是人类智能的基础。在这篇论文中,受积木游戏的启发,研究者们介绍了一系列具有挑战性的物理构造任务,如匹配目标配置、堆叠和附加积木以便连接物体,并创建类似于 shelters 的目标结构等。


随后,作者进一步介绍如何通过深度强化学习的智能体来完成这一系列的物理构造任务。实验结果表明,相比于那些使用较少结构化表征的策略,使用结构化表征 (如物体和场景图)和结构化策略(如目标中心动作) 的智能体能够实现更好的任务表现。当更大的场景目标(通常超过训练时所使用的场景)需要使用推理时 ,结构化智能体有着更佳的泛化表现。


此外,在大部分的物理构造问题上,相比那些无模型的智能体 (model-free agent),通过蒙特卡洛搜索法 (Monte-Carlo Tree Search) 进行模型规划的智能体 (model-based agent) 也能取得更显著的表现。总的来说,对于智能体而言,将结构化表征和推理与强大的学习相结合,是使其拥有丰富直观的物理,场景理解和规划能力的关键。


简介


现实世界中有许多建筑物,如堡垒、金字塔、空间工作站等。而对于这些物理构造物,AI 智能体能实现吗,这也是本研究所要解决的问题,探索学习并解决这一系列任务的方法。


所谓的物理构造问题,涉及物理动力学知识,在约束条件下构造多个元素以实现具有丰富功能的目标。下图 1 是模拟一套物理施工任务的流程,这与小孩玩积木类似,需要通过堆叠和叠加多个积木来连接成具有各种功能性的物体。例如,一个任务需要在障碍物周围堆叠块来连接目标物,而另一项任务需要建造 shelters 来掩护的目标块,并保持其处于干燥的环境。这些任务都体现了现实世界在建造施工时会碰到的挑战:即强调问题的解决及其功能性,而不是简单地复制某种给定的配置以用于新环境。这反映了人类在施工建造过程中的预见性和目的性,与人类智能密切关联。


640?wx_fmt=png

图1 物理构造任务。 在所有任务中,深蓝色物体是常规块,浅蓝色块是粘性块,红色物体是不能触摸的障碍物,灰色圆圈表示粘在一起的块之间的点。黑线表示地板,用于将下面的块分离出来。(a) 剪影任务 (Silhouette):智能体通过堆叠块来匹配目标块 (描绘为浅绿色块)。(b) 连接任务:智能体通过堆叠块来将蓝色的小目标连接到地板。(c) 遮挡任务:智能体堆叠块从上方遮挡障碍物。(d) 遮挡困难任务:与遮挡任务类似,但关键是此时智能体只能移动有限的块。


尽管传统的 AI 技术已经广泛用于物理推理研究,但使用深度学习方法解决物理构造任务的研究仍需要进一步探索。本研究旨在探索现代人工智能体在物理构造中的应用,主要的贡献有:(1) 使用包括向量、序列、图像和图形等结构化表征和场景。(2) 使用绝对或目标中心坐标表示连续和离散的动作。(3) 通过深度 Q-learning 的无模型学习 (model-free learning) 或 actor-critic learning。(4) 通过蒙特卡洛搜索 (MTCS) 进行规划。


物理构造任务


这里使用的模拟任务环境是连续的,并且由程序 Unity 和 Box2D 物理引擎生成的 2D 世界。每个时期都包含不可移动的障碍物、目标物体和地面,以及可移动、可拾取放置的矩形块。


每个时期的终止条件包括:

(1) 当一个可移动块接触到障碍物,或当它被放置在一个障碍物重叠位置时。

(2) 当超过最大行动次数时。

(3) 达到任务所特定的终止条件时,每个任务的特定条件如下述。


  • 剪影任务 (Silhouette task):如图1a,智能体必须移动矩形块并将其与场景中的目标块重叠,同时避免接触到障碍物。当所有目标块具有超过90%的重叠时认为该任务完成终止。

  • 连接任务:如图1b,智能体必须将矩形块堆叠到三个不同的位置,以便与地面连接,同时避免与障碍物在同层内排列。当所有的目标块都连接地面时,认为该任务完成。

  • 遮挡任务:如图1c,智能体必须构建一个 shelter 来遮挡所有的障碍物,且不接触它们。当超过99%的障碍物表面被遮挡时,则认为该任务完成。

  • 遮挡困难任务:如图1d,与遮挡任务相似,这里智能体同样需要构建一个 shelter 来遮挡障碍物。但此时需要更长远的规划,因为可移动的块是有限的,且障碍物的分布更密集,成本更高,粘性较低。因此,该任务结合了以上三种任务的限制,其终止条件与遮挡任务一致。


智能体


对于智能体的状态和表现,该如何进行监测和衡量?在这里提供了几种方法和指标来观察智能体的建造状态、内部表示、学习算法和动作策略等,如下图2所示:


640?wx_fmt=png

图2 所有智能体结构


观察形式 (observation format)


每个建造任务都将提供目标的状态或图像,这两种形式对于智能体而言是很重要的,最终希望的是智能体能够使用一些符号输入,如计算机辅助表征或是传感器的原始输入等。


编码器 (encoder)


使用两种类型的内部表征:固定长度向量和定向带有属性的图表来计算输入策略。其中 CNN encoder 将输入图像嵌入为矢量表征,RNN encoder 将通过 RNN 结构顺序处理目标状态的输入矢量。Graph encoder 将一组状态输入向量转换到图标中,并为每个输入目标创建节点。Per-object CNN encoder 将从图像中生成基于图形的表征。


策略 (policy)







MLP policy:基于给定的矢量表征,得到一个多层感知器 MLP 的策略,输出动作或 Q 值,这取决于所使用的算法。


GN policy:通过 graph encoder 或 per-object CNN 得到一个基于 graph 的表征,随后使用三个图网络 GN 的堆栈网络,其中第二个网络处理一些数字的循环步骤,这与“编码-处理-解码”的思路是一致的。


动作 (actions)


这里提出了一种以目标为中心 (object-centric) 的绝对动作形式,称为 relative actions。具体来说,在场景中,智能体能够在推理过程中考虑目标间的关系来采取行动,这与人类的思考、行动方式类似。这里主要包括如下四种动作形式:连续绝对动作 (continuous absolute actions)、连续关系动作 (continuous relative actions)、离散绝对动作 (discrete absolute actions)、离散关系动作 (discrete relative actions) 等,每种类型动作具体解释请参见论文中的说明。


学习算法 (learning algorithms)


使用内部矢量和图形表征,通过显示策略和 Q 函数来生成动作。


RS0 学习算法用于连续动作输出,使用 actor-critic 学习算法并结合随机值梯度算法。


DQN 学习算法用于离散动作输出,使用 Q-learning 实现带边缘 Q 值的DQN 网络。


MCTS:由于 DQN 智能体的输出是离散动作,因此很容易将其余标准的规划技术相结合,如 MTCS。在这里,使用 DQN 的智能体作为 MTCS 的先验,并通过不同的 MTCS 设置来改变学习经验分布。


实验分析


通过一系列的实验来评估所提出的智能体在物理构造任务上的有效性。为了训练的有效性,在实验过程采用课程学习方法来增加每个训练时期的任务的复杂性。例如,在 Silhouette task 中的课程学习能够增加目标的数量,在连接任务中它能够增加目标的高度,在遮挡任务中它能够提高障碍物的高度等。


关系与绝对动作的对比实验分析 (relative versus absolute actions)


实验结果表明,使用关系动作的智能体表现明显优于那些使用绝对动作的智能体。在任务中,几乎每个关系智能体都会收敛在一个相似或更高中位数的表现水平,如图3a所示。当平均到所有课程水平时,关系智能体的最好表现比绝对智能体多出1.7倍的奖励值,而如果只考虑最先进水平,这个差异值将高达2.4倍,如图3b 所示。


图3c 列出绝对智能体的一些最佳表现例子,而图3d 展示的是关系智能体的一些最佳例子。


640?wx_fmt=png

图3 绝对动作和关系动作智能体的对比。 (a) 平均到所有课程水平时两种智能体所获奖励对比。(b) 对于每个课程的最困难水平,两种智能体获得的奖励对比。(c-d) 对于每个课程的最困难水平,两种智能体在四种任务上表现的量化对比。


有无模型的对比实验分析 (model-based versus model-free)


通常复杂的建造任务需要更长期的规划策略,而不是简单的反应性策略。因此,如上文所述,这里采用基于 MCTS 策略来增强 GN-DQN 智能体,并在多种不同环境下评估其表现。实验结果如图4所示,可见规划策略对于智能体的表现是有效的,特别是对于连接和连接困难任务。


640?wx_fmt=png      

图4 (a-d) 对于最困难的课程水平,GN-DQN-MCTS 智能体在不同训练和测试成本下的表现对比。其中,灰色虚线代表搜索成本计划为1000的智能体表现。(e-h) 从每个任务中随机选择的任务时期,GN-DQN-MCTS 的代表性结构。其中,silhouette 和连接任务的训练成本和测试成本分别采用0和50,遮挡任务的训练和测试成本分别使用0和5,而遮挡困难任务中的智能体所使用的训练和测试成本都为10。


泛化表现分析 (generalization)


如图5所示,当应用到更大的场景时,GN-DQN 智能体,特别是 GN-DQN-MCTS 智能体具有非常不错的泛化表现,如在 Silhouette task 中,GN-DQN-* 智能体在训练阶段能够覆盖到近乎两倍的目标数量,而其他智能体的表现有明显的下降。在多个目标连接任务中,虽然 GN-DQN-* 智能体的表现略有下降,但其他的智能体表现近乎为0。此外,图6中 d-f 定性地显示 GN-DQN-MCTS 智能体的泛化表现,总的来说,通过结构化的表征,智能体在更复杂的场景下也能够有鲁棒性的表现。

640?wx_fmt=png       

图5 多种智能体的零目标泛化表现。(a) Silhouette task,目标数量在8到16之间变化。(b) 连接任务,改变目标的位置到同一水平或不同水平。(c) 连接任务,障碍物层的数量由3到4。(d-f) GN-DQN-MCTS 智能体泛化到新场景的表现。


迭代关系推理分析 (iterative relational reasoning)


通过场景图的信息传播,Recurrent GN结构支持迭代关系推理。通过改变 GN-DQN 智能体迭代的步数来衡量其关系推理能力。实验结果表明,增加信息传播的步数,能够提高智能体的推理能力。


结论与讨论


本研究主要内容通过 RL 智能体来解决一系列物理构造任务问题。实验结果表明,通过结构化图形表征,在基于模型的规划和 MCTS 策略下,智能体能够实现强大的性能和鲁棒的泛化能力。这项工作是第一个关于智能体在复杂环境中学习物理构造任务的研究,结合丰富的结构和强大的学习能力是解决问题的关键。在未来的研究中,可以寻求目标检测和分割的整合方法来学习计算机视觉目标之间的推理关系,可以继续探索模型学习和更复杂的搜索策略等。


原文链接:https://arxiv.org/pdf/1904.03177.pdf


(本文为 AI大本营编译文章,转载请微信联系 1092722531


实习生招募

640?wx_fmt=jpeg


推荐阅读:

  • Python超越Java,Rust持续称王!Stack Overflow 2019开发者报告

  • 科大讯飞刷新纪录,机器阅读理解如何超越人类平均水平?技术头条

  • 12个案例教你用Python玩转数据可视化

  • 抵制996!Python之父发声背后,这个社区一呼百应!

  • 刘强东割袍弃兄弟,马爸爸醉心 996

  • 996.ICU 下被过度消费的程序员,还配享受生活吗?

  • 漫画:图的 “最短路径” 问题 | 技术头条

  • 4000万假币流入波场, 发生在凌晨的BTT假币攻击事件始末及细节披露

  • 刺激!我31岁敲代码10年,明天退休!

640?wx_fmt=png


点击“阅读原文”,查看更多精彩文章。

相关文章:

【GStreamer】gstreamer工具详解之:gst-launch-1.0

一、gst-launch-1.0 1、简介: gst-launch-1.0构建和运行基本GStreamer管道的工具 官网:https://gstreamer.freedesktop.org/documentation/tools/gst-inspect.html?gi-language=c 命令格式: gst-launch-1.0 [OPTIONS] PIPELINE-DESCRIPTION2、OPTIONS参数选项: –help…

WPF查找子控件和父控件方法

原文:WPF查找子控件和父控件方法public List<T> GetChildObjects<T>(DependencyObject obj, string name) where T : FrameworkElement{DependencyObject child null;List<T> childList new List<T>();for (int i 0; i < VisualTreeHelper.GetCh…

ARP(Accounting Resource Planning)项目感想

ARP是Accounting Resource Planning&#xff08;会计资源计划&#xff09;的简称。转载于:https://blog.51cto.com/lya041/690079

【GStreamer】gstreamer工具详解之:gst-inspect-1.0

二、gst-inspect-1.0 1、简介 gst-inspect-1.0 打印插件列表、指定插件或指定元素的信息 2、命令格式: gst-inspect-1.0 [OPTION...] [PLUGIN|ELEMENT]3、OPTION参数选项: --help --gst-info-mask=FLAGS 设置GStreamer信息标志?? -a, --print-all 打印所有插件和元…

心酸科研路:3年前CVPR论文,仅被引用11次,如今成就黑洞照片!

众所周知&#xff0c;黑洞照片已经朋友圈刷屏了&#xff0c;可你也许不知道这张照片背后的一个故事。 译者 | Linstancy、Major 编辑 | 琥珀 出品 | AI科技大本营&#xff08;公众号ID&#xff1a;rgznai100&#xff09; 近日&#xff0c;由天文学家公布的人类首张黑洞照片引…

Redis和Memcache的区别是什么

Redis和Memcache都是内存数据库&#xff0c;但它们之间还是有区别的&#xff0c;跟着ytkah看看Redis和Memcache的区别吧 Redis 支持多种数据结构&#xff0c;如string,list,dict,set,zset,hyperloglog 单线程请求&#xff0c;所有命令串行执行&#xff0c;并发情况下不需要考虑…

windows加载符号小计

1、如果当前并没有设置符号路径和符号服务器&#xff0c;且当前正在调试&#xff0c; 则需要设置符号服务器和路径后&#xff0c;重新调试生效 2、如果当前有些pdb没有加载&#xff0c;因为这些pdb放在其他路径了&#xff0c;未加载&#xff0c;当把pdb拷到程序启动目录时&…

谈谈Python那些不为人知的冷知识(一)

本文转载自公众号Python编程时光&#xff08;ID:Python-Time&#xff09;小明在日常Code中遇到一些好玩&#xff0c;冷门的事情&#xff0c;通常都会记录下来。现在已经积攒了一些了&#xff0c;最近打算整理一波&#xff0c;发出来给大家补补。一篇只分享五个&#xff0c;有时…

【GStreamer】gstreamer工具详解之:ges-launch-1.0

三、ges-launch-1.0 1、简介 ges-launch-1.0:视频裁剪编辑,GStreamer编辑服务原型工具 详见官网:https://gstreamer.freedesktop.org/documentation/tools/ges-launch.html?gi-language=c#mandatory-arguments1 ges-launch-1.0 创建多媒体时间线并将其回放,或将其呈现为…

三大软件公司争霸赛区块链

导语&#xff1a;\\区块链技术发展到今天&#xff0c;区块链的扩容、吞吐量、运维弹性&#xff08;Operational Resilience&#xff09;、安全性、企业支持和Token管理等挑战&#xff0c;已成为区块链进一步发展绕不开的技术问题。\\突破这些现实技术挑战&#xff0c;不仅构能建…

【系列索引】结合项目实例 回顾传统设计模式 打造属于自己的模式类系列

网上设计模式的文章很多 虫子就不再和大家扯一些没有营养的理论 开此系列博文 一方面因为自己颓废了大半年 趁此机会回顾一下 另一方面希望能够帮助新人走出设计模式的误区, 如何做好设计模式 1.在发掘新的模式之前&#xff0c;必须熟悉理解现有的模式。许多模式看起来像是全新…

【GStreamer】gstreamer工具详解之:gst-discoverer-1.0

四、gst-discoverer-1.0 1、简介 gst-discoverer-1.0用于显示文件元数据和流信息,它可以运行在单独的文件或整个目录(递归到子目录中)。 2、命令格式: gst-discoverer-1.0 FILE|DIRECTORY|URI [FILE2|DIRECTORY2|URI2]选项详解 帮助选项 -h, --help Show help options…

一道简约而不简单的算法题——数据流的中位数 | 附动画解析

作者 | 程序员小吴转载自微信公众号&#xff08;ID:CXYxiaowu&#xff09;题目来源于 LeetCode 上第 295 号问题&#xff1a;数据流的中位数。难度级别为 Hard&#xff0c;目前通过率为 33.5% 。题目描述中位数是有序列表中间的数。如果列表长度是偶数&#xff0c;中位数则是中…

HBase安装与命令行操作

2019独角兽企业重金招聘Python工程师标准>>> HBase简介 基于Hadoop的NoSql数据库&#xff0c;适合存储半结构化、非结构化的稀疏数据&#xff0c;提供增删改查能力。因为其底层是hdfs&#xff0c;所以具有存储海量数据&#xff0c;高容错&#xff0c;高可用等特点&a…

zip/unzip 命令

zip 命令 功能说明&#xff1a;压缩文件。语 法&#xff1a;zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]补充说明&#xf…

《App架构师实践指南》:移动开发的进阶指南

文章主要内容&#xff1a;什么是 app 架构师这本书主要内容读完感受什么是 App 架构师成为“架构师”是许多程序员的梦想&#xff0c;当然也包括我&#xff0c;在工作的几年里&#xff0c;我见过很多架构师&#xff0c;他们在设计某个大型系统时具备很大的话语权&#xff0c;可…

FoveaBox:目标检测新纪元,无Anchor时代来临 | 技术头条

作者 | CV君转载自我爱计算机视觉&#xff08;ID:aicvml&#xff09;目标检测的任务是“分类”并从图像中“定位”出物体&#xff0c;但长久以来&#xff0c;该领域的工作大多是这样&#xff1a;生成可能包含目标的区域&#xff0c;然后在该区域提取特征并分类。显然&#xff0…

【Ubuntu】安装中文输入法、终端不支持中文的解决方法

一、中文输入法安装 1、安装汉语语言包 sudo apt install fcitx sudo apt install language-pack-zh-hans2、安装google拼音输入法 sudo apt install fcitx-googlepinyin安装完毕后&#xff0c;重启或者退出登陆 3、安装sun-pinyin输入法 sudo apt install fcitx-sunpinyi…

CCNA 第一章 网际互联

第一章 网际互联 路由器知识点&#xff1a; 1、默认时&#xff0c;路由器不转发任何广播包和组播包。 2、路由器使用逻辑地址&#xff0c;逻辑地址在网络层的包头中&#xff0c;用来决定将包转发到的下一跳路由器。 3、路由器可以使用管理员创建的访问表来控制被允许进入或流出…

【Cmake】执行cmake命令时报错:No XSLT processor found

一、问题描述 在ubuntu中&#xff0c;在生成Doc(文档)中&#xff0c;执行cmake命令时报错&#xff1a;No XSLT processor found 二、原因查找 google该错误信息&#xff0c;原因是确实ubuntu中没有安装 xsltproc 三、解决方法 安装 xsltproc sudo apt install xsltproc四…

一张“黑洞”需要拍两年?有了它或许就不会让大家等那么久了

只闻其名&#xff0c;不见其形&#xff0c;从小听到大的”黑洞“&#xff0c;终于让我们在有生之年见到了它的真容&#xff0c;只能说幽暗的宇宙美丽也调皮&#xff0c;长久以来人类关于黑洞的探索&#xff0c;在这一刻终于得到影像印证。相信很多人心中都有一个疑惑&#xff0…

如何在一场面试中展现你对Python的coding能力?| 技术头条

点击上方↑↑↑蓝字关注我们~作者 | wLsq 来源 | Python数据科学&#xff08;ID:PyDataScience&#xff09;如果你已经通过了招聘人员的电话面试&#xff0c;那么下面正是该展现你代码能力的时候了。无论是练习&#xff0c;作业&#xff0c;还是现场白板面试&#xff0c;这都是…

Django web : CSRF verification failed. Request aborted.

错误标题&#xff1a;CSRF verification failed. Request aborted. 错误描述&#xff1a; HelpReason given for failure:CSRF cookie not set.In general, this can occur when there is a genuine Cross Site Request Forgery, or when Djangos CSRF mechanism has not been …

分享一个PC端六格密码输入框写法

如图。我们一般做商城类的项目不免会用到支付密码输入框&#xff0c;我研究了下并决定发上来&#xff0c;也当作是自己成长路上的一点小小的记录。本次介绍的是基于vue的项目 html&#xff1a; <template><div classam_payPwd :id"ids_${id}"><input …

【数据库】sqlite中PRAGMA命令说明

关于sqlite中PRAGMA的说明网上已经有很多了&#xff0c;这里不再复制粘贴&#xff0c;只把内容最全的网址连接记录一下&#xff1a; 官网说明&#xff08;英文&#xff09;&#xff1a;https://sqlite.org/pragma.html 中文翻译&#xff0c;参见博客&#xff1a;https://www.i…

思科交换机各类型中字母的意思?

24TC-L中各字母的意思分别指? 24TT-L中第二个T的意思? 2960和2960G的区别&#xff1f;基中G是什麽意思? F0/1和G0/1区别&#xff1f; 24代表是24个网络接口 第一个T表示TX&#xff0c;也就是所谓RJ-45的类型&#xff08;指这个24个接口都是RJ-45&#xff0c;若是P的话&#…

医生还未失业,IBM Watson已跌入深渊 | 极客头条

点击上方↑↑↑蓝字关注我们~作者 | Eliza Strickland译者 | Major编辑 | 琥珀出品 | AI 科技大本营&#xff08;公众号ID&#xff1a;rgznai100&#xff09;导语&#xff1a;2011 年&#xff0c;Jeopardy! 挑战赛的成功&#xff0c;让外界看到 IBM 的人工智能给医学带来的革命…

【Qt】Qt容器总结

目录 一、容器类1、顺序容器2、关联容器二、Qt容器特点三、迭代器1、Jave样式的迭代器(效率略低)2、SLT样式的迭代器注意: 由于Qt的容器是写时复制的,因此非const访问器从本质上讲更加昂贵, 因为它们必须首先检查是否需要复制基础数据(并在必要时进行复制)。 因此,在Qt…

Java5线程并发库之保障变量的原子性操作

为什么80%的码农都做不了架构师&#xff1f;>>> java.util.concurrent.atomic 首先我们看java.util.concurrent.atomic包&#xff0c;它主要是提供一些为各种数据类型变量提供原子性操作的类。 AtomicInteger 比如我们来看AtomicInteger类&#xff0c;大家在写程序…

EIGRP OSFP 利用NULL0接口防止路由环路 Loopback Null0接口揭秘

在EIGRP中&#xff0c;只要发生总结就会在路由表中自动产生一条指向NULL0的路由条目&#xff0c;这条路由的直接意思是&#xff1a;匹配这条路由的数据包会被路由器丢掉。它的目的是为了避免在某些情况下产生路由环路。 以第三四学期的中文书P86中的图4-15为例做个说明&#xf…