论文阅读【Entangled Transformer for Image Captioning】

Entangled Transformer for Image Captioning

  • 发表:ICCV 2019
  • idea:典型的注意机制很难识别等价的视觉信号,尤其是在预测高度抽象的单词时。这种现象被称为视觉和语言之间的语义鸿沟。这个问题可以通过提供与语言同源的语义属性来解决。主要是沿用了transformer架构和设计,在encoder阶段使用了两个独立的transformer encoder分别编码视觉信息和语义信息。在decoder端使用作者设计的纠缠注意力以弥补传统注意力在二者之间缺乏的互补性,以及门控机制对视觉指导 V t V_t Vt和语义指导 S t S_t St进行选通。

详细设计

论文阅读【Entangled Transformer for Image Captioning】_第1张图片

(1)encoder
使用两个独立的transformer encoder分别对视觉信息(输入为region proposal)和语义属性(输入为Semantic Attribute,即一系列词汇的embedding),这里也使用了多头自注意力机制。以视觉encoder为例
论文阅读【Entangled Transformer for Image Captioning】_第2张图片
这里的FFN设计有些特别,是按列处理的
在这里插入图片描述
在这里插入图片描述
O l O^l Ol表示第l层block的输出, M l + 1 M^{l+1} Ml+1为多头注意力的隐层; M • , i l + 1 {M_{•,i}}^{l+1} M,il+1表四M的第i列,即第i个特征向量

(2)decoder
论文阅读【Entangled Transformer for Image Captioning】_第3张图片
这里 w < t = [ w 0 ; . . . ; w t − 1 ] w_{w<t=[w0;...;wt1]

  • ETA(EnTangled Attention)
    论文阅读【Entangled Transformer for Image Captioning】_第4张图片
    作者认为:为了模拟人类视觉系统的注意机制,我们需要一个函数,该函数可以将初始模态 S N S^N SN的信息注入 a t a_t at的自我注意输出中,以便生成的表示 g t ( s ) {g_t}^{(s)} gt(s) 可以为目标模态中的注意提供适当的指导。为了处理数量可变的语义属性,选择多头注意作为初步的信息注入函数
    在这里插入图片描述
    然后,使用语义指导 g t ( s ) {g_t}^{(s)} gt(s) 在目标模态 V N V^N VN上执行多头注意:
    在这里插入图片描述
    ps:所有的attention后面都有Norm&Add

  • GBC(Gated Bilateral Controller)
    论文阅读【Entangled Transformer for Image Captioning】_第5张图片
    控制信息流向后续层的路径的选通机制广泛用于著名的序列模型,如LSTM、GRU和ConvS2S。这种乘法门擅长处理梯度爆炸和消失,使信息能够在长时间步长或深层中无阻碍地传播。这里的GBC模块主要用于集成生成的表示st和vt。
    但是与之前的“门”不同的是,这里通过双边方案对其进行了扩展。闸门值ct控制视觉引导vt的流量,而补充部分(1-ct)控制语义信息st的传播:
    在这里插入图片描述
    这里的激活函数 f f f作者最终选择了identity function。关于 f f f的讨论如下:

  • 关于激活函数 f f f
    在LSTM或GRU中,Hadamard乘积的左侧部分总是通过函数f激活,函数f可以是Sigmoid、Tanh或ReLU,等等。
    然而,我们没有在vt和st上应用任何激活,它们仅仅是多头注意中线性变换的输出。与上面提到的饱和激活相比,恒等式函数id(x)=x允许梯度在线性部分传播,而不会缩小尺度。这里,根据文献[Language modeling with gated convolutional networks]中的分析,我们以下面等式的左侧部分为例,其梯度如下•
    在这里插入图片描述
    f ′ ( x ) f'(x) f(x)可以作为渐变的比例因子。此外,tanh(•)∈(0;1],σ’(•)∈(0;0.25),而id’(•)=1。因此,饱和激活将降低梯度,并使梯度随着层的堆叠而消失得更糟。尽管非饱和激活ReLU具有与Identity function类似的特性,但我们认为激活门ct为模块配备了非线性。为了简单起见,我们不在vt和st上应用任何激活。通过在第5.4.3节中实验比较f函数的效果,我们发现激活会大大降低性能,而Identity function达到最佳。
    ps:主要为翻译

你可能感兴趣的:(论文阅读,transformer,深度学习)