抛弃注意力,类Transformer新模型实现新SOTA( 二 )


lambda层
lambda层将输入 和上下文 作为输入 , 生成线性函数lambdas , 然后将其应用于查询 , 从而得到输出。
注意 , 在自注意力情况下可能有C=X 。 在不失一般性的前提下 , 研究者假设d_in=d_c=d_out=d 。 在论文的其他部分中 , 研究者将重点放在lambda层的特定实例上 , 并说明它可以在没有注意力图的情况下 , 处理密集的长程内容和基于位置的交互 。
lambda层:将上下文转换成线性函数
研究者首先在(q_n,n)的上下文中描述lambda层 。 由于研究者希望生成一个线性函数 或将 矩阵当作函数 。
表1给出了lambda层的超参数、参数等量化数值 。
抛弃注意力,类Transformer新模型实现新SOTA
本文插图
1. 生成上下文lambda函数
lambda层首先通过线性投影上下文来计算键和值 , 通过softmax运算对键进行归一化 , 从而得到归一化键 。
这种实现能可以看作是函数消息传递的一种形式 , 每个上下文元素都贡献一个内容函数 和一个位置函数。 λ_n 是通过将上下文贡献求和得到的 , 如下所示:
抛弃注意力,类Transformer新模型实现新SOTA
本文插图
其中还定义了内容lambda λ^c和位置lambda λ^p_n 。 内容lambda λ^c对于上下文元素的排列组合是固定不变的 , 在所有的查询位置n上共享 , 并且对如何转换仅基于上下文内容的查询内容q_n进行编码 。 相比之下 , 位置lambda λ^p_n对如何根据内容c_m和位置(n, m)转换查询内容q_n , 从而可以对诸如图像之类的结构化输入进行建模 。
2. 将lambda应用于查询
将输入x_n转换为查询, 然后获得lambda层的输出为
3. lambda解释
矩阵的列可以看作是|k|x|v|维的上下文特征的固定大小集合 。 这些上下文特征是根据上下文的内容和结构汇总得出的 。 利用lambda线性函数动态分配这些上下文特征 , 以产生输出。
此过程可以捕获密集内容和基于位置的长程交互 , 同时不产生注意力图 。
4. 归一化
可修改方程式1和2以涵盖非线性或归一化运算 。 该研究的实验表明 , 在计算查询和值之后应用批归一化是很有用的 。
带有结构化上下文的 lambda 层
这一部分介绍了如何使 lambda 层适应结构化的上下文 , 如相关上下文和局部上下文 。
1. 平移等变性
在很多学习情景中 , 平移等变性是一种很强的归纳偏置 。 基于内容的交互是置换等变的 , 因此它已经具备平移等变性 。 对于任意的平移 t , 研究者通过确保位置嵌入满足。 在位置交互中得到平移不变性 。 在实践中 , 研究者定义了相对位置嵌入 的一个张量 。 其中 , r 表示所有 (n, m) 对的可能相对位置 , 并将其重新索引到, 从而使得。
2. Lambda 卷积
尽管长程交互有一定的优点 , 但在很多任务中 , 局部性依然是一种强大的归纳偏置 。 从计算的角度来看 , 使用全局上下文可能会增加噪声 , 增加算力消耗 。 因此 , 将位置交互的范围限制到查询位置 n 周围的一个局部邻域 , 就像局部自注意和卷积中那样 , 可能是一种有用的做法 。 这可以通过对所需范围之外的上下文位置 m 的位置嵌入进行归零来实现 。 但是 , 对于较大的 |m| 值 , 这种策略依然代价高昂 , 因为计算仍在进行 。
在这种上下文被安排在多维网格上的情况下 , 可以使用一个将 V 中的第 v 维视为一个额外空间维度的常规卷积来从局部上下文中生成位置 lambda 。 例如 , 假设我们想在一维序列上生成局部范围大小为 |r| 的位置 lambdas 。 相对位置嵌入张量 可以变为, 然后被用作一个二维卷积的卷积核 , 计算所需的位置 lambda
研究者将这个运算称为 lambda 卷积 。 由于现在的计算被限制在局部范围内 , lambda 卷积可以得到与输入长度相关的线性时间和内存复杂度 。 lambda 卷积很容易用于 dilation 和 striding 等其他功能 , 并且在专用硬件加速器上享有高度优化的实现 。 这与局部自注意力的实现形成鲜明对比 , 后者需要物化重叠查询和内存块的特征块 , 从而增加了内存消耗和延迟(见下表4) 。