论文阅读:《Learning by abstraction: The neural state machine》
一、问题提出
针对神经网络和符号网络各自的优缺点,引入有限自动机的思想,提出一种神经状态机,将各自的互补优势整合到视觉推理任务中。
首先基于给定的图像,使用一个场景图抽取模型,得到对应的概率场景图。其中,对象被转化为节点,并使用属性表示表示特征;关系被转化为边,来捕获对象之间的空间关系和语义关系。此外,对输入的问题进行语义理解,并转化为一系列软指令。在推理过程中,概率场景图被视为一个有限状态机,利用指令集合在其上执行顺序推理,迭代遍历它的节点,以回答一个给定的问题或得出一个新的推理。
不同于一些旨在将多模态数据进行紧密交互的神经网络结构,神经状态机定义了一组语义概念embedding的概念,其描述领域的不同实体和属性,如各种对象、属性和关系。通过将视觉和语言形式转换为基于语义概念的表示,有效地使两种模态可以”说同一种语言“,从而可以在抽象的语义空间中进行综合推理,这使得结构从内容中分离出来,实现模型的模块化,增强模型的透明度和可解释性。
二、主要思想
两个阶段:
- 建模:构造状态机。将视觉和语言形式都转换成抽象的表示形式:图像被分解成一个表示其语义的概率图——描述的视觉场景中的对象、属性和关系,问题被转换成一系列推理指令,通过执行指令回答问题。
- 推理:模拟状态机的操作。在问题的指导下对语义视觉场景执行顺序推理:通过迭代地向机器输入指令并遍历其状态来模拟串行计算,以获得答案。
定义:元组 ( C , S , E , r i i = 0 N , p 0 , δ ) (C,S,E,{{r_i}}_{i=0}^N,p_0,\delta) (C,S,E,rii=0N,p0,δ)
(1)C:模型的概念词汇表,由一组属性概念组成。
(2)S:状态集。
(3)E:有向边的集合,指定状态之间的有效转换。
(4)
{
r
i
}
i
=
0
N
\{{r_i}\}_{i=0}^N
{ri}i=0N:维数为d的指令序列,作为过渡函数
δ
\delta
δ的输入依次传递。
(5)
p
0
p_0
p0:S→[0,1] 初始状态的概率分布。
(6)
δ
S
,
E
\delta_{S,E}
δS,E:
p
i
×
r
i
→
p
i
+
1
p_i\times\ r_i\rightarrow\ p_{i+1}
pi× ri→ pi+1是状态转移函数。实例化为神经模块,在每一步中,考虑状态分布
p
i
p_i
pi和输入指令
r
i
r_i
ri,并使用它沿边更新分布概率,产生一个更新的状态分布
p
i
+
1
p_{i+1}
pi+1。
Part1:概念词汇表Concept vocabulary C
用于捕获和表示输入图像的语义内容。
L + 2个属性:
一个对象主体 C O = C 0 C_O=C_0 CO=C0 eg:cat
L个属性 C A = U i = 1 L C i C_A=U_{i=1}^LC_i CA=Ui=1LCi eg:颜色、形状、材质
一种关系 C R = C L + 1 C_R=C_{L+1} CR=CL+1 eg:持有、看
每个属性类型定义了一组D维embedding。
Part2:状态集 S 和 边集 E
构建一个概率场景图,提取给定图像中的对象和关系,构建机器的状态图。
此处使用了前人提出的场景图生成模型和Mask R-CNN物体检测器。
场景图的组成:
(1)对象节点
S
S
S,每个对象包括一个边界框、一个mask遮罩、视觉特性表示和对应于概念词汇表中L个语义属性的离散概率分布
{
P
i
}
i
=
0
L
\{{P_i}\}_{i=0}^L
{Pi}i=0L。转化到概率场景图中,每个对象对应一个状态
s
∈
S
s\in\ S
s∈ S,使用
L
+
1
L + 1
L+1的属性变量
{
s
j
}
i
=
0
L
\{{s^j}\}_{i=0}^L
{sj}i=0L表示其特征:
s
j
=
∑
c
k
∈
C
j
P
j
(
k
)
c
k
s^j=\sum_{c_k \in C_j}{P_j(k)c_k}
sj=ck∈Cj∑Pj(k)ck
其中,
c
k
∈
C
j
c_k\in\ C_j
ck∈ Cj表示第j个属性类型的每个子类属性embedding(比如颜色属性里面的红色),
P
j
P_j
Pj表示这些子属性上的概率分布。该公式主要抽取出每个对象的属性特征。
例子:具有”red“属性的对象,其颜色属性会被赋予接近”red“特征的embedding。
(2)对象之间的关系边,每条边都与语义类型
C
L
+
1
C_{L+1}
CL+1上的概率分布
P
L
+
1
P_{L+1}
PL+1相关联。类似,计算每一条边的关系语义embedding:
e
′
=
∑
c
k
∈
C
L
+
1
P
L
+
1
(
k
)
c
k
e^\prime=\sum_{c_k\in C_{L+1}}{P_{L+1}(k)c_k}
e′=ck∈CL+1∑PL+1(k)ck
补充:
每个对象有 ( L + 1 ) × D (L+1) \times D (L+1)×D维特征;每个边有 D D D维特征。
Part3:推理指令Reasoning instructions { r i } i = 0 N \{{r_i}\}_{{i}={0}}^{N} {ri}i=0N
将问题翻译为推理指令。
Step1:
使用NLP领域的GloVe对问题进行词嵌入,之后将每个词翻译为词汇表中最相近的概念(即和图片映射到同一个语义空间),如果词汇表没有就保留。
针对每个词向量
w
i
w_i
wi,首先计算和词汇表中属性的相似度的分布:
P
i
=
s
o
f
t
m
a
x
(
w
i
T
W
C
)
P_i=softmax(w_i^TWC)
Pi=softmax(wiTWC)
其中,C为所有子属性的embedding,该矩阵中还包括一个额外的embedding
c
′
c^\prime
c′,表示非内容词汇。
之后,将每个词转变为基于词汇表C的特征表示:
v
i
=
P
i
(
c
‘
)
w
i
+
∑
c
ϵ
C
\
{
c
‘
}
P
i
(
c
)
c
v_i=P_i(c^`)w_i+\sum_{c \epsilon C \backslash \{c^`\}}{P_i(c)c}
vi=Pi(c‘)wi+cϵC\{c‘}∑Pi(c)c
基于该变换,问题中属性词会被词典中的对应属性替代;而其余功能词等报错原始embedding。最终得到M个转换之后的词序列
V
M
×
d
=
{
v
i
}
i
=
1
M
V^{M\times d}=\{{v_i}\}_{i=1}^M
VM×d={vi}i=1M。
Step2:
使用一个基于注意力的encoder-decoder结构处理词序列:
encoder部分为一个LSTM循环神经网络,最终状态 q q q作为问题特征表示;
decoder部分为固定步数(
N
+
1
N+1
N+1)的循环decoder,其产生
N
+
1
N+1
N+1个隐藏状态
h
i
h_i
hi,每一步decoding时计算对词序列的注意力,并转换为对应的推理指令:
r
i
=
s
o
f
t
m
a
x
(
h
i
V
T
)
V
r_i=softmax(h_iV^T)V
ri=softmax(hiVT)V
该步骤使用注意力机制生成了一系列推理指令,其可以有选择性给关注问题中的各个部分,达到循序渐进找答案的效果。
补充: r i r_i ri为1*d维向量
Part4:模型推理
已求得:
概念词汇表 C = U i = 0 L + 1 C i C=U_{i=0}^{L+1}C_i C=Ui=0L+1Ci
图的状态S 每个状态: { s j } i = 0 L \{{s^j}\}_{i=0}^L {sj}i=0L
边E 每一条边: e ′ e^\prime e′
指令序列 { r i } i = 0 N \{{r_i}\}_{i=0}^N {ri}i=0N
自动机初始化:场景图上对象的初始概率分布 p 0 p_0 p0。
每个推理步
i
i
i:读取指令
r
i
r_i
ri,并通过其沿着边更新概率,将注意力重新分配给状态。
δ
S
,
E
:
p
i
×
r
i
→
p
i
+
1
\delta_{S,E}:p_i\times\ r_i\rightarrow\ p_{i+1}
δS,E:pi× ri→ pi+1
Step1:理解指令的含义,即找到与指令
r
i
r_i
ri最相关的属性类型。
设 D D D为词汇表中 L + 2 L+2 L+2个属性,先求出指令和各属性相关的程度:
R i = s o f t m a x ( r i T ⋅ D ) R_i=softmax(r_i^T \cdot D) Ri=softmax(riT⋅D)
比如 R i ( L + 1 ) ∈ [ 0 , 1 ] R_i(L+1)\in[0,1] Ri(L+1)∈[0,1]表示为 r i ′ r_i^\prime ri′,代表着该指令和语义关系的相关性程度。
Step2:得到指令的内容,将其与所有的状态和边进行比较,计算节点和边的相关性分数:
Step3:将模型的注意力从现有状态转移到最相关的邻居状态(即下一个状态):
(3)计算基于每个状态自身属性潜在转移的概率,(4)则考虑到相对于当前状态、转移到下一状态的上下文相关性。最终通过加权平均概率得到下一状态的概率分布。
通过将该过程重复执行N步,模拟神经状态机的推理步骤。
Part5:分类
为了预测问题,使用两次全连接层的softmax分类器,接收LSTM输出的问题特征和最终指令 r N r_N rN引导下提取到的最终状态聚合得到的信息m:
(6)先按照指令类型求平均值,之后加上了对最终状态的注意力 p N p_N pN。
三、实验
数据集:GQA VQA-CP
结果:
GQA:
VQA-CPv2:
模型泛化性能:
对GQA数据集进行修改,泛化了内容以及语法结构:内容泛化:测试机包括训练集不存在的种类;结构泛化:同中问题语法表达修改。
可视化推理过程:
四、总结
本文提出了神经状态机NSM,其从图像中抽取出一个图结构,并模拟有限自动机的推理步骤,来执行视觉推理任务。通过实验,证明了其有效性、鲁棒性和很好的泛化性能,此外也提高了可解释性。
通过将有限状态机的概念融入神经网络结构,使得符号和连接主义方法更加紧密的整合在一起,从而将神经模型从感官和知觉任务提升到更高层次的抽象、知识表征、组合性和推理领域。