2021-03-27

参考:https://zhuanlan.zhihu.com/p/43493999

NLP中的Attention 原理和源码的解析

1.核心思想

Attention 的思想如同它的名字一样,就是“注意力”,在预测结果时把注意力放在不同的特征上。
举个例子,比如在预测“阿诺今天做的早餐真好吃“的情感时,如果之预测正向还是负向,那真正影响结果的只有”真好吃“ 这三个字,前面说的”阿诺今天做的早餐“基本没什么用, 如果是直接对token embedding 进行平均求句子表示会引入不少的噪声。所以引入Attention机制,让我们可以根据任务目标赋予输入token的权重,理想情况下前半句的权重0.0,后三个字则是“0.3,0.3,0.3”,在计算句子表示时就变成了:
最终表示 = 0.01x阿 + 0.01x诺 + 0.01x今 + 0.01x天 + 0.01x + 0.01x的 + 0.01x早 + 0.01x餐 + 0.3x真 + 0.3x好 + 0.3x吃
怎么用知道了,那核心就在于这个权重怎么计算。通常我们会将输入分为query(Q), key(K), value(V)三种:

  • 先用Q和K计算权重α,会用softmax对权重归一化:α= softmax(f(QK))

  • 再用权重对结果加权:out= ∑α_i *v_i在这里插入图片描述上文中QK的具体运算f有多种方法,常见的有加性attention和有乘性attention:

  • f(Q,K)= tanh⁡(W_1Q+W_2K)

  • f(Q,K)=QK^T
    再深入理解下去,这种机制其实做的是寻址(addressing),也就是模仿中央处理器与存储交互的方式将存储的内容读出来,可以看一下李宏毅老师的课程(http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLSD15_2.html)

2.原理解析

目前Attention机制在NLU和NLG中都有用到,也是大热Transformer的核心。本文主要讲一下attention在NLP中最早的应用Seq2seq+attention。
针对Seq2seq翻译来说,rnn-based model差不多是图1的样子:
在这里插入图片描述

而比较基础的加入attention与rnn结合的model是下面的样子(也叫soft attention):
在这里插入图片描述

其中h^i是编码器每个step的输出, z^j是解码器每个step的输出,计算步骤是这样的:
先对输入进行编码,得到[h^1 〖,h〗2,h3,h^4]
开始解码了,先用固定的start token也就是z0作为Q,去和每个hi(同时作为K和V)去计算attention, 得到加权的c^0
用c0作为解码的RNN输入(同时还有上一步的z0),得到z^1并预测出第一个词是machine
再继续预测的话,用z^1作为Q去求attention:
在这里插入图片描述

思想就是根据当前解码“状态”判断输入序列的权重分布

3. 模型分类

3.1 Soft/Hard Attention

soft attention:传统attention,可被嵌入到模型中去进行训练并传播梯度
hard attention:不计算所有输出,依据概率对encoder的输出采样,在反向传播时需采用蒙特卡洛进行梯度估计

3.2 Global/Local Attention

global attention:传统attention,对所有encoder输出进行计算
local attention:介于soft和hard之间,会预测一个位置并选取一个窗口进行计算

3.3 Self Attention

传统attention是计算Q和K之间的依赖关系,而self attention则分别计算Q和K自身的依赖关系。具体的详解会在下篇文章给出~

4. 优缺点

优点:

  • 在输出序列与输入序列“顺序”不同的情况下表现较好,如翻译、阅读理解

  • 相比RNN可以编码更长的序列信息

缺点:

  • 对序列顺序不敏感

  • 通常和RNN结合使用,不能并行化

参考:

https://zhuanlan.zhihu.com/p/43493999

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值