大学生做推送的网站,高校教学网站建设,游戏推广引流渠道,南阳卧龙区高端网站建设价格有很多自己的理解#xff0c;仅供参考 Attention注意力机制
对于一张图片#xff0c;我们第一眼看上去#xff0c;眼睛会首先注意到一些重点的区域#xff0c;因为这些区域可能包含更多或更重要的信息#xff0c;这就是注意力机制#xff0c;我们会把我们的焦点聚焦在比… 有很多自己的理解仅供参考 Attention注意力机制
对于一张图片我们第一眼看上去眼睛会首先注意到一些重点的区域因为这些区域可能包含更多或更重要的信息这就是注意力机制我们会把我们的焦点聚焦在比较重要的事物上。大数据中对于重要的数据我们要使用对于不重要的数据我们不太想使用但是对于一个模型而言CNN、LSTM很难决定什么重要什么不重要。由此注意力机制诞生了。
注意力机制是一个很宽泛的概念可以极端地理解为QKV三个向量分别称为Query、Key、Value相乘就是注意力。通过一个查询变量 Q去找到 V 里面比较重要的东西。假设 KV然后 QK 相乘求相似度A然后 AV 相乘得到注意力值Z这个 Z 就是 V 的另外一种形式的表示。Q 可以是任何一个东西V 也是任何一个东西 但K往往是等同于 V 的同源当然K和V不同源不相等也可以。
Attention没有规定 QKV 怎么来只规定 QKV 怎么做即上述描述的操作。 具体计算过程
至于Attention机制的具体计算过程对目前大多数方法进行抽象的话可以归纳为两个过程第一个过程是根据Query和Key计算权重系数第二个过程根据权重系数对Value进行加权求和。而第一个过程又可以细分为两个阶段第一个阶段根据Query和Key计算两者的相似性或者相关性第二个阶段对第一阶段的原始分值进行归一化处理这样可以将Attention的计算过程抽象为如图展示的三个阶段。
Q K k 1 , k 2 , ⋯ , k n Kk_1, k_2, \cdots, k_n Kk1,k2,⋯,kn 然后我们一般使用点乘求内积的方法计算Q 和 K 里的每一个事物的相似度就拿到了 Q 和 k 1 k_1 k1的相似值 s 1 s_1 s1Q 和 k 2 k_2 k2的相似值 s 2 s_2 s2Q 和 k n k_n kn的相似值 s n s_n sn接着做一层 s o f t m a x ( s 1 , s 2 , ⋯ , s n ) softmax(s_1,s_2,\cdots,s_n) softmax(s1,s2,⋯,sn)得到概率 ( a 1 , a 2 , ⋯ , a n ) (a_1,a_2,\cdots,a_n) (a1,a2,⋯,an)进而就可以找出哪个对Q 而言更重要了最后进行一个汇总当使用 Q 查询结束了后Q 已经失去了它的使用价值我们最终是要拿到这张图片以图片举的例子原图 V ( v 1 , v 2 , ⋯ , v n ) V(v_1,v_2,\cdots,v_n) V(v1,v2,⋯,vn)现在这张图片变为了 V ′ ( a 1 ∗ v 1 a 2 ∗ v 2 ⋯ a n ∗ v 1 ) V(a_1*v_1a_2*v_2\cdotsa_n*v_1) V′(a1∗v1a2∗v2⋯an∗v1)得到了一个新的 V’这个新的 V’ 就多了哪些更重要、哪些不重要的信息在里面对Q来说然后用 V’ 代替 V它。
一般在Transformer中 KV当然也可以不相等但是 K 和 V 之间一定具有某种联系这样的 QK 点乘才能指导 V 哪些重要哪些不重要。 Attention不依赖于RNN
前面已经说了Attention是一个很宽泛宏大的概念所以显然Attention机制本身并不依赖于RNN循环神经网络。它是一种独立于具体模型结构的机制可以与多种模型结构结合使用。
在自然语言处理任务中Attention机制最初是与RNN结合使用的。具体来说常见的组合是将Attention机制应用于RNN编码器-解码器模型如机器翻译任务中的序列到序列模型。在这种情况下RNN编码器用于将输入序列编码为固定长度的上下文向量然后解码器使用Attention机制来动态地关注编码器输出的不同部分。
然而Attention机制不仅限于与RNN结合使用。它可以与其他类型的模型结构一起使用例如卷积神经网络CNN和自注意力机制如Transformer模型。在Transformer模型中Attention机制被广泛应用并且成为其核心组件之一用于实现序列中不同位置之间的自注意力计算。
因此尽管Attention机制最初与RNN结合使用但它并不是RNN的特定部分而是一种通用的机制可以与各种模型结构结合使用以提高模型在序列处理任务中的性能和效果。 Self-Attention自注意力机制
和Attention类似他们都是一种注意力机制。不同的是Attention是source对target输入的source和输出的target内容不同。例如英译中输入英文输出中文。而Self-Attention是source对source是source内部元素之间或者target内部元素之间发生的Attention机制也可以理解为TargetSource这种特殊情况下的注意力机制。
简单说Self-Attention不仅固定了QKV的操作Attention机制还规定了QKV同源Q≈K≈V来源于同一个输入X也就是通过X找到X里面的关键点QKV通过X与三个参数矩阵 W Q , W K , W V W^Q,W^K,W^V WQ,WK,WV相乘得到。注意力机制包括自注意力机制和其他种类的注意力机制比如交叉注意力机制。 具体计算操作和Attention一样 将输入单词X转化成嵌入向量(embedding) a a a 根据嵌入向量 a a a得到qkv三个向量 q i W q a i q^iW^qa^i qiWqai k i W k a i k^iW^ka^i kiWkai v i W v a i v^iW^va^i viWvai 为每个向量计算一个score a i j a_{ij} aijscore q i ∗ k j q^i*k^j qi∗kj若需要计算 a 1 a^{1} a1(embedding后的向量和 a 1 , a 2 , a 3 , ⋯ , a n a^{1},a^{2},a^{3},\cdots,a^{n} a1,a2,a3,⋯,an之间的关系或关联则需要用 q 1 q^{1} q1和 k 1 , k 2 , k 3 , ⋯ , k n k^{1},k^{2},k^{3},\cdots,k^{n} k1,k2,k3,⋯,kn进行匹配计算 为了梯度的稳定Transformer使用了score归一化即除以 d k \sqrt{dk} dk 原因是防止q和k的点乘结果较大 对score施以softmax激活函数 softmax点乘Value值v得到加权的每个输入向量的评分v 相加之后得到最终的输出结果z ∑ v
与RNN和LSTM的区别
RNN无法解决长序列依赖问题LSTM无法做并行计算而self-attention很好的解决了这两个问题。
长距离依赖建模Self-Attention可以对序列中的任意两个位置进行直接的关联和交互因此能够更好地建模长距离依赖。并行计算在序列中的每个时间步Self-attention可以同时计算所有位置的注意力权重从而并行处理整个序列。相比之下LSTM是逐个时间步进行计算需要依赖前一时间步的隐藏状态限制了并行性。句法特征和语义特征Self-Attention得到的新的词向量具有句法特征和语义特征表征更完善。 简单了解 句法特征句法特征关注的是语言中单词之间的结构和关系。它们描述了句子中的语法规则、词性、句法依存关系等。句法特征可以帮助我们理解句子的结构和语法规则例如主谓宾结构、修饰关系等。 语义特征语义特征则关注的是句子和单词的语义含义。它们描述了单词之间的关联和句子的意义。语义特征帮助我们理解句子的意思、推断隐含信息和进行语义推理。 理论上Self-Attention Transformer 50个左右的单词效果最好解决了RNN模型的长序列依赖问题但是由于文本长度增加时训练时间也将会呈指数增长因此在处理长文本任务时可能不一定比LSTM200个左右的单词效果最好等传统的RNN模型的效果好。LSTM通过这些门控机制避免了传统RNN中梯度消失和梯度爆炸的问题在一些情况下仍然是一种有效的模型选择研究者也提出了一些结合LSTM和Self-attention的模型以发挥它们各自的优势。 参考
ChatGPT
https://www.cnblogs.com/nickchen121/p/15105048.html
https://zhuanlan.zhihu.com/p/265108616
https://zhuanlan.zhihu.com/p/619154409
https://zhuanlan.zhihu.com/p/631398525