NeurIPS 2021 | 新的任务范式来了!ProTo:Program-guided Tasks

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

新的任务范式:Program-guided Tasks

2bf2bc317a35f24a6a5328ca8b74ac82.png

推荐一下我们的工作: ProTo: Program-Guided Transformer for Program-Guided Tasks。点击链接可以看到arxiv论文。

https://arxiv.org/abs/2110.00804

我们的贡献有以下几个:

1. 提出了一个新的任务框架,Program-guided tasks,就是学习怎么执行程序来完成任务。

2. 我们提出了基于transformer的ProTo模型,可以同时建模程序的语义信息和结构信息。

3. 我们在视觉推理和策略学习两个广泛的领域内验证了我们提出的Proto模型的有效性。

下面按照QA的方式逐步介绍一下我们的论文。

什么是Program?

要理解什么是program-guided tasks,就必须先理解什么是program。wikipedia对program的解释是“为了达到某个目的,给计算机或其他机器使用的一系列指令“。这里与我们每天在写的程序做个比较。与我们程序员每天在用的程序相比,机器学习领域内程序也可以执行,也具有明确的可解释性。不过区别是,机器学习领域内研究的程序,不一定要借助给定的编译器(机器学习的理念就是万物都可学习),也不一定要做到图灵完备(只要为某些任务设计就行)。

Program有什么好处?为什么要研究program?

Program是图灵留给我们的一大利器,我们每天都在享受着程序带来的好处。在机器学习和人工智能中,程序有以下几个好处:

1、区别于黑盒模型,程序具有很好的可解释性

2、程序可以作为很好的人与机器交互的工具,比自然语言更干净、更结构化

3、程序具有很好的泛化性能,在一个领域内适用的程序很可能可以迁移或者拓宽到其他领域。

4、程序可以统一不同的模块,有机会组建成强大的跨界通用的智能体。

这些性质都是机器学习乃至人工智能领域很看重的,所以说这块的研究非常受重视。


什么是Program-guided Tasks?

这里就要讲到我们论文中提出的任务框架了,叫做program-guided tasks。这个任务的要求是给定一个程序+程序的输入(specification),要求得到预期的输出。换句话说,我们需要学习怎么去执行这个程序。注意区别于我们每天用的程序的写死的执行器(hard-coded),我们这个任务中的执行器是学习得到的。我们下面举两个具体的program-guided tasks的例子:

a385962aeb6ba36e8b361e01a1e85c7d.png

在左边的任务视觉推理中,我们的程序就是一个推理的流程,这张图中程序的含义就是“求女孩左边桌子上薯条是什么颜色“。这里程序的输入就是图片。任务的目标就是需要在这张图片下学习执行程序。

在右边的任务策略学习中,我们的程序就是一个执行策略的过程,这张图中程序的含义就是“在我的世界的游戏中,按照当前看到的条件去挖木头/建桥/挖矿“(这里的程序还包含分支语句if-else,这里就不详细描述了)。这里程序的输入就是当前观察到的地图。任务的目标就是按照程序去执行策略。

我们期望后续工作还能提出更多可以满足program-guided tasks框架的任务。

为什么要学习执行program?

可能很多小伙伴要问了,为什么需要学习怎么执行program呢,我们每天用的hard-coded的编译器不是很好吗?其实通过上面的例子可以看出,很多情况下非学习的程序是难以执行的(比如程序的输入是一个图片),并且非学习的程序是难以保证泛化能力的(比如面对数据集里没有出现的语句以及图片)。Neurips这种机器学习会议的专家非常看重机器学习能解决的任务。按照“万物皆可学习”的理念,学习执行程序是非常有意义的研究方向。

应该怎么解决program-guided tasks?

在论文里我们抛砖引玉,提出了基于transformer的ProTo模型(program-guided transformers)。proto的字典解释就是“第一个,原始的”,也就是说我们希望能有更多的模型提出,来解决program-guided tasks。

这里我们认识到,program同时具有语义和结构信息,所以一个很好的模型需要综合利用这两种信息

fdc273d22f80a63bc3211367271b6ac1.png

在上图左边,我们把程序的语义信息和结构信息分别进行编码,这里的语义信息就是用一个自然语言处理中的编码模块,结构信息就是表示程序的信息传递规则(比如执行完第一句跳转执行第三句,那么第一句跟第三句是连接的,我们的模型还可以并行执行不同的语句)。

上图的右边基本是基于transformer模型进行了简单修改,同时把语义信息、结构信息和程序输入送进transformer,并迭代更新结果矩阵。

为了适应分支结构和循环结构,我们还提出了指针更新的算法。这部分idea很简单,就是按照我们每天用的程序执行的方式去更新指针:遇到分支就根据条件判断进哪个分支,遇到循环就判断是否要进入循环以及是否完成。虽然idea简单,但是写起来比较麻烦,这里就不详细描述了,大家可以看论文中的算法块进行。

模型搭建好之后,怎么进行学习呢?我们提出了三种学习方式:全监督学习、部分监督学习、无监督学习。全监督学习比较简单,就是算一个预测和ground-truth之间的距离算loss。部分监督学习就是只有最后一步有真值,中间是没有真值的。无监督学习的情况适用于只知道程序是否执行正确,不知道正确的结果是什么。这里需要用到强化学习去完成。

实验结果如何?

由于我们是最先提出program-guided tasks的,我们对之前的方法进行了部分改编,适配到我们的任务进行比较。在两个领域(视觉推理和策略学习)中,都达到了SOTA的水平。

9319042a649a099b87eba7661c090cf1.png
视觉推理任务结果
93f7aa3d68085401b1b6be811a1307e0.png
策略学习任务结果

审稿人评价如何?

在rebuttal之前,所有审稿人对我们的评价都给予了高度评价。下面展示四个审稿人的评价:

审稿人1: 应用很有趣,对Neurips社区非常有意思。

9d01a41fea8683205161cd0df6a5652c.png

审稿人2: 这个方向是有意义的逐渐引起关注的方向。

f880805a6c665f2de9e7cbb7f0a73dd2.png

审稿人3: 学习执行程序是非常重要的课题。

c6f72e76313b1bdc5c91036ab0dfabfb.png

审稿人4: 结合两个领域CV+RL做程序执行的学习非常新颖。

bb3302305548fa1fb90b8cb1f44e6aa1.png
ICCV和CVPR 2021论文和代码下载

后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集

后台回复:ICCV2021,即可下载ICCV 2021论文和代码开源的论文合集

后台回复:Transformer综述,即可下载最新的两篇Transformer综述PDF
CVer-Transformer交流群成立
扫码添加CVer助手,可申请加入CVer-Transformer 微信交流群,方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。
一定要备注:研究方向+地点+学校/公司+昵称(如Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加小助手微信,进交流群
▲点击上方卡片,关注CVer公众号
整理不易,请点赞和在看
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值