重访高效通道注意力论文(2019年,12000次引用)— 核心假设并不完全正确 [D]

Reddit r/MachineLearning 新闻

摘要

本文重访了高效通道注意力(ECA)论文,并使用国际象棋数据进行实验,挑战了关于跨通道交互的核心假设。

ECA被定位为挤压激励(SE)的后续。ECA背后的理念相当简单。与SE将通道均值缩减到一个较小的隐藏层不同,它直接使用一维卷积核在通道均值本身上,避免了降维的需要。结果是不可否认的:ECA明显优于SE。作者声称跨通道交互是关键成分。但在概念层面,ECA的设计并不太合理。让我们退一步思考。为什么我们首先使用卷积?卷积从根本上是为具有底层拓扑结构的数据(例如空间或时间)设计的。它们假设局部性(相邻元素交互)和翻译不变性(相同的核适用于所有地方)。在二维图像上滑动核之所以有效,是因为坐标有意义,并且图像的统计特性在帧上大体平稳。这并不完全正确——这就是为什么现代卷积神经网络(CNN)已经转向动态卷积——但它仍然足够有用。如果你随机排列图像中的像素,卷积将毫无意义。现在考虑表格数据。假设我们有32个通道,例如[成本、重量、材料、颜色、体积、速度,...]。使用CNN架构处理这类数据显然不合适。宽度为3的一维核将在通道上移动,使得[成本、重量、材料]作为输入,同样[重量、材料、颜色]作为输入,等等,并且必须以某种方式输出有意义的内容。ECA正是执行这种计算。ECA在通道维度上进行一维卷积。这是一个被诅咒的卷积,因为表格数据没有适合它的拓扑结构。在实践中,如果你在表格数据上使用CNN,我期望性能优于随机,因为神经网络在给定约束条件下非常适合拟合数据集,并会重新组织通道顺序(使用初始的1x1投影层)以适应它。它会学习使用卷积,但这将是一种低效的方法。 实验:我没有使用图像数据,而是使用了国际象棋数据:国际象棋的六子残局库。国际象棋是一个已解决的游戏,棋盘上有6个或更少的棋子。网络的任务是:给定一个局面,在完美对弈下,当前玩家是赢、和还是输?lc0最初使用的是CNN架构(当时超越了Stockfish,成为最强的国际象棋引擎),因此它非常适合这项任务。国际象棋残局库有助于基准测试架构设计,因为训练样本可以从完整的底层问题中采样,而不是从不完整的数据集。这与CIFAR-10图像数据集等不同,其中训练集并不期望是来自真实完整分布的随机无偏样本——我们可能无意中拥有不成比例的晴天青蛙图片。即使我们不训练所有3.7万亿个六子局面,我们也知道我们是从这些局面中随机采样的,这意味着我们不是在有偏子集上训练——我们可以自信地认为我们的训练样本具有全集的代表性。 实验结果。每个通道门控行是3次或更多单独运行的平均值。 通道门控 平均测试损失 平均测试准确率 IdentityGate 0.0981 96.04% SqueezeExcitationGate (SE8) 0.0954 96.17% EfficientChannelAttentionGate (k=3) 0.0822 96.68% EfficientChannelAttentionGate (k=1) 0.0826 96.61% CenterMaskedEfficientChannelAttentionGate (k=3) 0.0821 96.63% PerChannelGate 0.0815 96.65% IdentityGate:不出所料,没有压缩的所有测试中表现最差。 SqueezeExcitationGate:SE显示出适度的改进。 EfficientChannelAttentionGate (k=3):ECA,与论文一致,显示出对SE的明显改进。 EfficientChannelAttentionGate (k=1):令人惊讶的是,这有良好的结果,表明他们的核心假设——跨通道交互是关键——并不完全正确。 CenterMaskedEfficientChannelAttentionGate:k=3的ECA,中间通道被遮蔽(在[1, 0, 1]遮蔽中)。这使情况复杂化,表明跨通道注意力实际上可能有用。 PerChannelGate:不是使用滑动在轴上的卷积核,而是简单地为每个通道使用单独指定的权重。这为每个通道有一个参数,比ECA的3个参数多,当k=3时,但它仍然可以忽略不计,因为每层我们期望大约num_channels^2个参数。为清晰起见并避免歧义,这里是关键压缩的代码。所以基本上有三层结果:没有压缩的结果差,SE结果中等,其余ECA类结果最好。所以有些奇怪的事情正在发生。我没有一个很好的解释(特别是[1, 0, 1]遮蔽的成功),并且我目前正在尝试找到一个。我怀疑的一点是,在101遮蔽中,网络足够聪明,能够将信息偷运到通道A和C的全局均值中,以帮助通道B而不影响正常通道操作(通过使用偏置来抵消其全局均值的偏移),但尚未测试这个假设。有很多可能性。好消息是权重计数很低——只有3个,当k=3时,所以手动检查权重可能有用。在我挖掘中,我找到一些重现原始ECA的仓库。没有一个测试k=1的情况,这将揭示机制的解释是不正确的。官方仓库确实使用k=1,但仅用于有限数量的早期层,然后对其余层使用k=3。 仓库 允许/使用k=1? 训练k=1 消融研究? 结果/备注 BangguWu/ECANet (官方) 是的。MobileNetV2在C<96时使用k=1,否则k=3。 部分。 在MobileNetV2中混合k={1,3};没有纯k=1 ResNet消融 72.56 Top-1 / 90.81 Top-5 on ImageNet Reproducibility-Challenge-ECANET 通用公式可以产生k=1,但不在标准测试宽度。 否。 没有独立的k=1运行发现 无 huggingface/pytorch-image-models (timm) 可以手动设置为k=1,但自适应公式将k夹紧到≥3。 否。 没有官方k=1基准 无 有趣的是,k=1的情况,一个1参数的方法,优于SE、CBAM并匹配ECA。这绝对让我怀疑我们是否在某种程度上过度工程化了网络。我的最后想法:论文和仓库应该测试“退化”核大小1,它没有跨通道交互。在k=1时,ECA仍然击败SE,这削弱了他们的核心假设。他们花费了大量时间微调k的确切最优值,而没有采取科学方法来反驳他们的假设。除了传统的现实世界数据集,架构也应该在合成数据集上测试,其中我们可以完全访问完整数据集(例如国际象棋残局数据),这样我们可以更好地分离偶然正则化改进效果与核心架构效率效果——想法是当我们可以访问完整、无缺陷的数据集时,没有过拟合的风险。如果新架构在现实世界数据上表现良好的真正原因是由于隐式正则化,它不会在合成数据集上显示相同的改进。
查看原文

相似文章

重新思考高效注意力在混合架构中的作用

arXiv cs.CL

本文系统分析了高效注意力模块在混合语言模型架构中的作用,发现不同设计在充分训练下长上下文性能趋于一致,且长距离检索主要由全注意力承担,而高效注意力塑造了优化轨迹,揭示了一个称为“大窗口懒惰”的现象。

学习重点:使用因果证据集监督稀疏注意力路由

arXiv cs.LG

本文测试了注意力权重能揭示模型输出实际依赖内容的假设,发现注意力与因果依赖常不一致。作者提出将干预掩码获得的因果证据集作为稀疏注意力路由器的监督信号,在注意力蒸馏路由器失败的检索任务上实现了近乎完美的准确率。

Attention Is All You Need

Reddit r/ArtificialInteligence

对里程碑式论文《Attention Is All You Need》的反思,着重说明了如何通过去除循环并完全依赖注意力机制彻底改变了人工智能,并催生了像GPT和Claude这样的现代大语言模型。

提示-激活对偶性:通过注意力层干预改进激活引导

Hugging Face Daily Papers

本文识别出KV缓存污染是对话中激活引导的一种失败模式,并提出了GCAD方法,该方法从提示贡献中提取引导信号,并应用词元级门控来改进长程连贯性,在多轮基准上取得了显著提升。