Backbone | 谷歌提出LambdaNetworks:无需注意力让网络更快更强(文末获取论文源码)(二)

简介: Backbone | 谷歌提出LambdaNetworks:无需注意力让网络更快更强(文末获取论文源码)(二)

4. Lambda Layer


4.1 Context转换为线性函数

Lambda Layer将输入和Context C作为输入,并生成线性函数lambdas,然后应用于Query产生输出。不失一般性假设。和self-attention一样可能存在。

下图给出了lambda层的计算过程:

image.png

这里大致描述应用到single query的lambda layer:

1、生成与Context相关的Lambda函数:

这里希望生成一个到的线性函数,即一个矩阵。Lambda层首先通过线性预测Context和keys(通过Softmax规范化操作得到)在Context的位置,计算值和键。用标准化键和位置嵌入将集合得到矩阵如下:

image.png

式中,定义content lambda 和position lambda 为:

  • content lambda :content lambda在所有query位置上共享,并且对context元素的排列是不变的。它对如何仅基于context内容转换query 进行编码;
  • position lambda :position lambda通过位置嵌入依赖于query位置。它编码如何根据context元素及其相对位置转换query 到query 。

2、将Lambda函数用于query:

query 是通过学习线性投影从输入得到的,Lambda层的输出为:

image.png

3、Lambda层的解释:

矩阵的列可以看作是一个固定大小的context特征集。这些context特征基于context的content(content-based interactions)和结构(position-based interactions)进行聚合。然后应用lambda根据query动态分布这些context特征,以产生的输出。这个过程捕获内容和基于位置的互动,而不产生attention maps。

4、Normalization:

作者实验表明,在计算query和value后应用batch normalization是有帮助的。

4.2 减少复杂性的Multi-Query

由于输出维度比较大可能会带来比较大的计算复杂度,因此作者还设计了Multi-query Lambda Layer以减少复杂度,进而降低推理时间。

本文从输出维解耦lambda层的时间和空间复杂性。不是强加,而是创建 query ,对每个query 应用相同的,并将输出cat为。现在有,这将复杂度降低了的1倍。head的数目控制了的大小相对于query 的总大小。

def lambda layer(queries, keys, embeddings, values):
    """Multi−query lambda layer."""
    # b: batch, n: input length, m: context length,
    # k: query/key depth, v: value depth,
    # h: number of heads, d: output dimension.
    content lambda = einsum(softmax(keys), values, 'bmk,bmv−>bkv')
    position lambdas = einsum(embeddings, values, 'nmk,bmv−>bnkv')
    content output = einsum(queries, content lambda, 'bhnk,bkv−>bnhv')
    position output = einsum(queries, position lambdas, 'bhnk,bnkv−>bnhv')
    output = reshape(content output + position output, [b, n, d])
    return output

虽然这类似于multi-head或multi-query attention formulation,但动机是不同的。在attention操作中使用多个query增加了表征能力和复杂性。相反,在lambda层中使用多个query降低了复杂性和表示能力(忽略额外的query)。

最后,作者指出,可以将Multi-Lambda Layer扩展到linear attention,可以将其视为只包含content的lambda层。

4.3 使Lambda层translation equivariance

使用相对位置嵌入可以对context的结构做出明确的假设。特别地,在许多学习场景中,translation equivariance(即移动输入导致输出等效移动的特性)是一种强烈的归纳bias。

本文通过确保嵌入的位置满足对任何translation  获得translation equivariance位置的相互作用。在实践中,定义了一个张量的相对位置嵌入, index r为可能的相对位置对。

4.4 Lambda卷积

尽管远距离相互作用有诸多好处,但在许多任务中,局部性仍然是一种强烈的感应偏向。使用全局context可能会被证明是noisy或computationally excessive。因此,就像local self-attention和卷积一样将位置交互的范围限制在query位置周围的一个局部邻域可能是有用的。这可以通过将context位置在所需范围之外的相对嵌入置零来实现。然而,这种策略对于的大值仍然是复杂的,因为计算仍然会发生——它们只是被置零。

在context排列在multidimensional grid的情况下,可以通过使用正则卷积从local contexts等效地计算位置lambda。作者把这个运算称为lambda卷积。n维的lambda卷积可以使用n-d与channel乘法器的深度卷积或卷积来实现,将维中的维视为额外的空间维。

image.png

由于计算现在被限制在局部范围内,lambda卷积的时间和内存复杂度与输入长度成线性关系。lambda卷积很容易与其他功能一起使用,比如dilation和striding,并在专门的硬件加速器上实现了优化。这与local self-attention的实现形成了鲜明的对比,后者需要具体化重叠查询和context块的特性补丁,增加了内存消耗和延迟。

# b: batch, n: input length, m: context length, r: scope size,
# k: query/key depth, v: value depth, h: number of heads, d: output dimension.
def compute position lambdas(embeddings, values, impl=’einsum’):
    if impl == ’einsum’: # embeddings shape: [n, m, k]
        position lambdas = einsum(embeddings, values, ’nmk,bmv−>bnkv’)
    else: # embeddings shape: [r, k]
        if impl == ’conv’:
            embeddings = reshape(embeddings, [r, 1, 1, k])
            values = reshape(values, [b, n, v, 1])
            position lambdas = conv2d(values, embeddings)
        elif impl == ’depthwise conv’:
            # Reshape and tile embeddings to [r, v, k] shape
            embeddings = reshape(embeddings, [r, 1, k])
            embeddings = tile(embeddings, [1, v, 1])
            position lambdas = depthwise conv1d(values, embeddings)
        # Transpose from shape [b, n, v, k] to shape [b, n, k, v]
        position lambdas = transpose(position lambdas, [0, 1, 3, 2])
    return position lambdas
def lambda layer(queries, keys, embeddings, values, impl=’einsum’):
    """Multi−query lambda layer."""
    content lambda = einsum(softmax(keys), values, ’bmk,bmv−>bkv’)
    position lambdas = compute position lambdas(embeddings, values, impl=impl)
    content output = einsum(queries, content lambda, ’bhnk,bkv−>bnhv’)
    position output = einsum(queries, position lambdas, ’bhnk,bnkv−>bnhv’)
    output = reshape(content output + position output, [b, n, d])
    return output


5 问题讨论


1、lambda层与attention操作相比如何?

Lambda层规模有利比较self-attention。使用self-attention的Vanilla Transformers有θ内存footprint,而LambdaNetworks有θ内存footprint。这使得lambda层能够以更高的分辨率和更大的批处理规模使用。

此外,lambda卷积的实现比它的local self-attention对等物更简单、更快。最后,ImageNet实验表明lambda层优于self-attention,证明了lambda层的好处不仅仅是提高了速度和可伸缩性。

2、lambda层与线性注意力机制有何不同?

Lambda层推广和扩展了线性注意力公式,以捕获基于位置的交互,这对于建模高度结构化的输入(如图像)至关重要的;

image.png

由于目标不是近似一个attention kernel,lambda层可以通过使用非线性和规范化进一步提升性能,

image.png

3、在视觉领域如何最好地使用lambda层?

与global或local attention相比,lambda层改进了可伸缩性、速度和实现的简易性,这使得它们成为可视化领域中使用的一个强有力的候选对象。消融实验表明,当优化速度-精度权衡时,lambda层在视觉架构的中分辨率和低分辨率阶段最有利。也可以设计完全依赖lambda层的架构,这样可以更有效地进行参数化处理。作者在附录A中讨给出了使用的意见。

4、lambda层的泛化性如何?

虽然这项工作主要集中在静态图像任务上,但作者注意到lambda层可以被实例化来建模各种结构上的交互,如图形、时间序列、空间格等。lambda层将在更多的模式中有帮助,包括多模态任务。作者在附录中对masked contexts和auto-regressive进行了讨论和复现。


6 实验


6.1 ImageNet分类

该实验主要是针对基于ResNet50的架构改进设计和实验,通过下表可以看出在ResNet50的基础上提升还是比较明显的:

通过下表可以看出Lambda层可以捕捉在高分辨率图像上的全局交互,并获得1.0%的提升,且相较于local self-attention速度提升接近3倍。此外,位置嵌入可以跨lambda层共享,以最小的退化成本进一步减少内存需求。最后,lambda卷积具有线性的内存复杂度,这对于检测或分割中看到的非常大的图像是实用的。

image.png

通过下表可以看出,基于EfficientNet的改进在不损失精度的情况下,可以将训练速度提升9倍之多,推理速度提升6倍之多。

6.2 COCO目标检测实验

在下表中,作者在COCO目标检测和实例分割任务评估了LambdaResNets作为Mask-RCNN的Backbone的性能。使用lambda层可以在所有目标大小上产生一致的增益,特别是那些最难定位的小对象。这表明lambda层对于需要local信息的更复杂的视觉任务也具有竞争力。


7 参考


[1].LAMBDANETWORKS: MODELING LONG-RANGE INTERACTIONS WITHOUT ATTENTION

相关文章
|
2月前
|
机器学习/深度学习 资源调度 算法框架/工具
AI-ANNE: 将神经网络迁移到微控制器的深度探索——论文阅读
AI-ANNE框架探索将深度学习模型迁移至微控制器的可行路径,基于MicroPython在Raspberry Pi Pico上实现神经网络核心组件,支持本地化推理,推动TinyML在边缘设备中的应用。
191 10
|
2月前
|
机器学习/深度学习 边缘计算 算法
SEENN: 迈向时间脉冲早退神经网络——论文阅读
SEENN提出一种时间脉冲早退神经网络,通过自适应调整每个样本的推理时间步数,有效平衡脉冲神经网络的准确率与计算效率。该方法基于置信度判断或强化学习策略,在保证高精度的同时显著降低能耗与延迟,适用于边缘计算与实时处理场景。
167 13
|
2月前
|
机器学习/深度学习 缓存 算法
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
2025年华为杯A题|通用神经网络处理器下的核内调度问题研究生数学建模|思路、代码、论文|持续更新中....
393 1
|
6月前
|
人工智能 算法 异构计算
阿里云基础网络技术5篇论文入选全球网络顶会NSDI
近日,阿里云基础网络技术5篇论文被NSDI 2025主会录用。研究涵盖大模型训练网络故障诊断、仿真、容器网络性能诊断、CDN流控算法智能选择及GPU解耦推理优化等领域。其中,《Evolution of Aegis》提出增强现有体系+训练过程感知的两阶段演进路线,显著降低故障诊断耗时;《SimAI》实现高精度大模型集群训练模拟;《Learning Production-Optimized Congestion Control Selection》通过AliCCS优化CDN拥塞控制;《Prism》设计全新GPU解耦推理方案;《ScalaCN》解决容器化RDMA场景性能问题。
289 7
阿里云基础网络技术5篇论文入选全球网络顶会NSDI
|
6月前
|
canal 负载均衡 智能网卡
阿里云洛神云网络论文入选SIGCOMM'25主会,相关实习生岗位火热招聘中
阿里云飞天洛神云网络的两项核心技术Nezha和Hermes被SIGCOMM 2025主会录用。Nezha通过计算网络解耦实现vSwitch池化架构,大幅提升网络性能;Hermes则提出用户态引导I/O事件通知框架,优化L7负载均衡。这两项技术突破解决了云网络中的关键问题,展现了阿里云在网络领域的领先实力。
1088 2
|
8月前
|
网络协议 物联网
VB6网络通信软件上位机开发,TCP网络通信,读写数据并处理,完整源码下载
本文介绍使用VB6开发网络通信上位机客户端程序,涵盖Winsock控件的引入与使用,包括连接服务端、发送数据(如通过`Winsock1.SendData`方法)及接收数据(利用`Winsock1_DataArrival`事件)。代码实现TCP网络通信,可读写并处理16进制数据,适用于自动化和工业控制领域。提供完整源码下载,适合学习VB6网络程序开发。 下载链接:[完整源码](http://xzios.cn:86/WJGL/DownLoadDetial?Id=20)
317 12
|
8月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
262 17
|
11月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
221 10