近十年来,修正线性单元 (ReLU) 一直是深度学习领域无可争议的激活函数之王。它优雅而简单——当输入为正时直接输出输入值,否则输出零——这一突破使得超深度神经网络的训练成为现实。快速、高效、易于实现,ReLU 迅速成为整个 AI 社区的默认选择。

许多竞争者试图挑战 ReLU 的王座。像 Leaky ReLU、ELU、SELU 等替代方案通过调整 ReLU 处理负输入的方式来寻求改进。然而,没有一个能真正取而代之。这些改进在不同模型和数据集上的效果往往不稳定,最终让实践者们回归 ReLU 可靠的简洁之美。

这引出了一个发人深省的问题: ReLU 真的是最优解吗?还是我们只是没有找到合适的挑战者?与其凭直觉手动设计更好的函数,我们能否在数学空间中 自动搜索 出一个更优的?

这正是 Google Brain 论文 《搜索激活函数》 (Searching for Activation Functions) 背后的核心思想。作者将激活函数设计转化为一个搜索问题,借助强化学习探索极为广阔的函数空间。结果?他们发现了 Swish,定义如下:

\[ f(x) = x \cdot \sigma(\beta x) \]

其中 \(\sigma\) 为 sigmoid 函数,\(\beta\) 是常数或可训练参数。Swish 在深度且具挑战性的模型中始终优于 ReLU。本文将详解它的发现过程、特点,以及为什么它可能成为新的首选激活函数。


从梯度消失到 ReLU 的统治

在神经网络中,每一层会先对输入进行线性变换 (矩阵乘法) 。如果没有激活函数,叠加的多层会退化成单一的大型线性变换,无法学习图像、音频或文本等数据中复杂的非线性模式。

激活函数引入了关键的非线性。早期的 sigmoidtanh 曾经流行,但由于 梯度消失 问题而逐渐淡出舞台: 当梯度在多层间反向传播时会呈指数级缩小,使得训练深度网络变得不可行。

ReLU,定义为 \(f(x) = \max(x, 0)\),是游戏规则的改变者。对于正输入,其导数恒为 1,让梯度无衰减地流动。这一特性催生了 2012 年的突破性模型 AlexNet,标志着深度学习热潮的开端。尽管存在“死亡 ReLU” (神经元长时间输出零) 的缺陷,其高效与速度依旧巩固了 ReLU 的标准地位。


自动化搜索更优激活函数

与其靠猜测和反复测试,作者自动化了寻找激活函数的过程——需要两个关键步骤:

1. 定义搜索空间

不能简单地告诉计算机“找出最好的激活函数”,必须设定构建模块。作者将搜索空间建立在可重复的 核心单元 上: 两个输入,各自经过一个 *一元函数 *(单输入单输出) 处理,再通过一个 *二元函数 *(双输入单输出) 组合。

一张图表,展示了用于构建激活函数的核心单元结构。两个输入 (x) 被送入独立的一元函数,然后由一个二元函数组合。这个输出可以被送入后续的单元。

图 1: 构建激活函数的核心单元结构。

一元函数包括:

  • 基本运算: \(x, -x, x^2, x^3, \sqrt{x}, \exp(x), \sin(x)\)
  • 现有激活函数: sigmoid \(\sigma(x)\)、ReLU \(\max(x, 0)\)
  • 可训练常数: 如 \(\beta\)

二元函数用于组合输入:

  • 加法: \(x_1 + x_2\)
  • 乘法: \(x_1 \cdot x_2\)
  • 最大值: \(\max(x_1, x_2)\)

通过组合这些核心单元,搜索可以覆盖极其多样的候选函数。

2. 搜索算法

面对多达 \(10^{12}\) 的组合,穷举搜索不可行。作者采用了类似神经架构搜索 (NAS) 的强化学习方法。

他们训练了一个 RNN 控制器 来生成候选激活函数定义——就像一个语言模型,只不过“词语”是各种一元与二元运算。

一张示意图,展示了 RNN 控制器如何自回归地预测激活函数的组成部分,并将每个预测结果作为下一步的输入反馈。

图 2: RNN 控制器预测激活函数组件。

循环过程如下:

  1. 生成: 控制器输出函数定义。
  2. 测试: 在 CIFAR-10 上用新函数构建并训练一个 ResNet-20 子网络。
  3. 奖励: 验证集准确率作为强化学习奖励信号。
  4. 更新: 近端策略优化算法推动控制器生成更高准确率的函数。

使用多台工作机分布式训练,加快了搜索进程。


发现: 简单为王

经过大量搜索,团队分析了表现最佳的新型函数。

两张图表,展示搜索发现的最佳新型激活函数曲线。这些函数包括 x·σ(βx)、min(x, sin(x)) 和 cos(x) − x。

图 3: 最佳激活函数的曲线。

主要观察:

  • 简洁性: 最佳函数通常只用一到两个核心单元,过度复杂反而阻碍优化。
  • 共同结构: 许多顶尖函数符合 \(b(x, g(x))\) 的模式,即原始激活前值 \(x\) 作为最终二元函数的一个输入——ReLU 也符合这种模式 (\(\max(x, 0)\)) 。
  • 周期性潜力: 包含 \(\sin\) 或 \(\cos\) 的函数表现出潜力——这是尚未充分探索的领域。
  • 除法陷阱: 带有除法的函数容易因分母接近零导致输出爆炸而失败。

团队在更大的 CIFAR 模型上测试这些顶尖函数的通用性。

一张表格,展示不同发现函数在 ResNet、Wide ResNet、DenseNet 上 CIFAR-10 的准确率。

表 1: 顶尖函数在 CIFAR-10 上的准确率。

一张表格,展示不同发现函数在 ResNet、Wide ResNet、DenseNet 上 CIFAR-100 的准确率。

表 2: 顶尖函数在 CIFAR-100 上的准确率。

两个函数脱颖而出: \(x \cdot \sigma(\beta x)\) 和 \(\max(x, \sigma(x))\)。前者被命名为 Swish,具有稍好的泛化能力,并成为深入研究的核心。


认识 Swish: \(f(x) = x \cdot \sigma(\beta x)\)

Swish 定义为:

\[ f(x) = x \cdot \sigma(\beta x), \quad \sigma(z) = \frac{1}{1 + e^{-z}} \]

其中 \(\beta\) 为常数或可训练参数。

一张图,展示 Swish 激活函数 (左) 及其一阶导数 (右) 在不同 β 值下的曲线。

图 4: 不同 \(\beta\) 值下的 Swish 曲线及导数。

特性:

  1. 平滑性: 零点处无尖角——完全可微。
  2. 非单调性: 负输入时先降后升形成独特“凸起”,大多数激活函数不具备。
  3. 正向无界,负向有界: 类似 ReLU,但更平滑。
  4. 介于线性与 ReLU 之间: 当 \(\beta \to 0\) 时趋近线性 (\(x/2\)) ;当 \(\beta \to \infty\) 时趋近 ReLU。

凸起的重要性

一张直方图,展示训练后的 ResNet 中激活前值分布。大量值位于 Swish 凸起所在的负值区间。

图 6: Swish 激活前值的分布。

许多激活前值落在凸起区间 (\(-5 \le x \le 0\)) ,说明网络在学习中利用了这一曲线形状。

可训练的 \(\beta\)

\(\beta\) 可通过训练适配,让每个神经元调整曲线。

一张直方图,展示 Mobile NASNet-A 中学习到的 β 值分布,集中在 1.0 附近,但有一定差异。

图 7: Mobile NASNet-A 中学习到的 \(\beta\) 分布。

学习值大多集中在 \(\beta \approx 1\) 附近,但分布足够广,显示其适应性。


Swish 与其他激活函数的对比

作者将 Swish 与以下基线进行比较:

  • LReLU: 固定负半轴斜率。
  • PReLU: 可学习负半轴斜率。
  • Softplus: ReLU 的平滑近似 \(\log(1+\exp(x))\)。
  • ELU: 负半轴使用指数函数。
  • SELU: 用于自归一化网络的缩放版 ELU。
  • GELU: 类似 Swish 的平滑非单调曲线。

一张汇总表,统计 Swish 在各类实验里优于、相当及劣于其它基线的次数。

表 3: 综合比较结果——Swish 多数情况下获胜。

CIFAR 结果

在 CIFAR-10/100 上,Swish (无论可训练还是固定 \(\beta=1\)) 在所有模型中表现均不逊于 ReLU,且常能匹敌最佳基线。

CIFAR-10 上,三种模型使用不同激活函数的结果表。

表 4: CIFAR-10 不同模型的准确率。

CIFAR-100 上,三种模型使用不同激活函数的结果表。

表 5: CIFAR-100 不同模型的准确率。

ImageNet 结果

在 ImageNet 架构中将 ReLU 换为 Swish,即可提升性能:

Mobile NASNet-A 在 ImageNet 上的训练曲线,Swish (橙色) 优于 ReLU (蓝色) 。

图 8: Mobile NASNet-A 训练曲线——Swish 超越 ReLU。

Mobile NASNet-A 提升 top-1 准确率 +0.9%;Inception-ResNet-v2 提升 +0.6%。

Mobile NASNet-A 在 ImageNet 上的结果表,三次运行 Swish 均优于 ReLU 与其他基线。

表 6: Mobile NASNet-A ImageNet 结果。

Inception-ResNet-v2 在 ImageNet 上的结果表,三次运行中 Swish 均优于 ReLU。

表 7: Inception-ResNet-v2 ImageNet 结果。


机器翻译

为测试跨领域效果,Swish 被用于 WMT14 英译德任务的 Transformer 模型中,表现依旧顶尖。

机器翻译 BLEU 分数表,显示 Swish-1 (\\(\\beta=1\\)) 在多个测试集取得最佳成绩。

表 11: 不同 newstest 集上的 BLEU 分数——Swish 表现出色。


结论: Swish 会成为新的默认吗?

本研究彰显了元学习——此处是学习激活函数——在颠覆既有认知方面的强大力量。团队没有依赖直觉,而是探索了广阔的数学空间,最终找到比现任冠军更好的函数。

Swish,\(f(x) = x \cdot \sigma(\beta x)\) 具有:

  • 简单: 在大多数深度学习框架中只需一行改动即可实现。
  • 高效: 从视觉到机器翻译的任务中均表现出一致提升。
  • 即插即用: 无需重新设计架构就能获益——若架构从一开始就为 Swish 设计,潜力更大。

在残差连接与归一化层盛行的时代,Swish 的成功挑战了“ReLU 恒定梯度对深度网络至关重要”的传统观点。其平滑、非单调的特性可能带来 ReLU 无法提供的优势。

对于追求快速收益的实践者来说,将 ReLU 换成 Swish 可能是最简单且最具前景的尝试之一。

旧王已逝,新王当立——Swish。