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


抛弃注意力,类Transformer新模型实现新SOTA
本文插图
利用多查询 lambda 降低复杂度
对于多个 |b| 元素 , 每个都包含 |n| 输入 。 应用 lambda 层所需算数运算和内存占用的数量分别为 Θ(bnmkv) 和 Θ(bnkv + knm) 。 由于E_nm 参数捕获了基于位置的交互, 因此相对于输入长度 , 研究者拥有的内存占用仍是二次的 。 但是 , 这个二次项并不随批大小扩展 , 这与生成每个示例(per-example)注意力图谱的注意力操作一样 。 在实践中 , 超参数 |k| 设为很小的值 , 如 |k| =16 , 并且在注意力失效的情况下可以处理大批量的大型输入 。
多查询 lambdas 可以降低复杂度 。 lambdas 将注意力图 q_n ∈ R^k映射到输出 y_n ∈ R^d 。 如公式2所示 , 这意味着 |v|=d 。 所以 , |v| 的较小值成为了特征向量 y_n上的瓶颈 , 但考虑到 Θ(bnmkv) 和 Θ(bnkv + knm) 的时间和空间复杂度 , 更大的输入维数 |v| 将导致非常高昂的计算成本 。
所以 , 研究者提出将 lambda 层的时间和空间复杂度从输出维数 d 中解耦 。 他们并没有强制地令 |v|=d , 而是创建了 |h| 查询, 将相同的 lambda 函数 λ_n 应用到每个查询 q^h_n , 并将输出串连接成 y_n=concat(λ_nq^1_n , · · · ,λ_nq^|h|_n ) 。
由于每个 lambda 都应用于 |h| 查询 , 所以研究者将这一操作当做多查询 lambda 层 。 这也可以理解为将 lambda 约束到具有 |h| 等重复块的更小块矩阵 。 现在d=|hv| , 并且时间和空间复杂度变成了 Θ(bnmkd/h) 和 Θ(bnkd/h + knm) 。 此外 , 研究者注意到 , 这类似于多头或多查询注意力机制 , 但motivation不同 。 在注意力操作中使用多个查询增强了表示能力和复杂度 。 而在本研究中 , 使用多查询 lambdas 降低了复杂度和表示能力 。
下表2比较了多查询 lambda 层和多头注意力操作的时间和空间复杂度:
抛弃注意力,类Transformer新模型实现新SOTA
本文插图
批量多查询 lambda 层可以使用 einsum 实现高效执行 , 具体如下
抛弃注意力,类Transformer新模型实现新SOTA
本文插图
局部位置的 lambdas 可以通过 lambdas 卷积来获得 , 具体如上文公式3所示 。
实验
LambdaNetworks 优于基于卷积和注意力的同类方法
在下表 3 中 , 研究者进行了控制实验 , 以比较 LambdaNetworks 与 a)基线 ResNet50、b)通道注意力和 c)以往使用自注意力来补充或替换 ResNet50 中的 3x3 卷积的研究方法 。 结果显示 , 在参数成本仅为其他方法一小部分的情况下 , lambda 层显著优于这些方法 , 并且相较于 Squeeze-and-Excitation(通道注意力)实现了 +0.8% 的提升 。

抛弃注意力,类Transformer新模型实现新SOTA
本文插图
在上表 4 中 , 研究者对比了 lambda 层和自注意力机制 , 并给出了它们的吞吐量、内存复杂度和 ImageNet 图像识别准确性比较 , 这一结果展示了注意力机制的不足 。 相比之下 , lambda 层可以捕获高分辨率图像上的全局交互 , 并可以比局部自注意力机制获得多 1.0% 的提升 , 同时运行速度几乎是后者的 3 倍 。
此外 , 位置嵌入也可以在 lambda 层之间共享 , 以最小的降级花费进一步降低了内存使用的需求 。 最后 , lambda 卷积具有线性内存复杂度 , 这在图像检测和分割任务中遇到非常大的图片时非常有用 。
LambdaResNets 明显改善了 ImageNet 分类任务的速度-准确性权衡
下图 2 展示了 LambdaResNets与使用或不使用 channel attention 机制的ResNet 及最流行的 EfficientNets 相比的效果 。 LambdaResNets 在所有深度和图像尺度上均优于基准水平 , 最大的 LambdaResNet 实现了 SOTA 水平准确度 84.8 。 更值得注意的是 , LambdaResNets 在准确性一定的情况下比 EfficientNets 要快大概 3.5 倍 , 速度-准确性曲线提升明显 。