Searching for Activation Functions/zh

    From Marovi AI
    This page is a translated version of the page Searching for Activation Functions and the translation is 100% complete.
    Other languages:
    SummarySource
    Research Paper
    Authors Prajit Ramachandran; Barret Zoph; Quoc V. Le
    Year 2017
    Topic area Machine Learning
    Difficulty Research
    arXiv 1710.05941
    PDF Download PDF

    Searching for Activation Functions 是 Google Brain 的 Prajit Ramachandran、Barret Zoph 与 Quoc V. Le 在 2017 年发表的论文,利用自动化搜索为深度神经网络寻找标量激活函数。搜索得到了一族简单、非单调的函数,作者重点介绍了其中之一 —— Swish,定义为 $ f(x) = x \cdot \sigma(\beta x) $ —— 并表明在图像分类和机器翻译基准上,它在深层模型中持续匹配或优于 ReLU。该论文发表于 ICLR 2018 的研讨会环节。

    概述

    激活函数位于每个深度网络的核心,对优化与泛化都有显著影响。尽管手工设计的替代方案众多 —— Leaky ReLU、PReLU、ELU、SELU、GELU、Softplus —— 但 ReLU $ f(x) = \max(x, 0) $ 仍然是事实上的默认选择,因为这些替代函数在不同模型与数据集上的提升往往不稳定。

    作者没有再手工设计一个新的激活函数,而是在由一元与二元基元构成的组合空间上应用自动化搜索。被发现的最佳函数被命名为 Swish,结构上接近 ReLU,但平滑且非单调。作者表明,仅将 ReLU 替换为 Swish 即可在多种已设计好的架构上提升准确率,几乎无需调超参;而且该结果足够稳健,能够从搜索阶段使用的小型 CIFAR-10 子网络泛化到 ImageNet 和翻译任务规模的大模型。

    主要贡献

    • 一个针对标量激活函数的组合式搜索空间,由一小组一元函数(如 $ x $$ x^2 $$ \sigma(x) $$ \tanh(x) $$ \sin(x) $)和二元函数(如 $ x_1 + x_2 $$ x_1 \cdot x_2 $$ \max $$ \sigma(x_1)\cdot x_2 $)构成。
    • 一种搜索流程:在小空间中用穷举枚举,对于过大而无法枚举的空间则使用以 RL 训练(采用 PPO)的 RNN 控制器。
    • Swish $ f(x) = x \cdot \sigma(\beta x) $ 的发现与详细分析,其中 $ \beta $ 可以是常数,也可以是按通道可训练的参数。
    • 在 CIFAR-10/100、ImageNet 与 WMT 2014 英→德翻译上,与七个基线激活函数(ReLU、LReLU、PReLU、Softplus、ELU、SELU、GELU)进行了大量的实证对比。

    方法

    搜索空间将激活函数视为对形如 $ b(u_1(x_1), u_2(x_2)) $ 的"核心单元"的反复应用,其中 $ u_1, u_2 $ 为一元函数,$ b $ 为二元函数,输入 $ x_1, x_2 $ 要么是该层的预激活 $ x $,要么是更早一个核心单元的输出。通过改变核心单元数量与可用基元,便可构造不同的搜索空间。

    候选激活函数通过训练一个小型"子网络"来评估 —— 在 CIFAR-10 上训练一个 ResNet-20 共 10K 步 —— 并报告验证准确率。对于小空间,作者进行穷举枚举;对于 $ 10^{12} $ 量级的空间,则用强化学习训练一个 RNN 控制器以最大化验证准确率,并使用奖励的指数滑动平均作为基线。搜索在多台 worker 机上并行进行:每台机器从队列中取出候选激活函数,训练子网络,再将最终验证准确率反馈给搜索算法。

    搜索结束后,作者在三种更大的 CIFAR 架构 —— preactivation ResNet-164、Wide ResNet 28-10 与 DenseNet 100-12 —— 上对最优候选进行压力测试,以剔除那些只对小型子网络过拟合的函数。前八个新颖函数中有六个能够迁移;其中 $ x \cdot \sigma(\beta x) $$ \max(x, \sigma(x)) $ 在每个模型上都达到或超过 ReLU。最终作者选择对 $ x \cdot \sigma(\beta x) $ 进行大规模评估,部分原因是早期实验表明它的泛化更好。

    搜索揭示了若干反复出现的模式:简单函数优于复杂函数(1–2 个核心单元就够了);表现最好的函数往往把原始预激活作为最终二元运算的输入之一(与 ReLU 的结构一致);基于除法的函数通常表现不佳,因为分母接近零时输出会爆炸。在头部候选中,作者特别挑出

    $ f(x) = x \cdot \sigma(\beta x), \qquad \sigma(z) = (1 + \exp(-z))^{-1} $

    并称之为 Swish。令 $ \beta = 1 $ 即可还原 Elfwing 等人的 Sigmoid-weighted Linear Unit(SiL);令 $ \beta \to \infty $ 还原 ReLU;令 $ \beta = 0 $ 得到线性函数 $ x/2 $。因此可以将 Swish 视为线性函数与 ReLU 之间的平滑插值,$ \beta $ 控制非线性的强弱。

    Swish 的一阶导数为

    $ f'(x) = \sigma(\beta x) + \beta x \cdot \sigma(\beta x)\bigl(1 - \sigma(\beta x)\bigr) = \beta f(x) + \sigma(\beta x)\bigl(1 - \beta f(x)\bigr) $

    因此 Swish 处处光滑,向上无界,向下有界,且非单调 —— 它在 $ x $ 大致介于 $ -5 $$ 0 $ 之间形成一个低于零的小"凸包",再随 $ x \to -\infty $ 从下方逼近零。作者在实验中表明,大量预激活值落在这个凸包范围内,并认为这是该函数的关键特征。凸包形状由 $ \beta $ 控制:当 $ \beta $ 作为按通道可训练的参数时,Mobile NASNet-A 上学到的 $ \beta $ 值分布在 0 至 1.5 之间,并在 1 附近出现峰值,说明模型确实利用了这一额外灵活性。

    在现代框架中只需一行代码即可实现(例如 x * tf.sigmoid(beta * x))。作者指出,必须保留 BatchNorm 的 scale 参数(有些库在 ReLU 下默认关闭它),并且学习率通常需要比 ReLU 调好的值略低一些。

    结果

    在 CIFAR-10 与 CIFAR-100 上,Swish 与 Swish-1 在所有考察的模型(preactivation ResNet-164、Wide ResNet 28-10、DenseNet 100-12)上都达到或超过 ReLU。"最佳基线"因模型而异 —— Softplus、GELU 与 PReLU 分别在不同行领先 —— 但只有 Swish 始终位于榜首或接近榜首。

    ImageNet 分类任务中,将 ReLU 替换为 Swish 得到:

    • Mobile NASNet-A:三次实验平均 top-1 准确率提升 +1.4%($ 73.5 \to 74.9 $%)。
    • Inception-ResNet-v2:top-1 提升 +0.5–0.6%($ 79.6 \to 80.2 $%)。
    • MobileNet:top-1 提升 +2.2%($ 72.0 \to 74.2 $%)。
    • Inception-v3Inception-v4:top-1 仅约 +0.1%,处于噪声范围内。

    作为参照,作者指出 Inception-v3 与 Inception-ResNet-v2 之间整整一年的架构调优只换来了 1.3% 的提升,因此一行代码切换激活函数所带来的收益在经济上是可观的。在 WMT 2014 英→德数据集上训练的 12 层 "Base Transformer" 上,Swish-1 在四个 newstest 集上同样匹配或超越所有基线,其中在 newstest2016 上的提升最大(比次优结果高 +0.6 BLEU)。

    对每个基线进行的总结性符号检验(在九个模型上统计胜、平、负)表明,Swish 严格地以"赢多于输"的方式击败 ReLU、LReLU、PReLU、Softplus、ELU、SELU 与 GELU 这七种函数。

    Swish 的提升在移动尺寸的卷积架构(Mobile NASNet-A、MobileNet)以及 Transformer 上最为显著,而在 Inception-v4 上差距缩小到噪声水平。Softplus 是下一个最稳定的基线,在大型图像分类器上具有竞争力,但在机器翻译上崩溃(在 WMT newstest 上比 ReLU 低 3 BLEU 以上),这恰好展示了本文要解决的跨领域不一致性。

    影响

    Swish 论文的实际影响远超其理论创新本身。事实上,Elfwing、Uchibe 与 Doya 此前已在强化学习背景下独立提出该函数,名为 Sigmoid-weighted Linear Unit(SiL);与之密切相关的 GELU(Hendrycks 与 Gimpel,2016)也具有相同的光滑、非单调形状。本文的贡献是首次系统性地实证证明此类函数能在大规模图像与语言模型上提高准确率,并提出了产生它的方法 —— 在组合搜索空间上搜索,并以子网络作为快速代理。

    论文发表后,Swish 被加入了主流框架(如 tf.nn.swish),并在 EfficientNet 等生产级架构中得到应用。其变体 Hard Swish —— 一种由 $ x \cdot \mathrm{ReLU6}(x + 3)/6 $ 定义的分段线性近似 —— 在 MobileNetV3 中被引入,以在移动硬件上以更低的代价保留 Swish 的准确率收益。GELU 本身后来由 BERT 与 GPT 系列推广,并成为 Transformer 前馈模块中的默认激活函数,从而进一步印证了 Swish 帮助主流化的这一类激活函数。

    本文还推动了对神经网络底层组件使用自动化搜索的合法化,与 Google Brain 团队同期的架构搜索(NASNet)与优化器搜索工作相互呼应。作者明确将他们的发现与下述论点关联起来:在 残差连接与 Transformer 式注意力出现后,许多 ReLU 最初被设计来缓解的优化问题已被消除,因此"架构改进降低了单个组件保持梯度的必要性"。

    对论文常见的误读是"Swish 在所有场景都击败 ReLU";实际的实验记录则更为微妙。在大型图像分类器上,差距很小且依赖架构 —— Inception-v4 实际上是平手 —— 任何对这些网络的重训都应从零调整学习率,而不是复用为 ReLU 调好的方案。稳健的结论是比较意义上的:在九种架构与三个领域中,Swish 是最不差的默认选择,而该搜索流程也可以重新运行,为新的架构寻找专门的激活函数。

    参见

    参考文献

    • Ramachandran, P., Zoph, B., & Le, Q. V. (2017). Searching for Activation Functions. arXiv:1710.05941.
    • Elfwing, S., Uchibe, E., & Doya, K. (2017). Sigmoid-weighted linear units for neural network function approximation in reinforcement learning. arXiv:1702.03118.
    • Hendrycks, D., & Gimpel, K. (2016). Gaussian Error Linear Units (GELUs). arXiv:1606.08415.
    • Zoph, B., & Le, Q. V. (2017). Neural Architecture Search with Reinforcement Learning. ICLR.
    • Bello, I., Zoph, B., Vasudevan, V., & Le, Q. V. (2017). Neural Optimizer Search with Reinforcement Learning. ICML.
    • Howard, A., et al. (2019). Searching for MobileNetV3. ICCV —— 引入 Hard Swish。