论文笔记:Bilinear Attention Networks
更精简的论文学习笔记
1、摘要
多模态学习中的注意力网络提供了一种选择性地利用给定视觉信息的有效方法。然而,学习每一对多模态输入通道的注意力分布的计算成本是非常昂贵的。为了解决这个问题,共同注意力为每个模态建立了两个独立的注意分布,忽略了多模态输入之间的相互作用。在本文中,我们提出了双线性注意力网络(BAN),它可以找到双线性注意力分布来无缝地利用给定地视觉语言信息。BAN考虑两组输入通道之间的双线性交互,而低秩双线性池化提取每对通道地联合表示。此外,我们提出了一种多模态残差网络的变体,以有效地利用BAN的注意力图。在VQA 2.0和Flickr30k实体数据集上定量和定性地评估模型,表明BAN显著优于以前的方法,并在这两个数据集上达到了新的水平。
2、介绍
由于视觉和自然语言是人类互动的主要方式,对视觉和自然语言信息的理解和推理成为一个关键的挑战。例如,视觉问题回答涉及到视觉和语言的交叉问题。人们希望机器能够利用基于视觉的信息回答给定的问题,比如“谁戴着眼镜?”,“雨伞是不是倒了?”或者“床上有几个孩子?”。
由于这个原因,基于视觉注意力的模型已经成功地完成了多模态学习任务,在模型1定义的图像的空间地图中识别出选择性区域。此外,文本注意可以与视觉注意一起考虑。共同注意力网络的注意机制同时推断出每种模态的视觉和文本注意分布。除了部分图像区域外,共同注意网络还选择性地关注问题词。然而,共同注意忽略了单词和视觉区域之间的相互作用,以避免增加计算复杂度。
在本文中,我们将共同注意的思想扩展到双线性注意,双线性注意考虑了每一对多模态通道,如疑问词对和图像区域对。当给定问题涉及由多个词表示的多个视觉概念时,使用每个词的视觉注意分布比使用单个压缩注意分布的推理能更好地挖掘相关信息。
在这种背景下,我们提出了双线性注意力网络(BAN),在低秩双线性池化的基础上使用双线性注意力分布。BAN利用两组输入通道之间的双线性交互,而低秩双线性池化提取每对通道的联合表示。此外,提出了一种多模态残差网络(MRN)的变体,以有效地利用BAN的多个双线性注意图(通过连接被关注的特征来使用多个注意图)。由于所提出的残差学习方法利用残差求和而不是串联,因此可以有效地学习到参数高效和性能有效的八目BAN。关于双视图BAN的概述,参考图1.

上图中,双目BAN,采用目标检测特征和GRU隐藏向量两个多通道输入,得到双线性注意图和联合表示,供分类器使用。
提出双线性注意力网络(BAN)来学习和使用双线性注意力分布,在低秩双线性池化技术的基础上。
- 提出一种多模态残差网络(MRN)的变体,以有效地利用我们的模型生成的双线性注意图。与以往的工作不同,我们的方法成功地利用了多达8个注意图
- 最后,在一个大型且竞争激烈的VQA2.0数据集上验证该方法。模型达到了保持模型结构简单性的新水平。
- 此外,在Flick30k实体上的双线性注意图的视觉基础优于先前的方法,同时,利用多通道输入的处理推理速度提高了25.37%。
3、低秩双线性池化
低秩双线性池及其在注意力网络中的应用,它使用单通道输入(问题向量)结合其他多通道输入(图像特征)作为单通道中间表示(出席特征)。
(1)低秩双线性模型
前人提出了一种低秩双线性模型,降低双线性权重矩阵Wi的秩,使其具有规律性。为此,Wi被替换为两个较小的矩阵Ui和Vi的转置的乘法。因此,这种替换使得Wi的秩最大为d<=min(N,M).对于标量输出fi(省略偏置项而不失一般性)

。表示哈德曼乘积(逐元素乘法)
(2)低秩双线性池化
对于输出向量f,引入池化矩阵P

它允许U和V是二维张量,通过对于输出向量f引入向量P,显著减少参数的数量。
(3)单一注意力网络
注意力提供了一种有效的机制,通过选择性地利用给定的信息来减少输入通道。



如果G>1,则使用多个注意头,则:

最后,两个单通道输入x、y可通过其他低秩双线性池化获得联合表示用于分类器。
4、双线性注意力网络


5、相关工作

6、实验
(1)数据集
- VQA2.0
-评估指标考虑人与人之间的可变性,定义:
Accuracy(ans) = min(#humans that said ans/3,1) - Flickr30k Entities
它由31783张图像和244035个答案组成,将句子中的多个实体映射到图像的方框上,以指示它们之间的对应关系。任务是为每个实体定位相应的框。通过这种方式,文本信息的视觉基础得到了定量测量。根据评价指标,如果一个预测框与其中一个真实基准框的重叠区域IoU大于等于0.5,则给定实体的预测是正确的,这个指标叫做Recall@1。如果允许K个预测找到至少一个正确的,则称为Recall@K。我们通过Recall@1、5和10来比较最新的技术水平。如果检测器提出候选盒进行预测,则性能的上界取决于目标检测的性能。
(2)预处理
- 问题嵌入
对于VQA,我们使用Glove词嵌入和门控循环单元的输出来得到问题嵌入,将问题最多嵌入为14个单词向量,短于14个单词的向量用0补齐。对于Flickr30k,使用完整的句子长度,最大82。我们标记每个答案短语末尾的标记位置。然后,我们使用这些位置选择GRU输出通道的一个子集,使通道的数量等于句子中实体的数量。单词嵌入和GRU在训练中进行了微调。 - 图像特征
我们使用自底向上的注意力机制提取图像特征。这些特征是Faster R-CNN的输出,使用Visual Genome进行预训练。设置每张图的目标数目范围介于[10,100]。为避免填充部分对于模型的训练产生负面影响,在logits中的填充位置使用负无穷大的值,这样在应用softmax后,这些位置对应的概率值就会趋向于0。
(3)非线性和分类器
- 非线性

- 分类器
在VQA任务中,采用两层的多层感知机(MLP)作为用于生成最终联合表示的分类器,激活函数采用ReLU。分类器的输出数量由数据集中某个答案在唯一问题的最小出现次数确定,而这个答案在整个数据集中出现了9次,因此分类器的输出维度为3129。损失函数采用二元交叉熵。
对于Flickr30k Entities任务,使用双线性注意力图的输出,采用二元交叉熵作为损失函数。
(4)超参数设置和正则化策略

7、VQA结果和讨论
(1)量化结果
- 与最先进技术的比较
表格1中的第一行展示了2017年VQA挑战的获胜架构。BAN明显优于这个基准,并成功地利用了高达八个双线性注意力图,通过注意力的残差学习来改善性能。

如表3所示,BAN在性能上远远优于使用相同bottom-up注意力特征的最新模型。BAN-Glove使用300维的Glove单词嵌入和这些嵌入的语义封闭混合的串联形式(见附录A.1)。请注意,表3中的竞争性模型中可以找到类似的方法,它们对相同的600维词嵌入采用不同的初始化策略。BAN-Glove-Counter同时使用了先前的600维词嵌入和计数模块,该模块利用来自特征提取器的检测到的对象框的空间信息。计数机制的学习表示c ∈ R^(φ+1)经过线性投影并在应用ReLU后添加到联合表示中(见附录A.2中的方程15)

在表5(附录)中,我们与VQA Challenge 2017和2018的排行榜条目进行比较,我们在提交时获得了第一名(由于挑战条目不可见,我们的条目未显示在排行榜上)。

- 去其他注意力模型的比较
与其他注意力方法的比较。单一注意力与Kim等人的具有相似的架构,其中使用问题嵌入向量来计算图像的多个特征的注意力权重。协同注意力具有与Yu等人[39]相同的机制,类似于Lu等人,Xu和Saenko,其中多个问题嵌入通过自注意力机制组合为单个嵌入向量,然后应用单一视觉注意力。表2证实双线性注意力明显优于任何其他注意力方法。协同注意力略优于简单的单一注意力。

在图2a中,协同注意力(绿色)比其他方法更严重地受到过拟合的影响,而双线性注意力(蓝色)相比其他方法更加规范化。在图2b中,BAN是各种注意力方法中最有效的参数之一。请注意,四个glimpse的BAN比一个glimpse的BAN更节省参数的使用。

图2:(a)学习曲线。双线性注意力(bi-att)比单一注意力(uni-att)和协同注意力(co-att)更能抵御过拟合。 (b)参数数量的验证得分。误差栏表示在三个随机初始化模型之间的标准差,尽管对于超过15M个参数来说,它太小而难以注意到。 (c)用于评估的前N次glimpses(x轴)的剖析研究。 (d)四次glimpse BAN中每个注意力图的信息熵(y轴)。多个注意力图的熵趋于某些水平。
(2)注意力的残差学习
-
与其他方法的比较
在表2的第二部分中,注意力的残差学习明显优于其他方法,即sum和concatenation(concat)。然而,sum和concat之间的差异并不显著。请注意,concat的参数数量大于其他方法,因为分类器的输入尺寸增加了。


-
消融实验
残差学习的一个有趣特性是对于任意剖析都具有鲁棒性。为了了解相关贡献,我们观察进行增量消融时验证得分的学习曲线。首先,我们使用训练集训练{1,2,4,8,12}-glimpse模型。然后,我们使用前N个注意力图在验证集上评估模型。因此,中间表示fN直接馈送到分类器,而不是fG。如图2c所示,第一个glimpse的准确度增益最高,随着使用的glimpses数量的增加,增益逐渐减小。 -
注意力的熵
我们分析了四次glimpse BAN中注意力分布的信息熵。如图2d所示,验证集中每个注意力的平均熵趋于不同水平的值。这个结果在其他数量的glimpse模型中也可重复观察到。我们的猜测是,多个注意力图对模型的学习并不均等地做出相似的贡献,而是对多步骤注意力的残差学习有同样的贡献。我们认为这是一个新颖的观察,其中残差学习被用于堆叠的注意力网络。
(3)定性分析
图3展示了一个两次glimpse的BAN的可视化结果。问题是“滑板男子穿什么颜色的裤子”。问题中的关键词和内容词,例如“what”、“pants”、“guy”、“skateboarding”,以及图像中滑板者穿的裤子都受到了关注。请注意,框2(橙色)捕捉到了底部坐着的男子的裤子。

图3中的结果,即两次glimpse的BAN的双线性注意力图的可视化。图中左右两组分别表示第一个和第二个双线性注意力图,同时显示了可视化的图像。在每组中,右侧是对数缩放的注意力图,左侧是可视化的图像。通过边缘化确定的第一个注意力图中最显著的六个框在两个图像上都进行了可视化以进行比较。模型给出了正确的答案,即裤子的颜色是褐色。
8、Flickr30k的结果及讨论
为了检验双线性注意力图捕捉视觉-语言交互的能力,我们在Flickr30k Entities上进行了实验。我们的实验结果表明,在推理速度较高的情况下,BAN在短语定位任务上的性能远远超过了先前的最先进技术,差距达到了4.48%。
- 性能
在表4中,我们与其他先前的方法进行了比较。我们的双线性注意力图用于预测句子中短语实体的边界框,在Recall@1取得了69.69%的新水平。考虑到BAN没有使用任何额外的特征,如边界框大小、颜色、分割或姿态估计这个结果是显著的。请注意,Query-Adaptive RCNN和我们的现成对象检测器 都是基于 Faster RCNN 并在 Visual Genome上进行预训练的。与 Query-Adaptive RCNN 相比,我们对象检测器的参数是固定的,并且仅用于提取 10-100 个视觉特征和相应的边界框提议。

表4:Flickr30k Entities的测试分割结果。我们报告了我们三个随机初始化模型的平均性能(R@1的标准差为0.17)。给出了目标检测器断言的性能上限。请注意,Hinami和Satoh以及我们的检测器都基于 Faster RCNN,在 Visual Genome 数据集上进行了预训练。
- 类型
在表6中,我们报告了每种类型的Flickr30k Entities的结果。请注意,服装和身体部位的性能显著提高,分别达到了74.95%和47.23%。

- 速度
我们的BAN利用多通道输入实现了更快的推理速度。与先前的方法不同,BAN能够推断句子中的多个实体,这可以准备成一个多通道输入。因此,需要推断的前向传播次数显著减少。在我们的实验中,BAN每个实体花费0.67毫秒,而将单个实体作为示例的设置花费0.84毫秒,实现了25.37%的改进。我们强调这个性质在我们的模型中是新颖的,考虑了视觉-语言多通道输入之间的每种交互。
- 可视化
图4显示了来自Flickr30k Entities测试分割的三个例子。在图4a中,具有视觉属性的实体,例如黄色的网球服和白色的网球鞋,是正确的。然而,相对较小的对象(例如图4b中的香烟)和需要语义推断的实体(例如图4c中的男性指挥家)是不正确的。

图4:显示了来自Flickr30k实体测试分割的可视化示例。实线框表示预测的短语本地化,虚线框表示基本事实。如果有多个接地真值框,则显示最近的框进行调查。短语的每种颜色都与预测框和基本真值框的相应颜色相匹配。最好的彩色视图。
9、结论
BAN通过优雅地扩展单一注意力网络,利用双线性注意力图,其中使用低秩双线性池提取了多模态多通道输入的联合表示。尽管BAN考虑了每一对多模态输入通道,但由于BAN采用了矩阵链乘法进行高效计算,计算成本仍然保持在相同的数量级。所提出的注意力残差学习有效地利用了多达八个双线性注意力图,保持了中间特征的大小不变。我们相信我们的BAN为学习更丰富的多模态多通道输入的联合表示提供了新的机会,这在许多实际问题中都有应用。
相关文章:
论文笔记:Bilinear Attention Networks
更精简的论文学习笔记 1、摘要 多模态学习中的注意力网络提供了一种选择性地利用给定视觉信息的有效方法。然而,学习每一对多模态输入通道的注意力分布的计算成本是非常昂贵的。为了解决这个问题,共同注意力为每个模态建立了两个独立的注意分布&#x…...
2312llvm,01基本介绍
LLVM设计的核心是它的IR. 在把LLVMIR翻译特定汇编语言时,LLVM首先将程序变换为(DAG)有向无环图,以更易选指(SelectionDAG)容易,然后变换回三地址指令,来调度指令(MachineFunction). 为了看清驱动编译程序时,调用的后续工具,用-###命令行参数: $ clang -### hello.c -o hello…...
Spring之手写IoC
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…...
IDEA运行JSP启动后页面中文乱码
源代码截图: 运行结果截图: 在<head>标签内加入代码 <% page contentType"text/html; charsetgb2312"%> 重启服务器,问题已改善 ————————————————— 该文仅供学习以及参考,可做笔记收藏…...
Python 自动化之收发邮件(二)
发邮件之Windows进程监控 文章目录 发邮件之Windows进程监控前言一、基本内容二、基本结构三、库模块四、函数模块1.进程监控2.邮件发送 五、程序运行模块1.获取时间2.用户输入3.进程监控3.1进程启动发邮件3.2进程停止发邮件 总结 前言 上一篇简单写了一下如何进行邮件的收发操…...
RHEL8_Linux_Ansible常用模块的使用
本章主要介绍Ansible中最常见模块的使用 shell模块文件管理模块软件包管理模块服务管理模块磁盘管理模块用户管理模块防火墙管理模块 ansible的基本用法如下。 ansible 机器名 -m 模块x -a "模块的参数" 对被管理机器执行不同的操作,只需要调用不同的模块…...
2023 英特尔On技术创新大会直播 | AI 融合发展之旅
前言 2023 年的英特尔 On 技术创新大会中国站,主要聚焦最新一代增强 AI 能力的计算平台,深度讲解如何支持开放、多架构的软件方案,以赋能人工智能并推动其持续发展。 大会的目标之一是优化系统并赋能开发者,特别注重芯片增强技术…...
【JavaWeb】往浏览器打印一个hello world
上集:建一个web项目 第一步:建好Servlet类的文件 右键src,建一个class 就行 第二步:编代码 可以直接复制粘贴 用来测试的类 import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; //↓是注解࿰…...
技术探秘:在RISC Zero中验证FHE——由隐藏到证明:FHE验证的ZK路径(1)
1. 引言 开源代码实现见: https://github.com/hashcloak/fhe_risc0_zkvm(Rust)https://github.com/weikengchen/vfhe-profiled(Rust)https://github.com/l2iterative/vfhe0(Rust) L2IV Resea…...
Spring容器中scope为prototype类型Bean的回收机制
文章目录 一、背景二、AutowireCapableBeanFactory 方法 autowireBean 分析三、Spring 容器中 scope 为 prototype 类型 Bean 的回收机制四、总结 一、背景 最近做 DDD 实践时,遇到业务对象需要交给 Spring 管理才能做一些职责内事情。假设账号注册邮箱应用层代码流…...
Python生成器(python系列25)
前言:什么是生成器,他和迭代器的区别是什么?什么时生成器表达式,为什么和列表推导式那么像呢? 生成器: 定义:能够动态(循环一次,计算一次,返回一次…...
Vue项目搭建过程
Vue项目搭建过程 1、安装NodeJs 1.1 下载安装包 在 http://nodejs.cn/download/ 上下载64位安装包,然后进行安装,和普通软件的安装一样。 C:\Users\Administrator>node -v v16.13.1C:\Users\Administrator>npm -v 8.5.51.2 安装cnpm # 安装cn…...
系统分析师(软考)知识点整理(一)
第一章 信息 信息是不确定性的减少 xi: n个状态中的第i个状态p(xi):出现第i个状态的概率b: b一般取值为2 特征 #mermaid-svg-pvPkY9RE5GZIIIxl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-pvPkY9RE5GZIIIxl…...
2021年数维杯国际大学生数学建模D题2021年电影市场票房波动模型分析求解全过程文档及程序
2021年数维杯国际大学生数学建模 D题 2021年电影市场票房波动模型分析 原题再现: 1、电影票房预测建模背景 随着人们文化消费需求的增加,电影院和银幕的数量不断增加,我国的电影产业不断呈现出繁荣景象。2019年,全国电影票房…...
Kubernetes 的用法和解析 -- 5
一.企业级镜像仓库Harbo 准备:另起一台新服务器,并配置docker yum源,安装docker 和 docker-compose 1.1 上传harbor安装包并安装 [rootharbor ~]# tar xf harbor-offline-installer-v2.5.3.tgz [rootharbor ~]# cp harbor.yml.tmpl harbor…...
HTML选择题试题——附答案
单选题 HTML的缩写是什么? A) Hyper Tool Markup LanguageB) Hyperlinks and Text Markup LanguageC) Hyper Text Markup LanguageD) Home Tool Markup Language 下列哪个标签用于定义文档的主体内容? A) <head>B) <body>C) <title>D)…...
html之CSS的高级选择器应用
文章目录 一、CSS高级选择器有哪些呢?二、高级选择器的应用1、层次选择器后代选择器子选择器相邻兄弟选择器通用兄弟选择器 2、结构伪类选择器(不常用)3、属性选择器E[attr]E[attrval]E[attr^val]E[attr$val]E[attr*val] 一、CSS高级选择器有…...
elementui+ <el-date-picker type=“datetime“/>时间组件的当前时间的180天之内的禁止选择处理
需求1如下:当前时间180天不可选择,180天之后可以选择,之前的时间都禁止选择 页面代码如下: <el-date-picker v-model"temp.expire_time" :picker-options"pickerOption" type"datetime" placeh…...
全网好听的BGM都在这里下载,赶紧收藏好了
无论是自媒体创作者还是从事视频剪辑工作的朋友,对于BGM的选择都很重要,一首适配的BGM能大大提升你作品的质量,还能让作品更优秀。哪里才能找到好听又免费的BGM?下面推荐几个我多年收藏的6个音效、音频素材网站,赶紧收…...
Spark编程实验一:Spark和Hadoop的安装使用
目录 一、目的与要求 二、实验内容 三、实验步骤 1、安装Hadoop和Spark 2、HDFS常用操作 3、Spark读取文件系统的数据 四、结果分析与实验体会 一、目的与要求 1、掌握在Linux虚拟机中安装Hadoop和Spark的方法; 2、熟悉HDFS的基本使用方法; 3、掌…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
