
论文地址:https://arxiv.org/pdf/2405.13956 论文标题:Attention as an RNN

将其映射到单一输出 o_N = Attention (q, k_1:N , v_1:N ) 。给定 s_i = dot (q,k_i),输出 o_N 可表述为: 
,分母为
。将注意力视为 RNN,可以在 k = 1,...,...... 时,以滚动求和的方式迭代计算
和
。然而,在实践中,这种实现方式并不稳定,会因有限的精度表示和可能非常小或非常大的指数(即 exp (s))而遇到数值问题。为了缓解这一问题,作者用累积最大值项
来重写递推公式,计算
和
。值得注意的是,最终结果是相同的
,m_k 的循环计算如下:

的方法。为此,作者利用并行前缀扫描算法(见算法 1),这是一种通过关联算子 ⊕ 从 N 个连续数据点计算 N 个前缀的并行计算方法。该算法可高效计算

,其中 
,
为了高效计算
,可以通过并行扫描算法计算
和
,然后结合 a_k 和 c_k 计算
。
,
,
。并行扫描算法的输入为
。该算法递归应用算子 ⊕,其工作原理如下:
,其中,
,
。


。也被称作
。结合输出元组的最后两个值,检索
从而产生一种高效的并行方法,将注意力计算为多对多 RNN(图 3)。






