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。