最近在对小样本相关文献,对于注意力机制不是太了解,通过了解后,就想写一篇总结一下..
先给大家讲个小故事助助兴吧。🤭
一对情侣A和B下班后,
A问B:“今天吃什么鸭?”
B:“红烧肉,西红柿炒蛋”
A对B说:“家里没有肉和西红柿了,去菜市场买点肉和菜吧”
两人一同前往菜市场买菜,菜市场环境特别嘈杂。两个人一起到肉摊这里买点肉,肉有点贵,B就开启降价模式,A觉得B肯定能讲下来,就去其他的摊位转转。B降价成功后,发现A不在身边后,对菜市场进行了一番扫视后,仅此一眼便可寻到你。看见了A在水果摊附近,便径直走去。B对A轻喊,A转过头对B笑了笑。
当B对整个菜市场进行扫视时,忽略的周围的环境,脑海中只聚焦于A的身影。仅此一眼便可定位到她所在位置。这个有意识的现象被称为---聚焦注意力
显著注意力是指由外界环境无意识引起的注意力。比如你正在学习,突然门外邻居正在吵架,打断了你学习时的注意力
注意力机制:指的是在某一时刻将注意力集中到某件事,而忽略周围其他的一切事物。
如今,视觉注意力机制便是人类视觉所特有的大脑信息处理机制。人类通过快速扫描全局信息,只关注于目标信息,便对该目标信息投入更多的资源,来获取有关于目标信息的更多细节,从而忽略周围的其他信息。而深度学习中的注意力机制和人类的视觉注意力机制类似,都是从大量的信息中提取对当前目标信息更加细节的信息。
深度学习中的注意力机制依附于Encoder-Decoder框架下,该框架场景应用广泛。
上图是文本处理的Encoder-Decoder框架。简单理解为Encoder-Decoder相当于一个翻译者。对于一个句子,我们希望输入句子Source=<>,通过Encoder-Decoder框架生成目标句子Target=<>.其中,Source和Target可以来自同一个语言,也可以是不同的语言。Encoder就是编码器,将Source通过非线性变化转化为中间语义信息C:
Decoder就是解码器,将输入信息Source+前一时刻的历史信息获得目标信息
注意力机制
对上面提到的Encoder-Decoder框架并未体现注意力模型.我们称为"注意力不集中",因为中间的语义信息C是不变的,就是说输入句子中的任意单词对生成目标单词的影响力都是相同的.相当于你在表达一个观点时,没有侧重点.但当输入信息很长时,语义信息用语义向量表示,模型内部出现混乱,就会丢失很多细节信息.为解决该问题引入注意力机制
原理:
- 通过打分函数s(),获得输入信息的注意力分配概率分布
查询向量 q (这个向量往往和你做的任务有关), 打分函数s()是一个标量,将前一时刻的输出状态在上的关注程度.通过softmax对结果进行归一化后,便得到查询向量q在各个输入上的注意力分布.注意力分布和输入信息一一对应.
- 获取语义信息.由于注意力分布的加入,通过加权和获得当前时刻的语义信息C
- 输出目标信息
举例:输入:I love you 输出:我爱你
I:
love:
you:
=我
=我爱
=我爱你
打分函数s可以通过一下方式计算:
参数W、U和v 均是可学习的参数矩阵或向量,D为输入向量的维度.
加性模型:
.
引入可学习参数,将查询向量q和原始输入映射到不同的向量空间进行计算打分.
点积模型:
.
当输入维度较高时,点积模式存在较大的方差,捯饬softmax函数梯度较小.相对于加性模型,点积模型具有更好的计算效率
缩放点积模型:
通过一个平方根项来平滑分数数值,相关平滑最终的注意力分布
双线性模型:
重塑为 ,即分别对查询向量 q 和原始 Z输入向量 h进行线性变换之后,再计算点积。相比点积模型,双线性模型在计算相似度时引入了非对称性。
注意力机制的变体:
- 硬性注意力机制:根据注意力分布选择输入变量中的一个作为输出.选择方式如下
- 选择注意力分布中分数最大的哪一项所对应的输入向量作为Attention机制的输出
- 对注意力分布进行随机采样,将采样后的结果作为Attention机制的输出
注意:硬性注意力通过两种选择方式,使得最终的损失函数和注意力分布之间不可导,无法通过反 向传播训练模型.硬性注意力需借助于强化学习进行训练
2. 键值对注意力机制
输入信息为键值对的形式 注意力权值
3. 多头注意力机制
思想:利用多个查询向量,并行的从输入信息 中选取多组信息.查询向量q关注不同部分的输入信息.(从不同的角度分析当前的输入信息)
4. 自注意力机制
自注意力机制中,针对查询向量q可通过输入信息本身生成,不在选择前一时刻的查询向量.模型让输入信息自己决定输入信息的那部分信息为重要信息.
自注意力机制采用查询-键-值(Query-Key-Value)模式.
输入信息在不同的空间表达后,通过计算h1为例,计算相应的注意力机制的输出向量,代表模型应重点关注的内容
步骤:
计算输入信息映射到空间Q,K,V的信息
计算每个位置的注意力权重,并对其结果求加权和.对打分函数采用缩放点积模式计算
通过矩阵计算,获得所有位置的注意力输出向量
参考博客:
注意力机制(Attention mechanism)基本原理详解及应用 - Jerry_Jin - 博客园 (cnblogs.com)