自注意力变种包括稀疏注意力,其中多头自注意力变种包括分组注意力、多查询注意力等。
1. 自注意机制
之前介绍了自注意力机制,它是一种将输入序列中的每个位置与其他位置进行注意力计算的机制。
考虑对于一个序列

对其进行自注意力计算,得到三个Q,K,V,分别为矩阵

再通过QK^T计算注意力分数,得到注意力矩阵,然后对注意力矩阵进行softmax操作,得到注意力权重矩阵。再将注意力权重矩阵与V矩阵进行矩阵乘法,得到输出矩阵。

2. 稀疏注意力
稀疏注意力是指在自注意力计算中,只考虑序列中部分位置的注意力计算。例如,只考虑序列中每个位置的前k个位置的注意力计算。将原来的中间矩阵计算的时间复杂度从O(n^2)减少到O(kn),其中n为序列长度,k为考虑的位置数。
虽然在自注意单层只考虑前k个位置,但是通过多个层堆叠的方式,到更深层时,单个位置会借助之前的层辅助自己看到更多的位置。这个概念类似于卷积层中感受野的感念。
k=3距离

3. 多头注意力
多头注意力是指在自注意力计算中,使用多个头并行计算注意力,每个头计算的注意力矩阵不同。将多个头的输出拼接起来,得到最终的输出。
这样做的好处是,每个头可以关注不同的位置,从而捕捉到不同的特征。
这个示例给出4个头的情况,每个头的输出都是 [n, 256], 4个头的输出拼接起来就是 [n, 256*4] 刚好和输入的维度相同。

分组注意力
分组是指相同组Q矩阵的位置共享一组K,V,这样可以减少计算量。
示例可以给出2组的情况。

多查询注意力
分组到了极端,所有的Q矩阵的位置共享一组K,V,这样可以进一步减少计算量。

530

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



