告别死亡 ReLU:SUGAR 如何复活经典激活函数?

研究提出SUGAR方法,通过替代梯度解决ReLU死亡问题,显著提升VGG、ResNet、Swin Transformer等模型的性能,尤其B-SiLU结合SUGAR效果显著。

原文标题:经典ReLU回归!重大缺陷「死亡ReLU问题」已被解决

原文作者:机器之心

冷月清谈:

研究人员提出了一种名为 SUGAR (Surrogate Gradient for ReLU) 的新方法,旨在解决 ReLU 激活函数中存在的“死亡 ReLU 问题”。该方法通过在反向传播时使用替代梯度函数来避免梯度消失,同时保持 ReLU 在前向传播中的简洁性和稀疏性。研究人员还设计了两种新型替代梯度函数 B-SiLU 和 NeLU,并进行了大量实验。实验结果表明,SUGAR 显著提升了 VGG-16 和 ResNet-18 等经典架构,以及 Swin Transformer 和 Conv2NeXt 等现代架构的性能,尤其是在结合 B-SiLU 时,提升效果更为显著。SUGAR 的应用能够有效缓解死亡 ReLU 问题,促进更稀疏的表示,并且易于实现,为 ReLU 的复兴带来了希望。

怜星夜思:

1、ReLU 的“死亡”问题一直都在,为什么之前没有类似 SUGAR 这样简单有效的解决方案出现呢?是研究方向的问题,还是ReLU本身的问题?
2、SUGAR 依赖于替代梯度函数,文章中提到了 B-SiLU 和 NeLU,但似乎 B-SiLU 效果更好,那么,是否存在更好的替代梯度函数?未来研究方向是什么?
3、文章提到 SUGAR 可以解决“死亡 ReLU 问题”,那么,对于已经训练好的、存在大量死亡 ReLU 的模型,是否可以使用 SUGAR 进行“复活”?如果可以,具体的操作步骤是什么?

原文内容

机器之心报道

机器之心编辑部

不用换模型、不用堆参数,靠 SUGAR 模型性能大增!


在深度学习领域中,对激活函数的探讨已成为一个独立的研究方向。例如 GELU、SELU 和 SiLU 等函数凭借其平滑梯度与卓越的收敛特性,已成为热门选择。


尽管这一趋势盛行,经典 ReLU 函数仍因其简洁性、固有稀疏性及其他优势拓扑特性而广受青睐。


然而 ReLU 单元易陷入所谓的「死亡 ReLU 问题」, 一旦某个神经元在训练中输出恒为 0,其梯度也为 0,无法再恢复。 这一现象最终制约了其整体效能,也是 ReLU 网络的重大缺陷。


正是死亡 ReLU 问题催生了大量改进的线性单元函数,包括但不限于:LeakyReLU、PReLU、GELU、SELU、SiLU/Swish 以及 ELU。这些函数通过为负预激活值引入非零激活,提供了不同的权衡。


本文,来自德国吕贝克大学等机构的研究者引入了一种新颖的方法:SUGAR(Surrogate Gradient for ReLU),在不牺牲 ReLU 优势的情况下解决了 ReLU 的局限性。即前向传播仍使用标准 ReLU(保持其稀疏性和简单性),反向传播时替换 ReLU 的导数为一个非零、连续的替代梯度函数(surrogate gradient)。


这样可以让 ReLU 在保持原始前向行为的同时,避免梯度为零的问题,从而复活死神经元。 


基于此,本文还设计了两种新型替代梯度函数:B-SiLU(Bounded SiLU)、 NeLU(Negative slope Linear Unit),可以无缝集成到各种模型中。


本研究的进一步贡献如下:


  • 本文对 VGG-16 和 ResNet-18 进行了全面的实验,表明 SUGAR 显著增强了这两种架构的泛化能力。

  • 本文在 Swin Transformer 和 Conv2NeXt 等现代架构上对 SUGAR 进行了评估,展示了其适应性和有效性。

  • 对 VGG-16 层激活的深入分析表明,当应用 SUGAR 时,激活分布发生了明显的变化,为其在缓解消亡 ReLU 问题中的作用提供了直观证据,同时促进了更稀疏的表示。


SUGAR 方法易于实现,并在前向传播中始终采用 ReLU 激活函数。与所提出的 B-SiLU 替代函数结合使用时,VGG-16 在 CIFAR-10 和 CIFAR-100 数据集上的测试准确率分别提升了 10 个百分点和 16 个百分点,而 ResNet-18 与未使用 SUGAR 的最佳模型相比,分别提升了 9 个百分点和 7 个百分点。



  • 论文标题: The Resurrection of the ReLU 

  • 论文链接:https://arxiv.org/pdf/2505.22074


SUGAR 介绍


本文提出的方法将 FGI ( Forward gradient injection )应用于具有平滑替代函数的 ReLU 网络中。在 SUGAR 框架下, FGI 可以表示为:


image.png


该公式实现了梯度注入,并确保即使对于负激活也能进行梯度传播。具体来说,利用 [34] 中的乘法技巧,替代梯度函数的直接注入如下:



替代函数的选择具有灵活性,可兼容当前最先进的各类激活函数,例如 ELU、GELU、SiLU、SELU 以及 Leaky ReLU(见图 8)。



关键区别在于,与 ReLU 不同,这些候选替代函数均具有一个共同特征:对负输入(x < 0)能产生非零梯度。虽然这些函数为负激活提供了梯度流通路径,但前向传播及后续损失计算仍严格依赖 x > 0 时的激活输出。


在初步研究中,本文意识到需要调整当前的激活函数以适应 SUGAR 的特定用途。因此,接下来本文提出了两个与这些设置良好匹配的新替代函数。


 B-SiLU:引入了一种名为 B-SiLU(Bounded Sigmoid Linear Unit) 的新型激活函数,它结合了自门控特性和可调下限参数。从数学上讲,该函数可以表示为:


image.png


B-SiLU 激活函数的导数为:


image.png


图 8 中可视化了 B-SiLU 及其导数。


NeLU:本文进一步引入了 NeLU(Negative slope Linear Unit),作为 ReLU 的平滑导数替代品。



最终的梯度如图 1 所示。



实验


总体而言,与 ReLU 基线相比,SUGAR 结合 ELU、SELU 以及特别是 B-SiLU 获得了最大的提升,而 LeakyReLU 和 NeLU 则始终表现不佳(见图 2)。在 CIFAR-10 数据集上使用 ResNet-18 作为骨干网络时,B-SiLU 的性能从 76.76% 提升到 86.42%,得益于 SUGAR。VGG-16 也表现出类似的效果:B-SiLU 将测试精度提高了近 10 个百分点(从 78.50% 提升到 88.35%)。



在 CIFAR-100 数据集上,SUGAR 结合 B-SiLU 的优势更加明显:ResNet-18 的准确率从 48.99% 跃升至 56.51%,VGG-16 的准确率从 48.73% 提升至 64.47%(见图 3)。同样,Leaky ReLU 和 NeLU 仅显示出微小的甚至是负的提升(例如 ResNet-18 上的 43.67% → 43.41%)。


总的来说,B-SiLU 在不同架构和数据集上均优于其他替代激活函数,ELU 和 SELU 能够提供可靠的改进,而在这种设置下,SUGAR 从 Leaky ReLU 和 NeLU 中并未获得有意义的益处。



当应用于 Conv2NeXt 时,如表 1 所示,SUGAR 在前向和反向传播过程中均始终优于使用 GELU 的基础模型。



了解更多内容,请参考原论文。



© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:[email protected]

从工程角度,个人认为可以考虑设计更高效的 B-SiLU 计算方法,毕竟深度学习模型对计算效率要求很高。另外,可以尝试将 SUGAR 应用于更大的模型和数据集上,验证其有效性和鲁棒性,并寻找其局限性。最后,开源 SUGAR 的代码,方便其他研究者使用和改进,也是非常有意义的。

提供一个不成熟的思路:可以尝试用一个小的学习率,仅仅训练 ReLU 层的替代梯度函数(比如 B-SiLU)的参数,而固定其他层的权重。这样做的目的是让这些死亡的 ReLU 逐渐“苏醒”过来,而不会对整个模型造成太大的扰动。当然,这只是一个想法,具体效果还需要实验验证。可以观察激活值的分布情况,如果发现死亡 ReLU 开始有输出,就说明这种方法是有效的。

理论上是可以的,但在实际操作中可能会比较复杂。一种方法是使用 SUGAR 重新训练整个模型,但这会耗费大量时间和计算资源。另一种方法是只微调那些存在大量死亡 ReLU 的层,但如何确定哪些层需要微调,以及微调多少,可能需要一些经验和技巧。此外,还需要注意学习率的设置,避免梯度爆炸或消失。

我觉得寻找“更好”的替代梯度函数,不如思考如何让现有的替代梯度函数更好地适应不同的网络结构和数据集。例如,可以尝试引入超参数,让网络自己学习 B-SiLU 的最佳参数。另外,可以研究 SUGAR 在其他领域的应用,例如自然语言处理、强化学习等。说不定在其他领域,NeLU 反而能发挥更大的作用。

可能之前大家更倾向于直接寻找 ReLU 的替代品,比如 GELU、SiLU 这些,而忽略了在 ReLU 基础上进行改进的思路。SUGAR 的出现,有点“反其道而行之”的感觉,算是激活函数研究领域的一个新视角。另外,也许是之前算力不足,难以支撑大规模的实验验证这种替代梯度的方法。

我觉得直接用 SUGAR “复活”已经死亡的 ReLU 可能性不大。毕竟,这些神经元已经长时间输出 0,权重可能已经严重偏离。更现实的做法是,在使用已有模型的基础上,在 ReLU 层之后插入 SUGAR,相当于给模型增加了一个“补丁”,让梯度能够更好地传播。当然,这需要在验证集上进行测试,确保性能没有下降。

B-SiLU 表现更好,可能因为它更好地平衡了梯度传播和稀疏性。未来的研究方向可以探索自适应的替代梯度函数,根据不同层、不同任务动态调整梯度。此外,将 SUGAR 与其他激活函数改进方法相结合,可能会产生意想不到的效果。从纯理论的角度,或许可以研究替代梯度函数应该满足哪些数学性质,才能保证 ReLU 网络的收敛性和泛化能力。

我觉得既有研究方向的原因,也有ReLU本身的问题。ReLU简单粗暴,但也因此存在缺陷。之前的研究更多集中在寻找更平滑、更复杂的激活函数,试图从根本上解决问题。SUGAR的出现,更像是“打补丁”,巧妙地避开了ReLU的缺点,同时保留了它的优点。不过,这种方法可能也有局限性,比如在某些特定任务上可能不如其他激活函数。

从学术角度讲,ReLU 的问题很早就被指出了,各种改进版本也层出不穷。SUGAR 巧妙的地方在于,它没有改变 ReLU 的前向传播特性,而仅仅是在反向传播时做了手脚,相当于给 ReLU 做了个“整容手术”,既保留了优点,又避免了缺点。这种思路可能之前被忽略了,因为大家都在追求“完美”的激活函数,而忽略了“够用就好”的原则。