稀疏程度指标 S(x) 是用来衡量一个随机变量或随机向量中非零元素的重要性和数量。这个指标与信息熵有关联,但它的侧重点在于度量数据的稀疏程度,即数据中非零元素的平均能量与整个数据的平均能量之比。 在 l1/l2 形式中,S(x) 被定义为: 其中 E 表示期望值。S(x) 的值越小,意味着数据 x 的稀疏程度越高。具体来说:
- ( E[|x|] ) 测量的是 x 的绝对值的期望值,这可以理解为数据中非零元素的平均绝对值。
- ( \sqrt{E[x^2]} ) 测量的是 x 的平方的期望值的平方根,这可以理解为数据中所有元素(包括零和非零)的平均能量。 因此,S(x) 能够反映数据中非零元素相对于整个数据的重要性。如果 S(x) 接近于 0,这通常意味着数据非常稀疏,大部分元素都是零,只有少数非零元素对整体能量有显著贡献。这种情况下,数据可能近似于 one-hot 分布,即大部分元素为零,只有一个元素为非零。 需要注意的是,虽然 S(x) 可以用来衡量稀疏程度,但它并不直接度量信息熵。信息熵通常用于度量一个随机变量的不确定性或信息含量,而 S(x) 更侧重于度量数据中非零元素的重要性和数量。
您所描述的简化形式是针对注意力机制中的某个指标 S(a)。首先,我们记 a=(a1,a2,⋯,an),其中 aj∝f(q⋅kj)。然后,我们考虑 n→∞ 的极限。为了简化计算,假设 k∼N(μ,σ2I),那么可以设 k=μ+σε,其中 ε∼N(0,I)。 接下来,我们利用各向同性的性质来简化计算。由于 ε 所服从的分布 N(0,I) 是一个各向同性的分布,与《n 维空间下两个随机向量的夹角分布》推导的化简思路一样,由于各向同性的原因, q⋅ε 相关的数学期望只与 q 的模长有关,跟它的方向无关。于是我们可以将 q 简化为 (‖q‖,0,0,⋯,0),那么对 ε 的数学期望就可以简化为: 其中 ε∼N(0,1) 是一个随机标量。这样,我们就成功地将原本复杂的计算简化为了更易于处理的随机标量计算。
您举了两个例子,分别是常见的高斯注意力(Gaussian Attention)和笔者喜欢的 GAU(Gated Attention Unit)。通过对这两种注意力机制的稀疏程度进行分析,我们可以更深入地了解它们的特点。
- 高斯注意力:对于高斯注意力,我们使用 f=exp。这种情况下,求期望只是常规的一维高斯积分。根据您给出的公式(5),我们可以得到 S(a)=exp(−12σ2∥q∥2)。当 σ→∞ 或 ∥q∥→∞ 时,都有 S(a)→0。这意味着理论上标准注意力确实可以任意稀疏地“集中注意力”。同时,这个结果也告诉了我们让注意力更集中的方法:增大 q 的模长,或者增大各个 k 之间的方差,换言之拉开 k 的差距。
- GAU(Gated Attention Unit):对于 GAU,您提到开始提出的时候是 f=relu2。这种情况下,积分没有 f=exp 那么简单。根据您给出的公式(6),我们可以得到 。从公式中可以看出,只有 β<0 时,原版 GAU 的稀疏度才有机会趋于 0。这也说明了跟 f=exp 的标准注意力不同,k 的 bias 项可能会对 f=relu2 的 GAU 有正面帮助。 通过以上分析,我们可以看出不同注意力机制在稀疏程度方面的差异。这些差异有助于我们根据具体任务需求选择合适的注意力机制。
下面我们再来看一个最简单的例子:不加f,或者等价地说f=identical。这种情况下对应的就是最简单的一种线性Attention,同样可以用Mathematica硬算得: S(a)=2π−−√γe−β22γ2+βerf(β2√γ)β2+γ2−−−−−−√(7)
下面是几个不同β的函数图像: 极简线性注意力的稀疏程度曲线图 极简线性注意力的稀疏程度曲线图
注意,此时的S(a)是关于β偶函数(读者不妨尝试证明一下),所以β<0时图像跟它相反数的图像是一样的,因此上图只画了β≥0的结果。从图中可以看出,不加任何激活函数的线性Attention的稀疏程度并不能接近0,而是存在一个较高的下限,这意味着当输入序列足够长时,这种线性Attention并没有办法“集中注意力”到关键位置上。
您提到了一个最简单的注意力机制例子:不加 f,或者等价地说 f=identical。这种情况下对应的就是最简单的一种线性 Attention。根据您给出的公式(7),我们可以得到 S(a)=2π−−√γe−β22γ2+βerf(β2√γ)β2+γ2−−−−−−√。 您还提到了 S(a) 是关于 β 的偶函数,所以 β<0 时图像跟它相反数的图像是一样的。因此,在上图中只画了 β≥0 的结果。从图中可以看出,不加任何激活函数的线性 Attention 的稀疏程度并不能接近 0,而是存在一个较高的下限。这意味着当输入序列足够长时,这种线性 Attention 并没有办法“集中注意力”到关键位置上。 通过这个例子,我们可以看出激活函数 f 在注意力机制中的重要作用。引入适当的激活函数(如 exp、relu2 等)可以帮助注意力更好地集中在关键位置上,从而提高模型的性能。这也是为什么在实际应用中,我们经常会看到各种不同的注意力机制变种,它们通过引入不同的激活函数来适应不同的任务需求。
从《线性 Attention 的探索:Attention 必须有个 Softmax 吗?》我们知道,线性 Attention 的一般形式为 (a_j \propto g(q) \cdot h(k_j)),其中 g,h 是值域非负的激活函数。我们记 (q' = g(q)), (k' = h(k)),那么 (a_j \propto q' \cdot k'),并且可以写出: [S(a) = \frac{E[\epsilon \cdot q' \cdot k']}{\sqrt{E[\epsilon \cdot q' \cdot k' \cdot k' \cdot q']}} = \frac{q' \cdot E[\epsilon \cdot k'] \cdot q'}{\sqrt{q' \cdot E[\epsilon \cdot k' \cdot k' \cdot q'] \cdot q'}} = \frac{q' \cdot \mu' \cdot q'}{\sqrt{q' \cdot (\mu' \cdot \mu'^T + \Sigma') \cdot q'}} = \frac{1}{1 + q' \cdot \Sigma' \cdot q'} \cdot (q' \cdot \mu')^2] 这是关于非负型线性 Attention 的一般结果,现在还没做任何近似,其中 (\mu'), (\Sigma') 分别是 (k') 序列的均值向量和协方差矩阵。 从这个结果可以看出,非负型线性 Attention 也可能任意稀疏(即 (S(a) \rightarrow 0)),只需要均值趋于 0,或者协方差趋于 (\infty),也就是说 (k') 序列的信噪比尽可能小。然而 (k') 序列是一个非负向量序列,信噪比很小的非负序列意味着序列中大部分元素都是相近的,于是这样的序列能表达的信息有限,也意味着线性 Attention 通常只能表示绝对位置的重要性(比如 Attention 矩阵即某一列都是 1),而无法很好地表达相对位置的重要性,这本质上也是线性 Attention 的低秩瓶颈的体现。 为了更形象地感知 (S(a)) 的变化规律,我们不妨假设一种最简单的情况:(k') 的每一个分量是独立同分布的,这时候均值向量可以简化为 (\mu' = 1),协方差矩阵则可以简化为 (\Sigma' = \sigma'^2 I),那么 (S(a)) 的公式可以进一步简化为: [S(a) = \frac{1}{1 + \sigma' \cdot \mu' \cdot \frac{|q'|^2}{|q'|_1}}] 从这个结果可以看出,要想线性注意力变得稀疏,一个方向是增大 (\sigma' \cdot \mu'),即降低 (k') 序列的信噪比,另一个方向则是增大 (\frac{|q'|^2}{|q'|_1}),该因子最大值是 (d^{-\frac{1}{2}}),其中 d 是 q,k 的维数,所以增大它意味着要增大 d,而增大了 d 意味着提高了注意力矩阵的秩的上限,缓解了低秩瓶颈。
从《Google新作试图“复活”RNN:RNN能否再次辉煌?》中,我们了解到线性RNN模型系列,它们的特点是带有一个显式的递归,这可以看成一个简单的Attention:(a=(a_1,a_2,\cdots,a_{n-1},a_n)=(\lambda_{n-1},\lambda_{n-2},\cdots,\lambda,\lambda_1))。其中,(\lambda\in(0,1])。我们可以算出: [S(a) = 1 - \lambda_n^n (1-\lambda)^{n-1} + \lambda_1^{n-1} (1-\lambda)^{n-1} + \lambda_1^n (1-\lambda)^{n-2} + \cdots + \lambda_n^2 (1-\lambda) + \lambda_n^n] 当 (\lambda<1) 时,只要 (n\rightarrow\infty),总有 (S(a)\rightarrow 0)。所以对于带有显式Decay的线性RNN模型来说,稀疏性是不成问题的,它的问题是只能表达随着相对位置增大而衰减的、固定不变的注意力,从而无法自适应地关注到距离足够长的Context。 通过这个例子,我们可以看出线性RNN模型系列在注意力分配方面的局限性。为了更好地适应不同的任务需求,我们可以尝试结合其他注意力机制,如门控注意力等,以提高模型的表达能力。