最近在写一东西,有在看注意力机制,将其数学原理总结一下。
神经网络中的注意力机制(Attention Mechanism)是在计算能力有限的情况下,将计算资源分配给更重要的任务,同时解决信息超载问题的一种资源分配方案。即是在注意给定任务中更加关键的信息,而可以适当的忽略不重要信息,从而提高任务处理的效率。
注意力机制可分为下面展示一些 软注意力(Soft-Attention)
和 硬注意力(Hard-Attention)
。可理解为对于N个输入信息 X=[x1,x2,...,xN]
,硬注意力机制往往在这N个输入信息种选取某一个(随机选择或选取概率最高的);而软注意力是考虑了N个输入,计算N个输入信息的加权平均。故在很多深度学习任务中采用软注意力机制,下文都是针对软注意力机制展开的。
1 注意力机制的数学原理
注意力机制的计算步骤
- 对所有输入信息计算其
注意力分布
- 根据注意力分布计算
Attention值
接下来分别解释一下注意力分布
和Attention值
1.1 基本形式(X Q)
对于N个输入信息 X=[x1,x2,...,xN]
,q
为查询向量,定义注意力变量z∈[1,N]
表示被选择信息的索引位置即x的下标。
① 对所有输入信息计算其注意力分布αi
表示在给定查询q时,输入信息向量X中第i个信息与查询q的相关程度
由此有:
其中σi构成的概率向量就称为注意力分布
s(xi,q)
是注意力打分函数,有以下几种形式:
看的文章中缩放点积形式用的比较多,d是维度,W、U、v是网络学习出来的参数
② 根据注意力分布计算Attention值
1.2 键值对 形式(K V Q)
键值对形式是将基本形式中的输入信息向量X由(K,V)表示,那么N个输入信息就可以表示为(K, V)= [(k1,v1),(k2,v2),...,(kN,vN)]
,其中“键”K用来计算注意分布σi,“值”V用来计算聚合信息。
① 根据Query和Key计算二者的相似度
这里就是通过打分模型,计算出注意力得分
si = F(Q,ki)
② 用softmax函数对注意力得分进行数值转换
③ 根据权重系数对Value进行加权求和:
整个过程如下图所示: