注意力机制(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
本文来自云栖社区合作伙伴“ 专知”,了解相关信息可以关注“ 专知”。
相关文章
|
机器学习/深度学习 搜索推荐 自然语言处理
KDD 2019 | 基于知识的个性化推荐理由生成解析
当前电商场景之下,单纯的商品推荐已不足以满足用户需求,基于内容的推荐应运而生。那么其中的关键问题就是我们要为推荐的商品产出优质的推荐理由,从而可以:帮助消费者做出选择;开拓用户对商品的兴趣;引导多种产品以提高多样性。
3561 0
|
11月前
|
机器学习/深度学习 自然语言处理 并行计算
【深度学习】Attention的原理、分类及实现
文章详细介绍了注意力机制(Attention)的原理、不同类型的分类以及如何在Keras中实现Attention。文章涵盖了Attention的基本概念、计算区域、所用信息、结构层次等方面,并提供了实现示例。
1022 0
|
机器学习/深度学习 自然语言处理 数据可视化
NLP随笔(三)
本篇介绍深度学习在自然语言处理(NLP)中的应用,从词向量开始,到最新最强大的BERT等预训练模型,梗概性的介绍了深度学习近20年在NLP中的一些重大的进展
229 0
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch快餐教程2019 (1) - 从Transformer说起
# PyTorch快餐教程2019 (1) - 从Transformer说起 深度学习已经从热门技能向必备技能方向发展。然而,技术发展的道路并不是直线上升的,并不是说掌握了全连接网络、卷积网络和循环神经网络就可以暂时休息了。至少如果想做自然语言处理的话并非如此。 2017年,Google Brain的Ashish Vaswani等人发表了《Attention is all you ne
5470 0
|
机器学习/深度学习 自然语言处理 Python
独家 | Python利用深度学习进行文本摘要的综合指南(附教程)
本文介绍了如何利用seq2seq来建立一个文本摘要模型,以及其中的注意力机制。并利用Keras搭建编写了一个完整的模型代码。
2140 0
|
并行计算 异构计算 算法框架/工具
独家|让你的GPU为深度学习做好准备(附代码)
本文讲述了使用NVIDIA官方工具搭建基于GPU的TensorFlow平台的教程。
1793 0
|
机器学习/深度学习
Attention模型
1、注意力模型的直观理解 我们以前用过这种Seq2Seq的编码解码架构(a Encoder-Decoder architecture)来完成机器翻译的任务。
1440 0
|
机器学习/深度学习 自然语言处理 算法
深度学习(11):序列模型
深度学习(11):序列模型 2018-03-09 采用循环神经网络能够建立各种各样的序列模型(Sequence Model)。加入一些注意力机制,能够使这些序列模型更加强大。 Seq2Seq模型 2014年Cho等人在论文[Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation]中首次提出了Seq2Seq(Sequence-to-Sequence)模型。
2286 0
|
机器学习/深度学习 自然语言处理 算法
AI小编问世!阿里智能写手核心技术首次公开!
内容化已经成为淘宝近几年发展的重点,我们可以在手机淘宝APP(以下简称手淘)上看到很多不同的内容形式和内容型导购产品,例如,“有好货”中的以单个商品为主体的富文本内容,“必买清单”中的清单,即围绕一个主题来组织文本和商品的长图文型内容,等等。
2450 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问