注意力之双线性模型注意力

本文主要针对两篇论文:双线性注意力网络模型和深度模块化注意力进行总结,加上自己对其的理解。若有不足,还望指出。
论文地址:
双线性注意力网络
深度模块化注意力
项目地址:
双线性注意力网络
深度模块化注意力

0. 写在前面

首先我们要知道什么是注意力机制和什么是双线性模型

0.1 注意力机制

注意力一词来源与我们自身的视觉系统,现实生活中,我们观察事物倾向于将信息集中进行分析而忽略掉图像中的无关信息。同样,在计算机视觉研究领域中,也存在类似情况,例如VQA任务,可能只有图像中的个别对象与我们的答案有关,同样,在问题中可能只有个别个单词与我们的图像有关。注意力机制就将这种关系进行了整合,允许模型动态的去关注输入的特定部分,从而有效的提高模型的效率。

它的一个重要假设就是:学习得到的注意力权重体现了当前需输出的数据与输入序列的某些位置的相关性。权重越大,相关性越高。
如图:对图像字幕任务中生成的文本有显著影响的相关图像区域(高注意权重)
在这里插入图片描述

0.2 堆叠式注意力机制(Stacked Attention)

堆叠注意力就是一种多层的注意力,通过多步推理定位与问题相关的图像区域进行答案预测。具体步骤如下:

  • 第一步:使用问题向量(q1)来查询第一视觉注意层的图像向量(v1),将问题图像和检索到的图像向量(与问题相关的图像区域)结合形成查询向量(u1),
  • 第二步:用第一步得到的查询向量u1继续来查询第二视觉注意层的图像向量v2,将第一视觉注意层的查询向量和与其相关的图像区域的图像向量结合形成新的查询向量u2。
    由此,较高级别的注意层,将更关注图像中与答案相关的区域。
    在这里插入图片描述
    在这里插入图片描述

0.3 分层注意力机制(Hierarchical Attention Model)HAM

分层注意力机制也是一种多层注意力机制,它是对输入序列进行多次抽象,这样使得低层抽象的上下文向量成为下一次抽象的查询状态。一个典型应用就是对文本进行结构化分层进行抽取。
文本是由不同的句子组合而成的,而每个句子又包含不同的单词,HAM能够对文章这种自然的层次化结构进行抽取,具体如下:

  • 第一步:就是对文章中的每个句子建议一个注意力模型,这个注意力模型输入的是每个句子的基本单词,从而得到句子的特征表示。
  • 第二步:将句子的特征表示输入到后续的注意力模型中来构建整段文本的特征表示,最后得到的特征就是文本特征输入到分类器中进行最终的预测。

0.4 分层共同注意力(Hierarchical Co-Attention )

分层共同注意力是在分层注意力上的基础上加了共同,与之不同的是,分层注意力只通过问题去关注图像,此模型在问题和图像之间具有自然的对称性,即图像可引导问题注意,问题可引导图像注意。
在问题特征处理上采用分层,首先将处理单词特征,再将单词特征作为输入处理短语特征,再将短语特征作为输出句子特征,最后用句子特征进行答案预测。

0.5 双线性模型

双线性模型也有称为双线性池化,主要用于特征融合。
如果特征x和特征y来自两个特征提取器(例如VQA任务中,问题特征和图像特征),则被称为多模双线性池化(MBP),
如果来自同一个则交同源双线性池化(HBP)或者二阶池化。

原始的Bilinear Pooling存在融合后的特征维数过高的问题融合后的特征维数=特征x与特征y的维数乘积,一些论文作者尝试用PCA(主成分分析)进行降维,有的采用Tucker分解等

  • 双线性池化

基于Bilinear CNN Models for Fine-grained Visual Recognition

在这里插入图片描述

它的双线性模型B由四个部分组成 B = ( f A , f B , P , C ) B=(f_A,f_B,P,C) B=(fA,fB,P,C), f A 和 f B f_A和f_B fAfB是特征函数,P是池化函数,C是分类函数,公式如下:

它的公式如下:
在这里插入图片描述
公式理解:就是将图像中的同一位置上的两个特征进行乘,然后得到矩阵B,再对矩阵B进行sum pooliing池化得到矩阵 ξ \xi ξ,再对 ξ \xi ξ向量化,得到双线性向量x,再对x进行归一化操作,得到融合后的特征z,再将z用于分类和预测。

  • 双线性模型

双线性模型指形如如下公式的操作:
在这里插入图片描述
忽视归一化操作,HBP特征如下表示:
在这里插入图片描述

把提取的特征送入全连接层再送入softmax层,公式等价是:
在这里插入图片描述
W j W_j Wj是全连接层的参数矩阵需要学习的, W j R W^R_j WjR是与之对应的,所以直接对 W j R W^R_j WjR进行学习。就是双线性模型与双线性池化差不多的原因。

  • MLB(Mutimodal Low-rank Bilinear Pooliing)多模态低秩双线性池化方法

此概念出自《Hadamard product for low-rank bilinear pooling》,核心是Hadamard积(按元素乘)来实现bilinear model。为了减少双线性矩阵W的秩,用低秩矩阵UV的乘积来近似,把上面公式写成如下:(低秩双线性模型)
在这里插入图片描述
如果需要扩大矩阵 U i 和 V i U_i和V_i UiVi,再采用了池化矩阵P(低秩双线性池化),控制输出即可
在这里插入图片描述

  • MCB(Multimodal Compact Bilinear Pooling)多模态紧凑型双线性池化
    MCB在VQA任务中处理的过程如下:
    在这里插入图片描述
    在这里插入图片描述

这里 Ψ \Psi Ψ是一个sketch函数(一种降维方式),在这里插入图片描述
在这里插入图片描述
MCB模块的工作:加了attention之后的框架如下:
在这里插入图片描述
这是一共用了两次的MCB模块,第一个融合了文本和图像的特征来提出图像的attention,第二个是将图像的attention特征与文本特征再一次融合,并将结构送入全连接网络,再送入softmax分类器得到答案。

1. 双线性注意力

作者指出,虽然协同注意力网络能够有选择的关注问题关键词和图像关键区域,但是却忽视了两者的交互带来的计算量。所以作者提出将协同注意力扩展为双线性注意力,如果问题中涉及多个关键词,那么就会对每个关键词使用视觉注意力来查找视觉关键区域。

因此作者提出双线性注意力网络,结构如下图:
在这里插入图片描述

公式如下:
两个多通道的输入X和Y,为了减少两个输入通道,引入双线性注意力图A,
在这里插入图片描述
其中A是一个双线性权重矩阵,上式还可以如下表示:
在这里插入图片描述
我们将双线性注意力网络函数表示如下:
在这里插入图片描述

双线性注意力模型图如下表示:
在这里插入图片描述
可以看出A中的每个元素都是经过低秩池化得到,
在这里插入图片描述
多重双线性池化注意力分布图由softmax输出图如下表示:
在这里插入图片描述

注意力机制是一种用于建模序列数据的机制,常用于自然语言处理任务中。它在模型内部引入了注意力机制,使得模型能够根据输入的不同位置信息来计算其与其他位置之间的关联度。下面是自注意力机制的模型结构: 1. 输入表示:将输入序列(如单词、句子等)转换为向量表示,通常使用词嵌入(word embedding)来表示每个单词或位置。 2. 查询(Query)、键(Key)、值(Value)计算:通过对输入序列进行线性变换,得到三个表示序列的向量:查询向量Q、键向量K和值向量V。 3. 注意力得分计算:通过计算查询向量Q与键向量K之间的相似度得分,来衡量不同位置之间的关联度。常用的计算方法是点积注意力(dot-product attention)或双线性注意力(bilinear attention)。 4. 注意力权重计算:通过对注意力得分进行归一化,得到注意力权重,表示每个位置对当前位置的贡献程度。 5. 上下文表示计算:通过使用注意力权重对值向量V进行加权求和,得到当前位置的上下文表示,表示当前位置与其他位置的综合信息。 6. 输出计算:根据上下文表示进行进一步处理,可以通过线性变换、非线性激活函数等操作得到最终的输出表示。 自注意力机制的优点在于能够捕捉输入序列中不同位置之间的依赖关系,而不需要依赖于固定窗口大小或卷积核大小。这使得模型能够更好地处理长距离依赖和全局信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值