Advertisement

论文分享——Dynamic graph attention for referring expression comprehension

阅读量:

文章目录

  • 背景

  • 模型

    • 推理过程

    • 静态attention图模型

      • 模型建立
      • 计算attention
    • 动态attention图模型

    • Matching 模块

    • 流程

  • 对比

背景

这篇论文《Dynamic Graph Attention for Referring Expression Comprehension》(2019年)与之前介绍过的这篇博客均出自同一位作者之手。然而相比之下,这篇文章较早发布

模型

提出了 Dynamic graph Attention(DGA) 模型

推理过程

第一个模型是个分析器,用来预测 image 的推理步骤

每个expression本质上就是一系列constituent expression及其间的combination rules的具体体现,在这篇文章中,每一个子表达式都涉及对表达式内词语分布的研究,并有助于识别图片中的物体类别。

我们设定一个包含 L 个单词的表达式集 Q = \{ q_l \}_{l=1}^{L}。该模型能够识别并提取出嵌入空间中的子模式。接着,在嵌入层中构建了一个由所有单词对应的向量组成的矩阵 \pmb{F} = \{\pmb{f}_l\}_{l=1}^{L}。随后采用双向长短期记忆网络对其进行编码处理,并将整个序列在嵌入空间中的表征浓缩为全局特征向量 \pmb{q}

接着DGA就要进行 T 步推理。

在时间步t处进行推理运算时,涉及到了一系列关键的计算步骤(其中加粗部分表示向量)。以下详细阐述每一步的具体操作:
第一步:计算查询向量\bm q_t
第二步:生成候选输入\bm u_t
第三步:应用ReLU激活函数获得中间状态\bm s_t
第四步:计算各个门类对应的权重系数r_{l,t}
第五步:根据权重系数进行加权求和得到最终输出向量

  1. \pmb{q}^{(t)} 实际上相当于对原始向量\pmb{q}施加了一次线性变换操作,并将其转化为一个随时间变化的特征变量表示;
  2. \pmb{u}^{(t)} 将上一步骤的结果与当前时刻的特征向量进行融合;
  3. 通过计算当前时间点上的\pmb{u}^{(t)}与特定矩阵\pmb{H}之间的相似程度来确定相关性;
  4. a^{(t)}_l 主要衡量词向量\pmb{h}_l与当前文本片段的相关性程度;而r^{(t)}_l则通过应用Softmax函数来分配权重;
  5. 其结果即为最终输出结果。

这里最终得到的就是每个单词的分布,\{R^{(t)}\}_{t=1}^T

静态attention图模型

模型建立

文章首先为图片构建了一个有向图,并采用了与该博客中所述的方法基本一致的方式进行操作。其中数学表达式G=(V,E,\pmb{X}^I)表示图的构成要素为顶点集V、边集E以及\pmb{X}^I这一变量集;值得注意的是\pmb{X}^I=\{x_k^I\}_{k=1}^{K}表示各物体的视觉特征与空间特征间的关联关系。

对于图中的各个物体间的关系而言,在本文中我们采用了不同的定义方式。具体而言,则需要计算出两个物体之间的相对距离d_{ij}以及角度\theta_{ij}\in[0,360)。随后所取值范围为e_{ij}从1至11,并分别对应着"inside"、"cover"、"overlap"、"right"、"top right"、"top"、"topleft"、"left"、"bottom left"、"bottom""以及最后的"different category of relationship(关系类别)等总共十一种关系类型。

计算attention

基于单模态有向图 G^{I} ,我们构建多模态图 G^{M}= (V,E,\boldsymbol{X}^{M}) ,其中 \boldsymbol{X}^{M} 是基于表达式进行计算得到的结果。

在表达式中每个词都用于表示 entity 或 relation 中的一个二者之一 从而我们分别计算 entity 的权重与 relation 的权重

随后可以阐述图片与表达式之间的联系,在计算 G^I 中每个节点的 attention weight 时

对于每条边上,我们可以分析一个词项的分布情况

通过该过程之后,我们能够推导出节点的特征向量表示为:其中通过矩阵 \pmb{W}_m 对输入向量 \pmb{x}_k^{I} 和类别嵌入 \pmb{c}_k 进行线性变换并加偏置得到结果。

动态attention图模型

DGA在 \{R^{(t)}\} 的指导下,在 G^M 上做多步推理。推理从特征向量 X^M 开始,每一步都会更新 object 的representation。在 t 时刻,DGA 会维护一个内存 \pmb{M}^{(t)}=\{\pmb{m}_k^{(t)}\}_{k=1}^K 来保存当前识别出的 compound object,并且还分别保存了节点的权重 \{p_k^{(t)}\}_{k=1}^K 和边的权重 \{\nu_n^{(t)}\}_{n=1}^N。下面展示这两个weight的计算过程
首先计算第 l 个词指代第 k 个节点或第 n 种边的概率 \gamma_{k,l}^{(t)}, \delta_{n,l}^{(t)},通过上文提到的静态attention weight,并且这里引入了之前提到的,单词在时刻 t 的分布,这就是所谓的“在语句的指引下”
\gamma_{k,l}^{(t)}=r_{l}^{(t)}\alpha_{k,l},\quad \delta_{n,l}^{(t)}=r_{l}^{(t)}\beta_{n,l}.
然后是第节点k和边n 在时刻 t 被提及的权值,
\lambda_k^{(t)} = \sum_{l=1}^L\gamma_{k,l}^{(t)},\quad \mu_n^{(t)} = \sum_{l=1}^L\delta_{n,l}^{(t)}
更新内存
p_k^{(t)} = \lambda_k^{(t)}+p_k^{(t-1)}, \quad \nu_n^{(t)} = \mu_n^{(t)} + \nu_n^{(t-1)}
最后通过一些计算。就可以得到最终节点 v_k 在 t 时刻对应的特征向量 m_k^{(t)}.(公式复杂,此处忽略)

Matching 模块

通过一个match公式,用于计算出物体k与整个表达式之间的匹配程度,并将具有最高匹配程度的物体作为结果返回。

流程

流程

对比

两篇文章在推理机制上存在显著差异。其推理逻辑则建立在对数学表达式的详细解析基础之上。其中一项关键要素是参数 W^(t),以此为基础推导出了一系列重点关注的子表达式(这些子表达式代表了概率分布)。在图结构构建方面存在显著差异,在这一过程中变量 edge 并未得到广泛应用。值得注意的是,在这一过程中变量 edge 并未得到广泛应用。此外,在图结构构建方面存在显著差异,在这一过程中变量 edge 并未得到广泛应用。也就是说, 本文的模型不显式提及2020年那篇论文中的节点间信息传递 的功能。

2020年那篇文章的推理顺序遵循BFS算法对每一个节点进行处理。相比之下,在本文中,则采用了完全不同的方法:从头到尾都是通过对整个表达式进行解析来确定推理顺序的过程。具体来说,在每一步运算中都会计算当前所关注的对象(即 compound object )与整个表达式之间的匹配程度。最后,在这些数值的基础上挑选出具有最高匹配程度的那个 compound object 。这表明两篇论文的主要差异可能源于在处理表达式方面采取了不同的策略。

全部评论 (0)

还没有任何评论哟~