目前主流的attention方法都有哪些?
目前主流的attention方法都有哪些? - JayLou娄杰的回答 - 知乎
目前主流的attention方法都有哪些? - 张戎的回答 - 知乎
模型汇总24 - 深度学习中Attention Mechanism详细介绍:原理、分类及应用
李宏毅机器学习
根据通用近似定理,前馈网络和循环网络都有很强的能力。但为什么还有引入注意力机制?
当用神经网络来处理大量的输入信息的时候,可以借鉴人脑的注意力机制,只选择一些关键的信息输入进行处理来提高神经网络的效率。
按照认知神经学中的注意力,分为以下两类
1. 聚焦式(focus)注意力
2. 显著性(saliency-based)注意力
在人工神经网络中,注意力机制一般就特指聚焦式注意力
Attention机制的实质其实就是一个寻址(addressing)的过程。
如上图所示:给定一个和任务相关的查询Query向量 q q q,通过计算与Key的注意力分布并附加在Value上,从而计算Attention Value,这个过程实际上是Attention机制缓解神经网络模型复杂度的体现
不需要将所有的 N N N个输入信息都输入到神经网络进行计算,只需要从 X X X中选择一些和任务相关的信息输入给神经网络。
注意力机制分为以下三步
注意力打分机制 | 公式 |
---|---|
加性模型 | s ( x i , q ) = v T tanh ( W x i + U q ) s(x_i,q) = v^{T}\tanh(Wx_i + Uq) s(xi,q)=vTtanh(Wxi+Uq) |
点积模型 | s ( x i , q ) = x i T q s(x_i,q) =x^T_iq s(xi,q)=xiTq |
缩放点积模型 | s ( x i , q ) = x i T q d s(x_i,q) = \frac{x^T_iq}{\sqrt{d}} s(xi,q)=dxiTq |
双线性模型 | s ( x i , q ) = x i T W q s(x_i,q) =x^T_i Wq s(xi,q)=xiTWq |
这种编码方式为软性注意力机制(soft attention),软性注意力机制有两种:普通模型(key=value=x)和键值对模式(key!=value)
与普通的Attention机制(上图左)相比,Attention机制有哪些变种呢?
之前的注意力是软性注意力,其选择的信息是所有输入信息在注意力分布下的期望。
还有一种注意力是只关注到某一个位置上的信息,叫做硬性注意力(hard attention)
硬性注意力的两种实现方式:
即上图右边的键值对模式,此时Key!=Value,注意力函数变为
a t t ( ( K , V ) , q ) = ∑ i N a i v i = ∑ i = 1 N e x p ( s ( k i , q ) ) ∑ j e x p ( s ( k j , q ) ) v i att((K,V),q) = \sum_i^{N}a_iv_i = \sum_{i=1}^{N}\frac{exp(s(k_i,q))}{\sum_j exp(s(k_j,q))}v_i att((K,V),q)=i∑Naivi=i=1∑N∑jexp(s(kj,q))exp(s(ki,q))vi
多头注意力(multi-head attention)是利用多个查询 Q = [ q 1 , ⋅ ⋅ ⋅ , q M ] Q = [q_1, · · · , q_M] Q=[q1,⋅⋅⋅,qM],来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分,然后再进行拼接:
a t t ( ( K , V ) , Q ) = a t t ( ( K , V ) , q 1 ) ⊕ ⋯ ⊕ a t t ( ( K , V ) , q M ) att((K,V),Q)= att((K,V),q_1) \oplus \cdots \oplus att((K,V),q_M) att((K,V),Q)=att((K,V),q1)⊕⋯⊕att((K,V),qM)
当使用神经网络处理一个变长的向量序列时,通常使用卷积神经网络或循环神经网络进行编码来得到一个相同长度的输出向量序列
self-Attention可以兼顾到whole input sequence,不再需要像左图的 L S T M LSTM LSTM一样不能并行处理, b 1 , b 2 , b 3 , b 4 b^1,b^2,b^3,b^4 b1,b2,b3,b4可以并行计算出
这个我也没法讲清楚,直接看李宏毅视频吧
李宏毅视频
Attention机制在深度学习的各种应用领域都有广泛的使用场景。从图像处理领域和语音识别选择典型应用实例来对其应用做简单说明。
图片描述(Image-Caption)是一种典型的图文结合的深度学习应用,输入一张图片,人工智能系统输出一句描述句子,语义等价地描述图片所示内容。很
明显这种应用场景也可以使用Encoder-Decoder框架来解决任务目标,此时Encoder输入部分是一张图片,一般会用CNN来对图片进行特征抽取,Decoder部分使用RNN或者LSTM来输出自然语言句子(参考图13)。
此时如果加入Attention机制能够明显改善系统输出效果,Attention模型在这里起到了类似人类视觉选择性注意的机制,在输出某个实体单词的时候会将注意力焦点聚焦在图片中相应的区域上。
图给出了根据给定图片生成句子“A person is standing on a beach with a surfboard.”过程时每个单词对应图片中的注意力聚焦区域
给出了另外四个例子形象地展示了这种过程,每个例子上方左侧是输入的原图,下方句子是人工智能系统自动产生的描述语句,上方右侧图展示了当AI系统产生语句中划横线单词的时候,对应图片中聚焦的位置区域。比如当输出单词dog的时候,AI系统会将注意力更多地分配给图片中小狗对应的位置。