最近看论文看到了注意力机制模块,不是很清楚具体的结构和作用,去网上学习了一下,顺便整理了资料,仅记录本人学习相关模型的过程,若侵权则删。
注意力机制(Attention Mechanism)是一种在深度学习中广泛使用的技术,尤其是在处理序列数据(如文本、图像序列等)时。它的核心思想是让模型在处理序列中的每个元素时,能够动态地关注到不同的部分,从而提高模型的表达能力和性能。
一、理解注意力机制
从人类的视觉注意力理解
从人类的视觉注意力角度来看,人类通过视觉获取全局的图像信息,会有选择性的获取需要重点关注的区域,称其为注意力焦点。从而通过特别关注这一重点区域来获取更多有效的信息,略过其他无效的信息,以此来提高我们获取信息和处理信息的效率和准确性。
深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,其核心目标也是从全局信息中找到关键的信息加以关注,忽略次要的无效信息。
二、注意力机制原理
1.选择性关注:在处理序列数据时,模型需要能够识别出哪些部分是重要的,哪些部分可以忽略。注意力机制通过为序列中的每个元素分配一个权重,来实现这种选择性关注。
2.权重分配:这些权重通常通过模型内部的计算得出,反映了每个元素对于当前任务的重要性。权重越高,表示该元素在当前任务中越重要。具体思想可以看下图:
给定某个元素Query,通过source模块来计算Query和各个Key的相似性或相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,即得到最终的Attention数值。所以,本质上Attention机制是Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数。即可以表示为如下公式:
(其中, Lx代表Source的长度)
3.动态调整:注意力机制是动态的,即在不同的任务或不同的上下文中,模型关注的焦点可能会有所不同。
注意力机制的聚焦的过程体现在权重系数的计算上,权重越大越聚焦于其对应的Value值上,代表了信息的重要性,而Value是其对应的信息。Attention机制的具体计算过程可以分为三个阶段:
- 计算相似性或相关性
根据上述说明的,可以通过不同的函数和计算机制,如求两者的向量点积、求两者的余弦相似度或者通过再引入额外的神经网络,来对Query和Key计算权重系数,即获取两者的相似性或相关性。
2.归一化处理
然后引入SoftMax函数来对第一阶段的值进行归一化处理,映射到0-1之间的概率分布,可以更加突出重要元素的权重。一般公如下:
3.加权求和
根据权重系数对Value进行加权求和,从而得到最终的注意力数值:
-
三、典型模型
- Seq2Seq模型:在早期的机器翻译任务中,Seq2Seq模型引入了注意力机制,使得模型在翻译时能够更好地关注到源语言文本中的特定部分。
- Transformer模型:Transformer是当前最流行的注意力机制模型之一,它完全基于注意力机制,摒弃了传统的循环神经网络(RNN)结构。Transformer通过自注意力(Self-Attention)机制,使得模型能够同时处理序列中的所有元素。
-
BERT模型:BERT(Bidirectional Encoder Representations from Transformers)是另一个基于Transformer的模型,它通过预训练的方式,学习了大量文本数据的深层次表示。
具体的应用和变体后续遇到再进行深入的学习,整体的内容就就综上所述~