本文主要是介绍李飞飞发表研究新成果:视觉推理的推断和执行程序(HR),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原文
论文导读:目前进行视觉推理的方法都是通过黑箱结构将输入直接映射到输出,而不是对潜在的推理过程进行明确建模。这样一来,黑箱模型学习到的是利用数据内的偏置而不是学习进行视觉推理的过程。受到模块化网络的启发,本文提出了一个视觉推理模型,由一个程序产生器和一个执行引擎构成,程序产生器用来构造进行推演的推理过程的明确表示,执行引擎能够执行生成的程序来产生答案。程序产生器和执行引擎都是通过神经网络实现的,并且用后置算法和增强算法结合进行训练。作者使用CLEVR基准来评测视觉推理,实验证明该模型显著优于强基准,并且各种设置下泛化能力更强。
问题导入:在很多应用中,计算机视觉系统需要通过对视觉世界的推理来回答复杂的问题。为了处理新的物体之间的相互作用,或者物体属性的组合,视觉推理需要是组合型的:即使一个模型没有“人在摸自行车”的先验知识,它也应该能通过把它对“人”,“自行车”和“摸”的意思结合起来理解这个短语。这样的组合推理是人类智慧的一个标志,它能让人们用有限的基本技能解决大量的问题。
组合推理是实际应用中遇到的需要理解复杂视觉场景不可或缺的一部分,例如机器导航,自动驾驶,以及监控。目前的模型都无法完成这样的推理。
主要算法
作者提出了一个用于视觉提问回答的可学习的组合模型。该模型将图像和关于图像的视觉问题作为输入。模型从固定的可能答案集中选择出对应问题的一条回答。在其内部,模型预测出一个程序来表示需要回答该问题的推理步骤。然后,该模型在图像上执行预测的程序,产生一个答案分布。
系统框图:程序产生器是一个序列到序列模型,将问题作为一序列单词输入,然后输出一个函数序列作为程序,其中,序列可视为为程序抽象语法树的前缀遍历。执行引擎在图像上执行程序,通过组合一个模块化的神经网络来镜像预测程序的结构。
程序
作者通过一个预先设置的函数集F来定义语法。由于作者感兴趣的地方在于视觉问题回答,他们将“场景”常量包括在词典中,代表图像的视觉特征。我们用语义树来表示有效的程序,每个节点都包含一个函数,在其中每个节点的子代和函数的参数数量一样多。
程序产生器
程序产生器从以词序列来表示的自然语言问题中预测程序。作者使用前缀遍历来序列化语义树,它本来是一个非连续离散结构,将其转换为函数序列。然后便可以使用标准LSTM序列到序列模型来实现程序产生器。
执行引擎
给定一个预测程序和输入图像,执行引擎在图像上执行程序,来预测答案。执行引擎通过模块化的神经网络来实现:用生成的程序来组合针对该问题的神经网络,网络通过一系列模块组成。对于每个函数集中的函数f,执行引擎都含有一个神经网络模块mf。给定程序z,执行引擎按程序定义的顺序将每个函数f映射到其对应的模型mf,来产生一个神经网络m(z):“子模块”的输出作为相应“父模块”的输入。
实验内容
强监督及半监督学习
CLEVR数据集上基准模型,人工和我们的模型的三个变体的问题回答准确率对比。我们模型的强监督版本使用了所有的700000真实值程序进行训练,而半监督版本分别使用了9000和18000真实值程序进行训练。人工表现通过CLEVR的一个5500的子集进行测量。结果显示使用强监督,我们的模型在CLEVR数据集上可以达到近乎完美的准确率。(甚至比亚马逊的Mechanical Turk的人工还要准确)。
预测程序(左)和答案(右)的准确率与真实值程序数量的关系图。蓝色和绿色分别给出了微调之前和之后的准确率。点线表示强监督模型的准确率。
模型学到了什么?
CLEVR-CoGenT数据集是用来研究VQA模型进行组合泛化的能力。该数据集包含两个情况下的数据:Condition A中,所有的立方体都是灰色,蓝色,棕色或黄色的,所有的圆柱体都是红色,绿色,紫色或青色的。Condition B中,立方体和圆柱体交换了颜色模式。
根据最终特征图,对预测的答案分数总和的梯度范数可视化结果。从左到右,每个问题都为程序添加了一个模块,新的模块是问题中的下划线部分。可视化结果说明了模型在对哪个目标进行问题回答的推理过程。图像来自验证集。
结果显示,我们的模型仅用10000个问题和1000张图片就可以学习到新属性的组合,并且优于同样训练的基准线。我们认为这是由于模型的组合特性使其能从很少的训练数据中快速学习属性的新语义,例如“红色”。
对新的属性组合的泛化能力
CLEVR-CoGenT数据集上的问题回答准确率。上:我们在Condition A数据上训练模型,然后分别在Condition A和Condition B上对模型进行测试。然后我们使用3000张图片和30000个问题,在Condition B上对模型进行微调,然后再次对两个Condition分别进行测试。在Condition A上训练时,该模型使用了18000个程序,但是在Condition B上进行微调时没有使用任何程序。下:我们研究了使用不同数量数据在Condition B上进行微调的影响。我们展示了整体的准确率以及对颜色提问和对形状提问的准确率。
对新问题类型的泛化能力
分别在短的和长的CLEVR问题上的回答准确率。左列:仅在短问题上训练的模型。模型使用了25000个真实值短程序进行训练。右列:在短问题和长问题上进行的训练。模型在短问题上进行训练,然后在整个数据集上进行微调。微调时没有用任何实值程序。
模型在短问题上训练时,程序和答案预测不正确的长问题示例,但是在模型在长问题上微调之后,程序和答案都能正确预测。
对人提出问题的泛化能力
CLEVR-Humans数据集的问题示例,以及模型预测的程序和答案。CLEVR数据库中没有出现的问题答案进行了下划线。一些预测的程序能和问题的语义进行准确匹配(绿色),一些程序和问题语义紧密匹配(黄色),而一些程序和问题似乎没有关系(红色)。
四个模型只在CLEVR数据集(左)训练,以及在CLEVR-Humans数据集的微调(右),在CLEVR-Humans数据测试集的问题回答准确率。
结论
本文通过一个长线工作,将符号表示整合入(神经)机器学习模型。我们的结果显示,清晰的程序表示可以使用来回答关于图像的新问题的组合程序变得更简单。作者提出的整体程序表示,可学习程序产生器和模块化统一设计让模型比神经模块网络更具灵活性,并且更容易扩展到新的问题和领域。
这篇关于李飞飞发表研究新成果:视觉推理的推断和执行程序(HR)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!