分享
Deploy007 Attention
输入“/”快速插入内容
Deploy007 Attention
用户5190
用户3543
用户1672
2024年11月18日修改
1.
Why attention
以下引用自:
理解Attention:从起源到MHA,MQA和GQA
,
transformer快速入门
Attention(注意力)机制如果浅层的理解,就是「从关注全部到关注重点」。
•
我们的视觉系统就是一种 Attention机制,将有限的注意力集中在重点信息上,从而节省资源,快速获得最有效的信息
•
Attention 机制最早是在计算机视觉里应用的,随后在
NLP
领域也开始应用
33%
33%
33%
NLP 神经网络模型的本质就是对输入文本进行编码,常规的做法是首先对句子进行分词,然后将每个词语 (token) 都转化为对应的词向量 (token embeddings),这样文本就转换为一个由词语向量组成的矩阵 X=(x1,x2,…,xn),其中 xi 就表示第 i 个词语的词向量,维度为 d,故 X∈Rn×d。
在 Attention 机制引入之前,对 token 序列 X 的常规编码方式是通过循环网络 (RNNs) 和卷积网络 (CNNs)。
•
RNN方案
NLP领域使用RNN的Seq2Seq有一个问题:长距离的信息会被弱化,就好像记忆能力弱的人,记不住过去的事情是一样的。一个直觉的想法就是,我们需要想个办法跳过 z ,和前面的每个输入建立直接的联系。我们希望模型能够有机会学习到去“注意”关键的输入,不管这个输入是在前面还是后面。这就引入了attention的概念,一般形式可以写作 Attention(y,h)=Score(y,h)⋅h 。y是decoder hidden state,h是encoder hidden state,Score计算y和h之间的相关性。
52%
48%
•
CNN 则通过滑动窗口基于局部上下文来编码文本,例如核尺寸为 3 的卷积操作就是使用每一个词自身以及前一个和后一个词来生成嵌入式表示:
Google《Attention is All You Need》提供了第三个方案:
直接使用 Attention 机制编码整个文本
。相比 RNN 要逐步递归才能获得全局信息(因此一般使用双向 RNN),而 CNN 实际只能获取局部信息,需要通过层叠来增大感受野,Attention 机制一步到位获取了全局信息:
其中
是另外的词语序列(矩阵),如果取
就称为 Self-Attention,即直接将
与自身序列中的每个词语进行比较,最后算出
。
2.
What is attention
以下引用自:
[LLM] 自然语言处理 --- Self-Attention(一) 基本介绍
+
transformer快速入门
从概念上理解,把Attention理解为从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。聚焦的过程体现在权重系数的计算上,权重越大越聚焦于其对应的Value值上,即权重代表了信息的重要性,而Value是其对应的信息。
从图中可以引出另外一种理解,也可以将Attention机制看作一种软寻址(Soft Addressing):Source可以看作存储器内存储的内容,元素由地址Key和值Value组成,当前有个Key=Query的查询,目的是取出存储器中对应的Value值,即Attention数值。通过Query和存储器内元素Key的地址进行相似性比较来寻址,之所以说是软寻址,指的不像一般寻址只从存储内容里面找出一条内容,而是可能从每个Key地址都会取出内容,取出内容的重要性根据Query和Key的相似性来决定,之后对Value进行加权求和,这样就可以取出最终的Value值,也即Attention值。所以不少研究人员将Attention机制看作软寻址的一种特例,这也是非常有道理的。
50%
阶段一: query 和 key 进行相似度计算,得到权值
阶段二:将权值进行归一化,得到直接可用的权重
阶段三:将权重和 value 进行加权求和
从上面的建模,我们可以大致感受到 Attention 的思路简单,四个字“
加权求和
”就可以高度概括
50%
2.1
self-attention VS cross-attention
Transformer encoder-decoder网络结构,encoder部分包含self-attention,decoder部分包含self-attention、cross-attention,下面主要简述两者的区别: