回顾
自注意力机制

多头自注意力机制
多头自注意力机制可以理解为由多个自注意力模块,也就是自注意力头(head)组成。
每个head都有自己的QKV矩阵来进行自注意力计算。

计算过程
① 得到各个head所需的QKV:
计算过程中会将原本的qi,ki,viq_i,k_i,v_iqi,ki,vi分为多份,分配到对应的head中,一般会均分QKV的向量,这样每个head有了所需的QKV数据,以此每个head都可以使用自注意力机制。
下图是有2个head的情况,可以看到将q,k,vq,k,vq,k,v都均分为了2份,变为qi,j,ki,j,vi,jq_{i,j},k_{i,j},v_{i,j}qi,j,ki,j,vi,j,其中iii代表属于哪个aaa,jjj代表属于哪个head。


② 各个head执行自注意力操作:
分配完成后,就可以在每个head中执行自注意力机制,就可以得到各个head中aaa的替代bi,jb_{i,j}bi,j,其中iii代表属于哪个aaa,jjj代表属于哪个head。

③ 拼接各个head的结果:
然后将来自同一个aaa的B={bi,1,bi,2,...,bi,k}B=\{b_{i,1},b_{i,2},...,b_{i,k}\}B={bi,1,bi,2,...,bi,k}进行拼接(Concat)。

④ 融合结果:
将拼接后的结果进行融合得到b1,b2b1,b2b1,b2。

其中WoWoWo是可训练的参数,其大小为dmodel∗dmodeld_{model}*d_{model}dmodel∗dmodel,而dmodeld_{model}dmodel为q,k,vq,k,vq,k,v原本的尺寸。这里dmodeld_{model}dmodel=4

为什么要使用多头
- 增加模型的学习能力和表达力:通过多个注意力头,模型可以学习到更丰富的上下文信息,每个头可能关注输入的不同特征,这些特征综合起来可以更全面地理解和处理输入序列。
- 提高模型性能:实验证明,多头注意力机制相较于单头注意力,往往能带来性能提升。这是因为模型可以通过并行处理和集成多个注意力头的结果,从不同角度捕捉数据的多样性,增强了模型对复杂序列任务的理解和泛化能

8592

被折叠的 条评论
为什么被折叠?



