当前位置 : 主页 > 编程语言 > 其它开发 >

论文阅读:《Probabilistic Neural-symbolic Models for Interpretable Visual Question Answering》

来源:互联网 收集:自由互联 发布时间:2022-05-30
来源:ICML 201 标题:可解释的视觉问题回答的概率神经符号模型 来源:ICML 2019https://proceedings.mlr.press/v97/vedantam19a.html 代码:https://github.com/kdexd/probnmn-clevr 一、问题提出 neural-symbolic模型
来源:ICML 201

标题:可解释的视觉问题回答的概率神经符号模型
来源:ICML 2019https://proceedings.mlr.press/v97/vedantam19a.html
代码:https://github.com/kdexd/probnmn-clevr

一、问题提出

neural-symbolic模型是神经和符号网络模型的结合。

神经网络参数的灵活可以挖掘到跟多的信息,但是缺乏解释性;

符号网络缺乏灵活的学习能力,但支持很强的泛化和系统性,且更加直观可解释。

本文从NMN出发,结合neural和program,深入探讨模型的推理能力。

对于VQA的image i 和question x, 生成一个程序program z, 利用program制定推理过程,使用神经网络进行具体运算。

image-20220409115142250

例子:该例子中,基于问题,program首先从场景中过滤出cylinder和cube两个关键词,应用filter[cube]算子并关联[left],之后和filter[cylinder]一起预测答案。

image-20220409115208071

在构建program的过程中,将会动态产生一组参数θ,每一个参数代表一个模块。

image-20220409115234404

本文的内容是在神经符号模型中引入了概率公式,通过这样的表达式,期望该模型满足可解释推理模型的一些自然需求。

二、主要思想

问题形式化定义

输入图像:\(i\in\ R^{U\times V}\)

输入问题:\(x=\left(x_1,...,x_t\right),\ \ x_t\in\ X\)

回答:\(a\in\ A\)

前缀序列化程序program:\(z=(z_1,...,z_t)\in\ Z\),其中给定符号\(z\in\ Z\),有一个对应的神经网络(后续可以动态的实例化神经网络)和参数\(\theta_z\)(给定z,这些都是确定的)。——该步定义类同于NMN神经模块网络中的模块

采用的数据集

\[D=\{x^n,z^n\}\cup\{x^m,a^m,i^m\} \]

\(\{x^m,a^m,i^m\}\):VQA数据集
\(\{x^n,z^n\}\):指引数据集,需要人工标注(为了探索模型的学习效果,期望N<<M,即使用很少的注释program得到很好的学习效果)

概率图模型

分为两个步骤:Generative Model和Inference Network

image-20220409115823435

  1. Generative Model

给定图像i,建立\(p\left(x,z,a\middle|\ i\right)\)的模型,即关于问题、回答和program关系的模型。

模型分解为:

\[p\left(x,z,a\middle|\ i\right)=p\left(z\right)p\left(x\middle|\ z\right)p\left(a\middle|\ z,i\right) \]

步骤:首先从program z的先验分布中采样一个program z,并通过该program z生成问题x;之后基于program z和输入的图片i,生成问题的答案。(此步骤中,z生成了问题x,但x不参与生成答案。)
其中,对program z里面的每一个项设置一种小的神经单元,动态地实例化神经网络的参数\(\theta_z\)(给定z,这些都是确定的)。——该步类同于NMN

从而:
\(p\left(a\middle|\ i,z\right)\)被化为\(p\left(a\middle|\ i,\theta_z\right)\),其中\(\theta_z=\{{\theta_{z_t}}\}_{t=1}^T\)

从而:

\[p\left(x,z,a\middle|\ i\right)=p\left(z\right)p\left(x\middle|\ z\right)p\left(a\middle|\ i,z\right)=p\left(z\right)p\left(x\middle|\ z\right)p\left(a\middle|\ i,\theta_z\right) \]

\(p\left(z\right)\)用最大似然法对关于program的封闭数据集进行预训练,并在之后保持固定,本文参数化为LSTM网络;

\(p_\sigma(x|z)\)同样参数化为LSTM网络;

\(\theta_z\)被参数化为CNN网络,将图片或者注意力作为输入,提取图中的感兴趣区域。

  1. Inference Network

推理过程,如图中虚线所示,首先通过问题生成program z,之后结合图片和生成的program,生成问题的答案。

文中不再使用NMN中parser+layout的结构,而是使用一个推理网络\(q_\emptyset(z|x)\)来映射问题到潜在的结构化程序program。

优点:融合了概率公式的NMN模型(Prob-NMN)可以带来更好的半监督学习和推理能力。

参数学习

文中提出了一种三阶段优化算法:

  • Question Coding
  • Module Training
  • Joint Training
  1. Question Coding

首先基于\(\{x^n,z^n\}\)以及\(x^m\),学习一个好的在潜空间z编码问题x的方法,即优化概率公式\(p_\sigma(x|z)\)\(q_\emptyset(z|x)\)

目标:\(argmax\ \sum_{n}{log\ p\left(x^n\middle|\ z^n\right)}+\sum_{m}{log\ p\left(z^m\right)}\)

需要补充知识点:变分推断和摊销推理网络

参考知乎:

https://zhuanlan.zhihu.com/p/402237111

https://zhuanlan.zhihu.com/p/385341342

Step1:

先处理第二项\(\sum_{m}{log\ p\left(z^m\right)}\),利用摊销推理网络\(q_\emptyset\)优化证据下界( Evidence Lower Bound (ELBO)):

image-20220409150453054

利用β < 1来衡量公式(1)中KL散度 \(D_{KL}(q(z|x)||p(z))\)的贡献。
该约束条件下,\(u_{qc}\)项没有捕获program的语义,即没有将其与特定的问题相关。所以还需要利用\(\{x^n,z^n\}\)学习问题和program之间的联系,并为问题x提供易读的解释。

Step2:

处理第一项\(\mathcal{L}=\sum_{n}{log\ p_\sigma\left(x^n\middle|\ z^n\right)+log\ p\left(z^n\right)}\),设序列z中第t个时间步的序列\(z_t\)分布为参数\(\pi_t\)的范畴。设\(\mathrm{\Pi}=\{\pi_t\}_{t=1}^T\)表示整个\(\pi_t\)上的联合随机变量,,按照相同的方法优化组合\(\mathcal{L}=\sum_{n}{log\ p_\sigma\left(x^n\middle|\ z^n\right)+log\ p\left(z^n\right)}\)的下界:

image-20220409162127584

在实践中,由于后验\(q(\mathrm{\Pi}|z^n,x^n)\)会使得KL散度趋于∞,所以公式(2)中得到的下界没有意义。故改为对\(\mathcal{L}\)进行近似:

image-20220409162943038

  1. Module Training

\[p\left(x,z,a\middle|\ i\right)=p\left(z\right)p\left(x\middle|\ z\right)p\left(a\middle|\ i,z\right)=p\left(z\right)p\left(x\middle|\ z\right)p\left(a\middle|\ i,\theta_z\right) \]

该阶段对模块进行优化,即优化参数\(\theta_Z\)。最大化:

image-20220409182637609

目标是找到模块参数的最佳初始化值。

例子:模块find [green] 的初始化参数\(\theta_{find\left[green\right]}\)将会约束该模块的执行达到预期的效果(即将图片中绿色部分加上注意力)。

  1. Joint Training

利用全部数据集\(D=x^n,z^n\cup x^m,a^m,i^m\),综合学习概率图模型的所有参数:\(\{\theta_Z,\sigma,\varphi\}\)

目标:最大化\(\mathcal{L}+U_f\),其中\(U_f=\sum_{m=1}^{M}{log\ p\left(x^m,a^m\middle|\ i^m\right)}\)\(\mathcal{L}=\sum_{n=1}^{N}{log\ p\left(x^n,z^n\right)}\)

按照步骤(1)类同的方法推导\(U_f\)的变分下界:

image-20220409183926489

综合上述推导中的式(4)和式(3),将KL散度改写并加入期望中(参照知乎文章),并对相应项加入比例因子,得到最终的优化目标:

image-20220409183952697

由于期望是关于\(\varphi\)不可微的,所以使用了一种REINFORCE估计器来获取\(\varphi\)的梯度估计。

最终的算法流程:

image-20220409135549137

三、实验

数据集:SHAPES CLEVR

结果:

image-20220409184805264

image-20220409184816442

不同比例监督数据下的效果:

image-20220409184908741

生成program的一致性和灵敏性:

image-20220409185003544

四、总结

文章工作:

  1. 模型为半监督学习,利用少量标记数据学习program的表示。
  2. 使用了概率模型,提升了模型的性能,使得生成的program 更加直接、易读、被理解。
  3. 用了反向推理的思路,通过给定答案(可能与事实不符),生成得到这个答案的program,提高了模型的解释性能。
  4. 三阶段训练策略:先预学习部分参数,便于联合学习获取更好的表现。
上一篇:Spark性能优化
下一篇:没有了
网友评论