注意力机制(Attention)最新综述论文及相关源码

简介:

简介

在下图中,左边是传统的Seq2Seq模型(将序列编码,然后解码为序列),可以看出,这是一个传统的基于LSTM模型,在解码器Decoder中,某一时间戳的隐藏状态只依赖于当前时间戳的隐藏状态和上一时间戳的输出。右边是基于Attention的Seq2Seq模型,Decoder的输出还需要依赖于一个上下文特征(c),这个上下文特征是通过Encoder中所有时间戳的隐藏状态的加权平均得到的,加权平均所使用的权值,就是当前时间戳和Encoder中每一时间戳的Attention Score(a)。

1eaed94e5161daafebd64db1836ede781b82bd4b

Attention的一般形式

下面的公式是Attention的基础形式(Basic Attention),其中u是基于当前任务的匹配特征向量,用于和上下文进行交互。vi是时序中某个时间戳的特征向量,ei是未归一化的Attention Score,ai是归一化的Attention Score,c是基于Attention Score和特征序列v计算出的当前时间戳的上下文特征。

6b3ed9b29adb9f09809a0787fb8ef4c0080feb3d

在大多数情况下,ei可以通过下面几种方法计算:

642ea48765322712652ca03e0a02a93de7ee7b68

在实际应用中,除了基础的Attention,Attention还有多种变式,下面我们来介绍一些常见的变式:

变式——Multi-dimensional Attention

对于每个u,Basic Attention对于每个vi都会生成一个Attention Score ai,即每个u会对应一个1-D的Attention Score向量。而Multi-dimensional Attention会产生更高维度的Attention矩阵,旨在获取不同特征空间中的Attention特征,例如2D Attention的一些形式如下:

d9f975b1337af11c3830ad19c55ac7aea72319c4

变式——Hierarchical Attention

一些Attention算法同时考虑不同语义层级之间的Attention,例如下面的模型先后利用词级别和句子级别的Attention来获得更好的特征:

811f085d42f85db1c1cd6371a8b36625a4dc22b1

变式——Self Attention

将上面公式中的u替换为上下文序列中的vi,即为Self Attention。在NLP中Self Attention可以获取句子中词之间的一些依存关系。另外在一些任务中,一个词的语义与上下文密切相关,例如在下面两个句子中,bank分别指银行和河岸,要准确判断bank当前的语义,可以通过句子的上下文来判断。

I arrived at the bank after crossing the street.

I arrived at the bank after crossing the river

变式——Memory-based Attention

Memory-based Attention的形式如下,其中{(ki, vi)}被称作Memory,这里Memory其实是输入的同义词。尤其,当ki和vi相等时,Memory-based Attention和Basic Attention是相同的。

669d8903c0534b9fd2739fb503d29edbfaa93242

例如在QA问题中,Memory-based Attention可以通过迭代地更新Memory来将注意力转移到答案所在的位置。

8967659abbd8d73fe2a4b3d9aa94841720560d00

Attention的评价

定量的Attention的评价可以通过intrinsic和extrinsic两种方式。Intrinsic基于标注的Alignment数据进行判断,因此需要大量的人工标注。Extrinsic方式比较简单,即直接比较模型在具体任务上的效果,但extrinsic评价方式的问题在于很难知道效果的提升是否是由Attention机制所带来的。

定量的评价一般通过可视化热力图来实现:

dbe0352f36f48726c0fcbaa7fb9200402a23867f

相关Attention代码

 ●  《Neural Machine Translation by Jointly Learning to Align and Translate》:https://github.com/tensorflow/nmt
 ●  《Hierarchical Attention Networks for Document Classification》:https://github.com/richliao/textClassifier
 ●  《Coupled Multi-Layer Attentions for Co-Extraction of Aspect and Opinion Terms》:https://github.com/happywwy/Coupled-Multi-layer-Attentions
 ●  《Attention Is All You Need》:https://github.com/Kyubyong/transformer
 ●  《End-To-End Memory Networks》:https://github.com/facebook/MemNN

原文发布时间为:2018-11-16
本文来自云栖社区合作伙伴“ 专知”,了解相关信息可以关注“ 专知”。
相关文章
|
5月前
|
机器学习/深度学习 计算机视觉
【YOLOv10改进-注意力机制】 MSDA:多尺度空洞注意力 (论文笔记+引入代码)
YOLO目标检测专栏探讨了ViT的改进,提出DilateFormer,它结合多尺度扩张注意力(MSDA)来平衡计算效率和关注域大小。MSDA利用局部稀疏交互减少冗余,通过不同头部的扩张率捕获多尺度特征。DilateFormer在保持高性能的同时,计算成本降低70%,在ImageNet-1K、COCO和ADE20K任务上取得领先结果。YOLOv8引入了MultiDilatelocalAttention模块,用于实现膨胀注意力。更多详情及配置见相关链接。
|
6月前
|
机器学习/深度学习 编解码 算法
【YOLOv8改进】Polarized Self-Attention: 极化自注意力 (论文笔记+引入代码)
该专栏专注于YOLO目标检测算法的创新改进和实战应用,包括卷积、主干网络、注意力机制和检测头的改进。作者提出了一种名为极化自注意(PSA)块,结合极化过滤和增强功能,提高像素级回归任务的性能,如关键点估计和分割。PSA通过保持高分辨率和利用通道及空间注意力,减少了信息损失并适应非线性输出分布。实验证明,PSA能提升标准基线和最新技术1-4个百分点。代码示例展示了如何在YOLOv8中实现PSA模块。更多详细信息和配置可在提供的链接中找到。
|
6月前
|
机器学习/深度学习 编解码 计算机视觉
【YOLOv8改进】D-LKA Attention:可变形大核注意力 (论文笔记+引入代码)
YOLO目标检测专栏探讨了Transformer在医学图像分割的进展,但计算需求限制了模型的深度和分辨率。为此,提出了可变形大核注意力(D-LKA Attention),它使用大卷积核捕捉上下文信息,通过可变形卷积适应数据模式变化。D-LKA Net结合2D和3D版本的D-LKA Attention,提升了医学分割性能。YOLOv8引入了可变形卷积层以增强目标检测的准确性。相关代码和任务配置可在作者博客找到。
|
6月前
|
机器学习/深度学习 编解码 PyTorch
【YOLOv8改进】HAT(Hybrid Attention Transformer,)混合注意力机制 (论文笔记+引入代码)
YOLO目标检测专栏介绍了YOLO系列的改进方法和实战应用,包括卷积、主干网络、注意力机制和检测头的创新。提出的Hybrid Attention Transformer (HAT)结合通道注意力和窗口自注意力,激活更多像素以提升图像超分辨率效果。通过交叉窗口信息聚合和同任务预训练策略,HAT优化了Transformer在低级视觉任务中的性能。实验显示,HAT在图像超分辨率任务上显著优于现有方法。模型结构包含浅层和深层特征提取以及图像重建阶段。此外,提供了HAT模型的PyTorch实现代码。更多详细配置和任务说明可参考相关链接。
|
7月前
|
计算机视觉
【YOLOv8改进】 MSDA:多尺度空洞注意力 (论文笔记+引入代码)
该文介绍了DilateFormer,一种新提出的视觉变换器,它在计算效率和关注接受域之间取得平衡。通过分析ViTs,发现浅层的局部性和稀疏性,提出了多尺度扩张注意力(MSDA),用于局部、稀疏的块交互。DilateFormer结合MSDA块和全局多头自注意力块,形成金字塔架构,实现各视觉任务的顶尖性能。与现有最佳模型相比,在ImageNet-1K分类任务上,DilateFormer性能相当但计算成本降低70%,同时在COCO检测/分割和ADE20K语义分割任务上表现优秀。文章还展示了MSDA的创新点,包括多尺度聚合、局部稀疏交互和减少自注意力冗余。此外,
|
7月前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:注意力机制(Attention)
使用Python实现深度学习模型:注意力机制(Attention)
373 0
使用Python实现深度学习模型:注意力机制(Attention)
|
机器学习/深度学习 自然语言处理 并行计算
【Transformer系列(3)】 《Attention Is All You Need》论文超详细解读(翻译+精读)
【Transformer系列(3)】 《Attention Is All You Need》论文超详细解读(翻译+精读)
1439 0
【Transformer系列(3)】 《Attention Is All You Need》论文超详细解读(翻译+精读)
|
机器学习/深度学习 Web App开发 数据挖掘
经典神经网络论文超详细解读(七)——SENet(注意力机制)学习笔记(翻译+精读+代码复现)
经典神经网络论文超详细解读(七)——SENet(注意力机制)学习笔记(翻译+精读+代码复现)
2521 1
经典神经网络论文超详细解读(七)——SENet(注意力机制)学习笔记(翻译+精读+代码复现)
|
机器学习/深度学习 人工智能 自然语言处理
解码注意力Attention机制:从技术解析到PyTorch实战
解码注意力Attention机制:从技术解析到PyTorch实战
672 0
|
机器学习/深度学习 自然语言处理 数据可视化
图解transformer中的自注意力机制
本文将将介绍注意力的概念从何而来,它是如何工作的以及它的简单的实现。
308 0