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

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=(fA,fB,P,C)B=(f_A,f_B,P,C)B=(fA​,fB​,P,C),fA和fBf_A和f_BfA​和fB​是特征函数,P是池化函数,C是分类函数,公式如下:

它的公式如下:

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

  • 双线性模型

双线性模型指形如如下公式的操作:

忽视归一化操作,HBP特征如下表示:

把提取的特征送入全连接层再送入softmax层,公式等价是:

WjW_jWj​是全连接层的参数矩阵需要学习的,WjRW^R_jWjR​是与之对应的,所以直接对WjRW^R_jWjR​进行学习。就是双线性模型与双线性池化差不多的原因。

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

此概念出自《Hadamard product for low-rank bilinear pooling》,核心是Hadamard积(按元素乘)来实现bilinear model。为了减少双线性矩阵W的秩,用低秩矩阵UV的乘积来近似,把上面公式写成如下:(低秩双线性模型)

如果需要扩大矩阵Ui和ViU_i和V_iUi​和Vi​,再采用了池化矩阵P(低秩双线性池化),控制输出即可

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

这里Ψ\PsiΨ是一个sketch函数(一种降维方式),

MCB模块的工作:加了attention之后的框架如下:

这是一共用了两次的MCB模块,第一个融合了文本和图像的特征来提出图像的attention,第二个是将图像的attention特征与文本特征再一次融合,并将结构送入全连接网络,再送入softmax分类器得到答案。

1. 双线性注意力

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

因此作者提出双线性注意力网络,结构如下图:

公式如下:
两个多通道的输入X和Y,为了减少两个输入通道,引入双线性注意力图A,

其中A是一个双线性权重矩阵,上式还可以如下表示:

我们将双线性注意力网络函数表示如下:

双线性注意力模型图如下表示:

可以看出A中的每个元素都是经过低秩池化得到,

多重双线性池化注意力分布图由softmax输出图如下表示:

注意力之双线性模型注意力相关推荐

  1. 空间注意力机制sam_Attention注意力机制介绍

    什么是Attention机制 Attention机制通俗的讲就是把注意力集中放在重要的点上,而忽略其他不重要的因素.其中重要程度的判断取决于应用场景,拿个现实生活中的例子,比如1000个人眼中有100 ...

  2. 关于《注意力模型--Attention注意力机制》的学习

    关于<注意力模型--Attention注意力机制>的学习 此文大部分参考深度学习中的注意力机制(2017版) 张俊林的博客,不过添加了一些个人的思考与理解过程.在github上找到一份基于 ...

  3. 注意力机制之注意力分数

    目录 注意力分数 扩展到高维 加性注意力 scaled 点积注意力 总结 代码 注意力分数 注意力分数和注意力权重的区别: 扩展到高维 这里,q的数量和key-value对的数量可以不一致.q,k,v ...

  4. 什么是注意力机制?注意力机制的实现步骤

    我们观察事物时,之所以能够快速判断一种事物(当然允许判断是错误的),是因为我们大脑能够很快把注意力放在事物最具有辨识度的部分从而作出判断,而并非是从头到尾的观察一遍事物后,才能有判断结果,正是基于这样 ...

  5. 注意力机制(一):注意力提示、注意力汇聚、Nadaraya-Watson 核回归

    专栏:神经网络复现目录 注意力机制 注意力机制(Attention Mechanism)是一种人工智能技术,它可以让神经网络在处理序列数据时,专注于关键信息的部分,同时忽略不重要的部分.在自然语言处理 ...

  6. 特征图注意力_ICLR2017 | AT_注意力引导的知识蒸馏

    ICLR2017 | Paying More Attention to Attention https://github.com/szagoruyko/attention-transfer 1.注意力 ...

  7. 注意力机制-多头注意力

    文章目录 多头注意力 多头注意力 给定一个Query(查询)和一系列的Key-Value对一起映射出一个输出.包括下面三个关键性步骤: 将Query与Key进行相似性度量 将求得的相似性度量进行缩放标 ...

  8. 深度学习卷积神经网络重要结构之通道注意力和空间注意力模块

    #主要原理 提出CBAM的作者主要对分类网络和目标检测网络进行了实验,证明了CBAM模块确实是有效的. 以ResNet为例,论文中提供了改造的示意图,如下图所示: #CMAB模块实现,依据上面原理 # ...

  9. 自注意力机制与注意力机制

    基本内容理解的话推荐看一下这篇博客Transformer:注意力机制(attention)和自注意力机制(self-attention)的学习总结,这个博主讲的很细致,比较容易理解. 这里借用一下上述 ...

最新文章

  1. 如何快速融入一个团队?
  2. 创建github账号
  3. mysql代码生成器_MYSQL语句生成器
  4. ML之xgboost:利用xgboost算法(结合sklearn)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
  5. eclipse里没有project facets
  6. 4、oracle数据库的查询基础
  7. 信息学奥赛一本通C++语言——1025:保留12位小数的浮点数
  8. python小球弹弹弹_python实现小球弹跳效果
  9. mysql 字符串出现问题_MYSQL 中字符串函数 归纳总结
  10. 三菱PlC程序大型项目QCPU+QD77MS16 包含一套完整的电气开发系统资料
  11. 计算机病毒是通过内存传播吗,计算机病毒的工作过程
  12. playwright之贴吧签到
  13. 【新年新气象_新年CSDN第一篇】斯特林数简介及应用
  14. iOS Game Center 登陆验证实现
  15. GSR引擎专用工具更新使用贴子
  16. Win10开始菜单打不开怎么办?
  17. NUIST第十一届程序设计竞赛
  18. 二分法(yxc讲解+模板整理)
  19. RabbitMQ 高级指南:从配置、使用到高可用集群搭建
  20. 【RV1126】移植kaldi实时语音识别

热门文章

  1. 歌 特 金 属 (Gothic Metal)
  2. Stirling公式
  3. 液晶显示器像素时钟信号DCLK
  4. cf 827div 4 G
  5. 找工作,除了海投简历和刷题,我还能做什么?
  6. 句句戳心,引其他行业共鸣 | “程序员年薪40W究竟多累、多苦?”
  7. 总结:系统什么时候调用构造和析构函数
  8. 计算机问题在线解答,信息安全技术题库:()用于对计算机或用户的身份进行鉴别与认证。...
  9. 宝宝20年1月31-2月5号一日三餐计划
  10. PO、VO、BO、DTO、POJO、DAO、DO之间的关系