attention机制_干货 | Attention注意力机制超全综述

点击上方,选择星标置顶,每天给你送干货c384dae958a95fc9585b5492e5f3e2a2.png

阅读大概需要12分钟1b6045bb2932f514787d96ac275eecb7.png

跟随小博主,每天进步一丢丢737af54018366e8fb2e13c36ba3526fa.png

作者:CHEONG

来自:机器学习与自然语言处理

一、Attention机制原理理解 Attention 机制通俗的说,对于某个时刻的输出y,它在输入x上各个部分上的注意力,这里的注意力也就是权重,即输入x的各个部分对某时刻输入y贡献的权重,在此基础上我们先来简单理解一下Transformer模型中提到的self-attention和context-attention (1) Self-attention :输入序列即是输出序列,即计算自身的attention,计算序列对其本身的attention权重 (2) Context-attention :即是encoder-decoderattention,如在机器翻译模型中即计算encoder序列中的每个词对decoder序列各个词的attention权重 二、Attention计算方式 bb34ed51597b1839a7b743f5bde52904.png 1、Content-base attention 论文:Neural Turing Machines 论文链接:https://arxiv.org/pdf/1410.5401.pdf attention相似度的度量使用的是余弦相似度: 143e9b40772e3b7b50ec8d6ee409e654.png 2、Additive attention 论文:Neural Machine Translation By JointlyLearning to Align and Translate 论文链接:https://arxiv.org/pdf/1409.0473.pdf 下面有对这篇论文中的attention实现过程详细介绍,这里不做介绍 3、Location-Baseattention、General attention、Dot-Productattention 论文 :Effective Approaches toAttention-based Neural Machine Translation 论文链接: https://arxiv.org/pdf/1508.04025.pdf 下面有对这篇论文中的attention实现过程详细介绍,这里不做介绍 4、ScaledDot-Product attention 论文: Attention is all you need 论文链接: https://arxiv.org/pdf/1706.03762.pdf 大家熟悉的Transformer中提到的Attention机制,下面有介绍 三、Attention发展历程及演变 1、seq2seq中引入attention机制 首先attention机制常用在seq2seq模型中,下图一是传统的seq2seq,输出y对输入序列x1,x2,x3...没有区分,没有辨识度,下图二中我们引入了attention机制,每个输出的词y受输入X1,X2,X3...影响的权重不同,这个权重便是由Attention计算,因此可以把Attention机制看成注意力分配系数,计算输入每一项对输出权重影响大小 d634cc468844ee4bff96a13e769ba1c9.png (Learning Phrase Representations using RNN Encoder–Decoderfor Statistical Machine Translation论文截图) 5f9fb104acefc0d912d057adbf3a227e.png (NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN ANDTRANSLATE论文 截 图 ) 介绍一下上图中attention实现过程 (1)  首先利用双向RNN结构得到隐层状态(h1, h2, …, hn) (2)  如当前已经decoder到隐层St-1,接下来计算每一个输入位置hj对当前位置i的影响 7c329f70748a137e821c5f3663dd0bee.png 这里attention的计算方式可以有很多种,点乘形式、加权点乘形式或求和形式 (3)  对eij进行softmax将其normalization得到attention权重分布,如下所示 7d82481e4dcb5f667a9176a947f4d544.png (4)  利用aij进行加权求和得到相应的context vector 69e485a0b4be2119d0db03ae64d3fdaa.png (5)  计算最终输出 15e9381e1c293ab6c17b35a31a1b8f1d.png 6ee84740f3289c36026ac17deb383656.png 2、SoftAttention和Hard Attention (Show, Attend and Tell: Neural Image Caption Generation withVisual Attention论文提出) Softatttention 是参数化的,是可导的可嵌入到模型中直接训练,上述seq2seq中的即是soft attention;Hard attention是一个随机的过程,为了实现梯度的反向传播,需要采用蒙特卡洛采样的方法来估计模块的梯度,目前更多的研究和应用还是更倾向于使用Soft Attention,因为其可以直接求导,进行梯度反向传播,大致了解一下即可 3、GlobalAttention和Local Attention ab8e2059d92c1de290c1e11373de2a15.png ( EffectiveApproaches to Attention-based Neural Machine Translation 截 图 ) 上左图是Global Attention,右图是Local Attention 全局Attention和局部attention存在共同之处,例如在翻译模型的解码阶段都是将LSTM的顶层隐藏状态ht作为输入,目标是活得一个上下文向量ct来捕获源信息帮助预测当前单词,两种方式不同便在于对上下文向量ct的获取方式不同,但其后步骤是共享的,即首先由上下文信息和隐藏层信息获得注意力隐层状态: d0ce04ed4c3680f0e11be993031757f3.png 然后再通过注意力隐层状态通过softmax获得预测分布 2211d3f8f72ec11cb565a74a3de70e0f.png 下面介 绍 一下全局Attention和局部Attention 对 上下文向量ct的 获 取 (1) Global Attention 全局Attention在 计 算上下文向量ct 时 考 虑编码 器所有的 隐层 状 态 ,attention向量是通 过比较当前目标隐藏状态ht和每个源隐藏状态hs得到: 682e990fd41805547c1a3158b51f1454.png ht 和hs之 间 的 计 算方式可以采用如下几种: b51fd4e2bbd2b269b4fce4a4d46c9ff9.png 当前也可以通 过 基于location的方式 计 算attention得分: adefdac2ccbc5ca15685db04f9a1abb9.png (2) Local Attention 全局Attention的缺点在于对每个目标单词必须关注源序列中的所有单词,消耗资源因此局部Attention的思想是对每个目标单词只选择一部分源单词进行预测上下文向量ct, 具体来说,在时刻t 模型首先为每个目标单词生成一个对齐位置pt。上下文向量ct 通过窗口[pt -D,pt +D] 内的源隐藏状态集合加权平均计算得到;D 根据经验选择。 8   与全局方法不同,局部对齐向量at 是固定维度的,即∈ ℝ 2D+1 1eeb5866875ac46797d097719321b72c.png 622aef9325d7a62a8be37708bb0f018d.png 4、Transformer中Attention 简单说一下Transformer中使用的Scaled Dot-Product Attention和Multi-Head  Attention,详细 内容可参见博主之前写的文章:Transformer模型细节理解及Tensorflow实现 ,Transformer 模型的 PyTorch 实现 a85c28388cc0251fd317a639c3ac93d8.png ( Attention is all your need论文截图 ) ScaledDot-Product Attention :通过Q,K矩阵计算矩阵V的权重系数 10243da3bc6e4b5f7d5191171878d3fa.png Multi-HeadAttention :多头注意力是将Q,K,V通过一个线性映射成h个Q,K,V,然后每个都计算Scaled Dot-Product Attention,最后再合起来,Multi-HeadAttention目的还是对特征进行更全面的抽取   5、Attention组合使用相关论文 (1) Hierarchical Attention Networks for Document Classification (2) Attention-over-Attention Neural Networks for ReadingComprehension (3) Multi-step Attention: Convolutional Sequence to SequenceLearning (4) Multi-dimensional Attention: Coupled Multi-Layer Attentionsfor Co-Extraction of Aspect and  Opinion Terms 6、Attention应用领域 (1) 机器翻译 (2) 蕴含关系推理 (3) 文本摘要生成 四、Attention实例分析 首先看在Encoder-Decoder中引入Attention机制,如机器翻译 f3f70bd9cfeb2a65f4e6ffc17b0d5cd8.png 14d74f845b9df151ff64cda4ed6d93e4.png 每个输出的词Y受输入X1,X2,X3,X4影响的权重不同,这个权重便是由Attention计算 因此可以把Attention机制看成注意力分配系数,计算输入每一项对输出权重影响大小   下面一张图给出了Attention机制在机器翻译中实际权重计算过程 40dfcb4e4317fac33863dd85f0c46f31.png 首先由原始数据经过矩阵变化得到Q、K、V向量,如下图 fb2e67704357348b2407f8e0ef539854.png 以单词Thinking为例,先用Thinking的q向量和所有词的k向量相乘,使用下面公式: 910f37d0fdfe00a11dd0ebbd6a5841ab.png 这种得到每个单词对单词Thinking的贡献权重,然后再用得到的权重和每个单词的向量v相乘,得到最终Thinking向量的输出 14756ff921fc10a47d870264d477d603.png Attention中缩放的目的是为了加速神经网络的计算 五、Attention机制实现分析 1、HierarchicalAttention Network中的注意力机制实现 4a4b79bde663785a9b25801291c22bb9.png HAN 结构包含了Word encoder、Word attention、Sentence encoder、Sentence attention,其中有word attention和sentence attention 解释: h 是隐层GRU的输出,设置w,b,us三个随机变量,先一个全连接变换经过激活函数tanh得到ui,然后在计算us和ui相乘,计算softmax输出a,最后得到权重a之后再和h相乘,得到最终经过注意力机制的输出v,下左图是word attention计算公式,下右图是sentece attention计算公式 a797d3bcb8ac4e359230e7573ae3c4c3.png HAN中Attention实现核心代码如下: 8650e5a576f3005b1000eeefda280669.png attention 中mask的作用,下面看一下mask一种实现 d78e0ce7313f8a361ee791e55a46351e.png 通过将超过seq_length的部分mask称False,然后将mask为False的部分弄成无穷小,这样在反向传播时无穷小倒数为0,防止消息逆向传播 下面也是mask的一种实现方式,下面通过add和mul两种方式实现上面所说的mask 8565404d704baf18c12995f14cc2c670.png 2 、Transformer中Multi-Head Attention实现 可参见之前的文章:Transformer模型细节理解及Tensorflow实现 推荐阅读: 【一分钟论文】 NAACL2019-使用感知句法词表示的句法增强神经机器翻译 【一分钟论文】Semi-supervised Sequence Learning半监督序列学习 详解Transition-based Dependency parser基于转移的依存句法解析器 经验 | 初入NLP领域的一些小建议 学术 | 如何写一篇合格的NLP论文 干货 | 那些高产的学者都是怎样工作的? 一个简单有效的联合模型 近年来NLP在法律领域的相关研究工作

a5c19ee1a6b4f21c763fe366d396b79c.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值