美文网首页
Attention机制

Attention机制

作者: 巴拉巴拉_9515 | 来源:发表于2022-10-22 16:30 被阅读0次

1、引入

英语长句子优先找出主谓宾,人像油画会先看眼睛,...。人在观察事物的时候会抓住重点,所以想让机器也具备这种“抓住重点”的能力。

最早用于机器翻译场景。使用固定大小(fixed-size)的representation去概括非常长的句子的所有语言义细节是非常困难的。
对于一个(RNN\LSTM...)深层网络模型,如何让它知道什么是重点?什么没那么重要?抓住重点可以降低困难。

那么如何实现“抓住重点”的目的呢?

2、什么是Attention?

Transformer中关于Attention的解释,写成公式大概是:
Attention(Q,K,V) = \alpha(Q,K)V =softmax(f(Q,K))V
其中\alpha为Attention weight。

原文: An Attention function can be described as mapping a query and a set of key-value pairs to an output, where the query, keys, values, and output are all vectors. The output is computed as a weighted sum of the values, where the weight assigned to each value is computed by a compatibility function of the query with the corresponding key.

翻译: Attention可以描述为将query和一组key-vlaue映射成一个output,其中query,key,value和output都是向量。output的计算为values的加权总和,其中分配给每个value的权重通过query与相应key的兼容函数计算。

补充

输入:K,Q,V
涉及函数: compatibility function f,softmax()
计算步骤:
【步骤一】基于KQ计算两个向量相似程度;
【步骤二】softmax函数可以将各种输入值压缩到0-1的范围上,这样就可以得到对Values关注应该分布的注意力强弱了。
【步骤三】乘上values得到具有关注信息的新的向量output。

Attention本身概念并不复杂,就是基于query和key计算一个权重,然后对value重新赋值。

2.1、f是怎么?

函数f(Q,K)旨在获得query和key的相似程度,有很多的计算方法

不过最出名的是Scaled Dot-Product方法,对QK做内积计算,然后乘上缩放因子\frac{1}{\sqrt{d_k}},其中d_k是query和key的维度。
f(Q,K) = \frac{QK^T}{\sqrt{d_k}}

讲到Attention,常见到下图,指的就是Scaled Dot-Product Attention,特指f(Q,K)是Scaled Dot-Product的Attention,来源与Transformer论文。

2.2、QKV是什么东西?

在不同场景下QKV是不一样的。

2.2.1、机器翻译场景

Attention机制最早在机器翻译的场景中出现,引入Attention后提升了长文本的翻译效果。

随着序列长度的增长,加了Attention的翻译模型仍旧保持较高的Bleu得分。


机器翻译采用seq2seq的结构,一个encoder,一个decoder。编码器对每次词的输出作为key和value,解码器对上一个词的输出作为query。Attention基于key和query计算权重值,输出对原本的value赋予权重后的结果。

进一步解释:比如把法语翻译成英语,每个词作为一个输入,经过embedding+双向RNN编码处理,输出的值作为Attention需要的key和value。query取的是上一个词翻译的结果。
Attention操作后,改变了每个词的重要性。比如翻译出第一个词“Jane”,原本每个法语词对翻译出“Jane”的重要性都是一样的,加入Attention之后,给法语“Jane”更大的权重,使得翻译容易进行。

所以在翻译场景中,key和value其实是同一个东西,是输入词经过编码处理后的输出;query是上一个词经过解码后的结果。

2.2.2、Transformer

Transformer里有三个相关的Attention层。
1,2的Key,Value,Query,是一根线过来复制三下的,用的是同一个东西;
3的query来自上一个解码器层,keys和values来自编码器的输出。

3、常见Attention

3.1、self-Attention

传统的Attention是基于source端和target端的隐变量计算Attention,得到的结果是源端的每个词与目标端每个词之间的依赖关系。
self-Attention,顾名思义,self就是自己,关注自身的注意力,source端和target端都是自身,关注自身的依赖关系。

虽然self-Attention的query,key,value都是同一个来源I,但还是有点差异的,引入了三个对应的权重W^q, W^k, W^v,由模型训练得到。


小结:self-Attention就是query,key-value都是同个东西,研究自身内部的关系

3.2、Multi-Head Attention

Multi-Head Attention并行计算多个attention,再把输出的结果合并起来。

MultiHead(Q,K,V) = Concat(head_1,...,head_h)W^O

其中head_i = Attention(Q, K, V)
当这个attention是self-attention时,head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)

3.3、其他Attention

基于query,key获得attention matrix,当句子很长的时候,N*N的计算量会很大的。

所以要想办法把这个矩阵的计算复杂度降低。提出了很多杂七杂八的attention,比如Local Attention,stride Attention,Global Attention,...,反正都是想办法把矩阵计算的复杂度降低[4]

4、其他

4.1、position信息

Transformer是完全使用Attention的,没有用之前的循环或者卷积。但Attention是没有记录位置信息的,所以需要有位置信息。

所以在Transformer的框架图里会有Positional Encoding。

4.2、Attention代码实现

【暂放】更多探索

# Scaled Dot-product attention layer
tf.keras.layers.Attention(use_scale=True, score_mode="dot", **kwargs)

4.3、补充

知名的Transformer(变形金刚)论文全名是《Transformer:Attention is all you need》,Transformer框架中涉及self-attention,multi-head attention,masked multi-head attention。

然后之后就出现了很多“xxx is all you need”的论文。

参考资料

[1] 李沐,66 使用注意力机制的seq2seq【动手学深度学习v2】
[2] 吴恩达,P170 注意力模型直观理解
[3] 论文, Trandsformer:Attention is all you need
[4] 李宏毅, P34 各种self-attetion

相关文章

  • Attention机制概念整理

    深度学习中的注意力机制(Attention Macheanism): Attention机制较为广泛的应用是为了解...

  • 理论汇总

    1 多任务学习 (1)多任务学习在推荐算法中的应用 2 attention机制 (1)Attention机制在深度...

  • attention机制

    当前的embedding向量cur_f1 和 历史的embedding向量his_f1 计算相似性; 对相似性权重...

  • Attention 机制

    Attention 机制 人类视觉系统会对被观察对象的不同地方,分配不同的注意力,而 Attention 机制正是...

  • Attention 机制

    记录一下自己所理解的 Attention 机制:首先先从 Encoder-Decoder 框架来宏观角度的看 At...

  • Attention机制

    用Attention机制的原因是考虑到RNN(或者LSTM,GRU等)的计算限制为是顺序的,也就是说RNN相关算法...

  • Attention机制

    历史 2014年google mind团队,在RNN模型上使用了attention机制来进行图像分类,然后取得了很...

  • Attention 机制

    An Attention Function can be described as mapping a query...

  • attention机制

    1. 增强型attention算法的理解 上图中的softmax(QT)为attention权重,具体过程为:  ...

  • attention机制

    虽然一直在改进ABCNN,但是对于attention总是看了又忘,忘了又看,今天总结一下(方便自己日后复习即可)。...

网友评论

      本文标题:Attention机制

      本文链接:https://www.haomeiwen.com/subject/lsvuortx.html