标题:抽象学习:神经状态机
论文资源:NeurIPS2019文献全文 - 学术范 (xueshufan.com)
代码:该项目为网友复现,可参考--> https://github.com/ceyzaguirre4/NSM
一、问题提出
针对神经网络和符号网络各自的优缺点,引入有限自动机的思想,提出一种神经状态机,将各自的互补优势整合到视觉推理任务中。
首先基于给定的图像,使用一个场景图抽取模型,得到对应的概率场景图。其中,对象被转化为节点,并使用属性表示表示特征;关系被转化为边,来捕获对象之间的空间关系和语义关系。此外,对输入的问题进行语义理解,并转化为一系列软指令。在推理过程中,概率场景图被视为一个有限状态机,利用指令集合在其上执行顺序推理,迭代遍历它的节点,以回答一个给定的问题或得出一个新的推理。
不同于一些旨在将多模态数据进行紧密交互的神经网络结构,神经状态机定义了一组语义概念embedding的概念,其描述领域的不同实体和属性,如各种对象、属性和关系。通过将视觉和语言形式转换为基于语义概念的表示,有效地使两种模态可以”说同一种语言“,从而可以在抽象的语义空间中进行综合推理,这使得结构从内容中分离出来,实现模型的模块化,增强模型的透明度和可解释性。
二、主要思想
两个阶段:
建模:构造状态机。将视觉和语言形式都转换成抽象的表示形式:图像被分解成一个表示其语义的概率图——描述的视觉场景中的对象、属性和关系,问题被转换成一系列推理指令,通过执行指令回答问题。
推理:模拟状态机的操作。在问题的指导下对语义视觉场景执行顺序推理:通过迭代地向机器输入指令并遍历其状态来模拟串行计算,以获得答案。
定义:元组(C,S,E,riNi=0,p0,δ)(C,S,E,rii=0N,p0,δ)
(1)C:模型的概念词汇表,由一组属性概念组成。
(2)S:状态集。
(3)E:有向边的集合,指定状态之间的有效转换。
(4){ri}Ni=0{ri}i=0N:维数为d的指令序列,作为过渡函数δδ的输入依次传递。
(5)p0p0:S→[0,1] 初始状态的概率分布。
(6)δS,EδS,E:pi× ri→ pi+1pi× ri→ pi+1是状态转移函数。实例化为神经模块,在每一步中,考虑状态分布pipi和输入指令riri,并使用它沿边更新分布概率,产生一个更新的状态分布pi+1pi+1。
Part1:概念词汇表Concept vocabulary C
用于捕获和表示输入图像的语义内容。
L + 2个属性:
一个对象主体CO=C0CO=C0 eg:cat
L个属性CA=ULi=1CiCA=Ui=1LCi eg:颜色、形状、材质
一种关系CR=CL+1CR=CL+1 eg:持有、看
每个属性类型定义了一组D维embedding。
Part2:状态集 S 和 边集 E
构建一个概率场景图,提取给定图像中的对象和关系,构建机器的状态图。
此处使用了前人提出的场景图生成模型和Mask R-CNN物体检测器。
场景图的组成:
补充:
Part4:模型推理
Step2:得到指令的内容,将其与所有的状态和边进行比较,计算节点和边的相关性分数:
Step3:将模型的注意力从现有状态转移到最相关的邻居状态(即下一个状态):
(3)计算基于每个状态自身属性潜在转移的概率,(4)则考虑到相对于当前状态、转移到下一状态的上下文相关性。最终通过加权平均概率得到下一状态的概率分布。
通过将该过程重复执行N步,模拟神经状态机的推理步骤。
Part5:分类
为了预测问题,使用两次全连接层的softmax分类器,接收LSTM输出的问题特征和最终指令rNrN引导下提取到的最终状态聚合得到的信息m:
(6)先按照指令类型求平均值,之后加上了对最终状态的注意力pNpN。
三、实验
数据集:GQA VQA-CP
结果:
GQA:
VQA-CPv2:
模型泛化性能:
对GQA数据集进行修改,泛化了内容以及语法结构:内容泛化:测试机包括训练集不存在的种类;结构泛化:同中问题语法表达修改。
可视化推理过程:
四、总结
本文提出了神经状态机NSM,其从图像中抽取出一个图结构,并模拟有限自动机的推理步骤,来执行视觉推理任务。通过实验,证明了其有效性、鲁棒性和很好的泛化性能,此外也提高了可解释性。
通过将有限状态机的概念融入神经网络结构,使得符号和连接主义方法更加紧密的整合在一起,从而将神经模型从感官和知觉任务提升到更高层次的抽象、知识表征、组合性和推理领域。