AI 的激活函數:為什麼需要非線性

artificial%20intelligence%20concept%2C%20digital%2...
發表時間:2026 年 10 月 28 日 | 更新日期:2026 年 10 月 28 日 | 編輯:雅寶社區編輯團隊
AI 的激活函數:為什麼需要非線性 - 雅寶社區 · 頂客論壇

梯度性質良好:不能讓梯度在傳遞過程中被過度壓縮或放大。

輸出範圍合理:避免數值爆炸,也影響收斂速度。

值得注意的是,這些條件之間往往互相衝突。Sigmoid 可微、輸出有界,但梯度會飽和;ReLU 計算快、梯度簡單,卻不可微且有死亡神經元問題。整部激活函數的發展史,其實就是工程師在這些取捨之間不斷尋找平衡的過程。

二、為什麼一定要非線性?三個關鍵理由

這是本文的核心問題。很多人知道「激活函數要非線性」,但說不清楚為什麼。以下從代數、幾何與學習理論三個角度,把這件事講透。

2.1 理由一:線性函數的疊加,仍然是線性函數

假設我們有一個兩層的網絡,第一層是 W₁x + b₁,第二層是 W₂h + b₂,而且中間沒有激活函數。那麼整個網絡的輸出就是:

y = W₂(W₁x + b₁) + b₂ = (W₂W₁)x + (W₂b₁ + b₂)

令 W' = W₂W₁、b' = W₂b₁ + b₂,你會發現輸出仍然是 W'x + b' 的形式——一個單純的線性變換。不論你疊了兩層、十層還是一百層,只要中間沒有非線性,整個網絡在數學上等價於「一層線性層」。多加的層數只會增加參數冗餘,不會增加任何表達能力。

這是一個致命的限制。這意味著:如果沒有非線性,深度學習根本不會存在,因為「深」這個概念本身失去了意義。深度帶來的表達能力提升,完全建立在「每一層都對上一層的輸出做非線性扭曲」這個前提上。

2.2 理由二:單層線性模型無法解決簡單的分類問題

從幾何角度來看,一個線性分類器能做的,只是在特徵空間裡畫一個超平面(在二維是直線,在三維是平面)把資料切開。這意味著它只能處理「線性可分」的問題。

最經典的反例是 XOR(異或)問題。XOR 的輸入輸出關係是:輸入 (0,0) 和 (1,1) 輸出 0,輸入 (0,1) 和 (1,0) 輸出 1。如果你把它畫在二維平面上,這四個點呈現對角分佈,任何一條直線都不可能把兩組點分開。這正是 1969 年 Minsky 與 Papert 在《Perceptrons》一書中指出的問題,也是神經網絡研究第一次進入寒冬的原因之一。

出路在哪裡?就是引入非線性。一旦加入激活函數,網絡就不再只能畫直線,而是可以彎曲、折疊特徵空間,把原本線性不可分的資料映射到一個新的空間,在那裡它就變成線性可分了。這個「映射到高維空間使其線性可分」的思路,與支持向量機中的核方法(Kernel Method)是相通的——差別在於,神經網絡是自動學習這個映射,而不是人工指定核函數。

2.3 理由三:通用近似定理的成立前提

1989 年,George Cybenko 提出了著名的通用近似定理(Universal Approximation Theorem):一個只有單一隱藏層的前饋神經網絡,只要隱藏層神經元數量足夠多,就能以任意精度逼近定義在緊集上的任意連續函數。

這條定理聽起來非常強大,等同於說「神經網絡理論上可以學會任何東西」。但很多人忽略了它的關鍵前提:激活函數必須是非線性的(更精確地說,不能是多項式函數)。如果激活函數是線性的,這個定理立刻失效,因為整個網絡退化為線性函數,只能表示線性函數,連一個簡單的二次曲線都學不會。

所以非線性不只是「讓模型變強」的加分項,而是通用近似定理能夠成立的必要條件。沒有它,神經網絡的理論基礎就崩塌了。

2.4 幾何直覺:每一次非線性,都是一次空間折疊

如果數學推導太抽象,可以換一個幾何圖像來理解。以 ReLU 為例,f(z) = max(0, z),它做的事情是「把負半軸壓平、正半軸原樣保留」。這個操作在幾何上相當於沿著某個超平面把空間「對折」了一次。

每一個 ReLU 神經元,就是一次對折;一層有幾十個神經元,就是同時沿著多個方向對折;幾十層疊起來,就是反覆折疊、扭轉、拉伸。原本均勻分佈的資料點,經過這番操作後,會被擠壓到各種不同的區域,於是原本混在一起的類別就分開了。

研究者甚至量化了這種表達能力。2014 年 Montúfar 等人的研究指出,由 ReLU 組成的深層網絡,其輸入空間會被切分成大量的線性區域,而這些區域的數量會隨層數呈指數增長。换句话说,深度加上非線性,帶來的是表達能力的指數級爆炸。這才是深度學習之所以「深」的根本原因。

三、激活函數的演化史:從 Sigmoid 到 SwiGLU

理解了「為什麼需要非線性」之後,下一個問題是「該用哪一種非線性」。這個問題沒有標準答案,因為不同時代的模型架構、資料規模與訓練技巧都不同,最適合的激活函數也隨之改變。

3.1 啟蒙時代:Sigmoid 與 Tanh

Sigmoid 函數定義為 σ(x) = 1 / (1 + e⁻ˣ),輸出範圍在 (0, 1) 之間,形狀像一條平滑的 S 曲線。它的優點是輸出有界、可微、而且輸出可以自然地被解釋為機率,因此在早期的多層感知機與邏輯回歸中被廣泛使用。

但 Sigmoid 有兩個致命缺點。第一是梯度飽和:當輸入的絕對值很大時,函數進入平坦區域,導數趨近於 0。而 Sigmoid 的導數最大值只有 0.25(發生在 x = 0 處)。在反向傳播中,梯度需要逐層相乘,若每層都乘上一個小於 0.25 的數,十層之後梯度就會縮小到百萬分之一以下,這就是所謂的梯度消失(Vanishing Gradient)。第二是輸出非零中心:Sigmoid 的輸出恆為正,會導致下一層的梯度更新方向出现偏差,收斂速度變慢。

Tanh 函數是 Sigmoid 的改良版,定義為 tanh(x) = (eˣ − e⁻ˣ) / (eˣ + e⁻ˣ),輸出範圍在 (−1, 1) 之間,並且是零中心的。它的導數最大值為 1,比 Sigmoid 好一些,但本質上仍然是飽和函數,深層網絡中梯度消失的問題依然存在。在 RNN 時代,Tanh 曾經是隱藏層的標準選擇。

3.2 ReLU 革命:簡單到不像話,卻改變了一切

2010 年前後,Nair 與 Hinton 以及 Glorot 等人的工作讓 ReLU(Rectified Linear Unit) 開始流行。它的定義簡單到不可思議:f(x) = max(0, x)。輸入為正就原樣輸出,輸入為負就輸出 0。

這個看似粗暴的函數,卻解決了深度學習的關鍵瓶頸:

  • 緩解梯度消失:在正區間,ReLU 的導數恆為 1,梯度可以無衰減地往回傳,深層網絡終於能有效訓練。
  • 計算極快:只需要一次比較運算,沒有指數、沒有除法,對 GPU 非常友善。
  • 稀疏激活:大約一半的神經元輸出為 0,網路呈現稀疏性,有助於減少參數間的相互依賴,一定程度上起到正則化效果。
  • 分段線性:雖然整體非線性,但每個區域內都是線性的,這讓梯度計算與理論分析都相對簡單。
  • 2012 年 AlexNet 在 ImageNet 競賽中大幅領先,ReLU 正是背後的關鍵功臣之一。從此之後,ReLU 成為卷積神經網絡的預設選擇,也奠定了此後十年的主流地位。

    3.3 現代變體:Leaky ReLU、ELU、GELU、SiLU 與 SwiGLU

    ReLU 雖然好用,但仍有缺陷,於是各種改良版本陸續出現。

    Leaky ReLU 針對「死亡 ReLU」問題設計:在負區間不再輸出 0,而是給一個很小的斜率 α(例如 0.01),即 f(x) = max(αx, x)。這樣即使輸入為負,梯度也不會完全消失。PReLU 更進一步,把 α 變成可學習的參數,讓網路自己決定負區間的斜率。

    ELU(Exponential Linear Unit) 在負區間使用指數函數,讓輸出更接近零中心,有助於加速收斂。而 SELU 則是透過精心設計的參數,讓網路在特定條件下具有自歸一化(Self-Normalizing)的性質。

    GELU(Gaussian Error Linear Unit) 是近年來最重要的進展之一,定義為 f(x) = x · Φ(x),其中 Φ 是標準常態分佈的累積分佈函數。它的直覺是「根據輸入的大小,以一種平滑的機率方式決定保留多少」。相較於 ReLU 的硬性截斷,GELU 更平滑,在 0 附近有負值區域,實驗中通常能帶來更好的表現。BERT、GPT 系列模型都採用了 GELU。

    SiLU(又稱 Swish) 定義為 f(x) = x · sigmoid(x),是 Google 在 2017 年透過自動化搜尋找到的激活函數。它平滑、非單調,在深層網路中表現優異。

    SwiGLU 則是目前大型語言模型的主流選擇。它源自 Google 在 PaLM 模型中引入的 GLU(Gated Linear Unit)變體,公式為 SwiGLU(x) = Swish(W₁x) ⊗ (W₃x),其中 ⊗ 是逐元素相乘。這種「閘控」結構讓網路可以動態決定哪些資訊要通過,表達能力更強。Llama、Mistral 等開源模型都採用了 SwiGLU。

    激活函數

    公式

    主要優點

    主要缺點

    典型應用

    Sigmoid

    1 / (1 + e⁻ˣ)

    輸出有界、可解釋為機率

    梯度消失、非零中心

    輸出層、早期 MLP

    Tanh

    (eˣ − e⁻ˣ)/(eˣ + e⁻ˣ)

    零中心、收斂較快

    仍會飽和、梯度消失

    RNN 隱藏層

    ReLU

    max(0, x)

    計算快、緩解梯度消失、稀疏

    死亡神經元、非零中心

    CNN、早期 Transformer

    Leaky ReLU

    max(αx, x)

    解決死亡 ReLU

    多一個超參數

    GAN、深層 CNN

    GELU

    x · Φ(x)

    平滑、表現穩定優異

    計算稍貴

    BERT、GPT

    SiLU / Swish

    x · sigmoid(x)

    平滑、非單調

    計算稍貴

    EfficientNet

    SwiGLU

    Swish(W₁x) ⊗ (W₃x)

    閘控機制、表達能力強

    參數量增加

    PaLM、Llama、Mistral

    四、非線性帶來的副作用:梯度消失、飽和與死亡神經元

    非線性是必要的,但它同時也是許多訓練問題的來源。理解這些副作用,才能真正理解為什麼激活函數的設計如此困難。

    4.1 梯度消失與梯度爆炸

    反向傳播的核心是鏈式法則:誤差梯度從輸出層往回傳時,每經過一層就要乘上該層的權重與激活函數的導數。這意味著梯度的總大小,大致等於「各層導數與權重的連乘」。如果每一層的乘積都小於 1,梯度就會指數級縮小;如果都大於 1,就會指數級放大。

    以 Sigmoid 為例,導數最大只有 0.25。假設一個十層的網路,最理想的情況(所有輸入都恰好在 0 附近),梯度衰減因子也有 0.25¹⁰ ≈ 9.5 × 10⁻⁷。實際上大部分神經元的輸入都遠離 0,導數更小,梯度幾乎消失殆盡,前面的層根本學不到東西。反過來,如果權重初始化過大,就可能造成梯度爆炸,訓練直接發散。

    這也是 ReLU 的價值所在:正區間導數恆為 1,不會壓縮梯度。但 ReLU 本身並沒有解決所有問題——它只是把問題從「梯度消失」轉移到了「死亡神經元」。真正讓深層網路穩定訓練的,其實是後來一系列工程技術的組合:He 初始化、批次正規化(Batch Normalization)、殘差連接(Residual Connection)等。

    4.2 死亡 ReLU 與非零中心問題

    ReLU 在負區間的導數為 0。如果某個神經元的權重在訓練過程中被更新到「對所有輸入都輸出負值」的位置,那麼它的梯度將永遠是 0,權重再也不會更新——這個神經元就「死」了。學習率設得太大時,這種情況特別容易發生,甚至可能導致網路中相當比例的神經元永久失效。

    Leaky ReLU、PReLU、ELU 等變體正是為了緩解這個問題而誕生:在負區間保留一個微小的梯度,讓神經元有機會「復活」。

    另一個問題是非零中心。ReLU 的輸出恆為非負,這會導致下一層的輸入分佈偏移,梯度更新的方向出現鋸齒狀震盪,收斂變慢。這也是為什麼後來的研究者傾向於選擇 GELU、SiLU 這類在 0 附近有負值區域的平滑函數——它們的輸出更接近零中心。

    4.3 非線性的「強度」與模型泛化

    非線性不是越強越好,這點常被忽略。過於劇烈的非線性(例如極度陡峭的飽和函數)會讓損失函數的地形變得崎嶇,最佳化變得困難;過於溫和的非線性則可能不足以提供足夠的表達能力。

    此外,非線性與泛化之間也存在微妙關係。研究顯示,ReLU 網路本質上是分段線性函數,其複雜度與線性區域的數量有關。區域數量太少,模型欠擬合;太多,則可能過度擬合訓練資料。如何在兩者之間取得平衡,是模型設計與正則化策略共同面對的課題。

    五、不同架構中的非線性:CNN、RNN 與 Transformer

    5.1 卷積神經網絡:ReLU 的黃金時代

    在 CNN 中,非線性通常緊接在卷積層之後。卷積本身是線性運算(本質上是滑動視窗的加權求和),如果沒有激活函數,再多層卷積堆疊起來仍然等價於一個大的線性濾波器。正是 ReLU 的出現,讓 CNN 能夠學習到層次化的特徵:淺層偵測邊緣與紋理,深層組合成物件部件,最終形成完整的語義表徵。

    值得注意的是,CNN 中的非線性並不只有激活函數。池化層(Pooling)取最大值或平均值,也是一種非線性操作;而現代網路中的批次正規化,同樣引入了非線性的統計變換。這些機制共同作用,才讓 CNN 具備強大的視覺理解能力。

    5.2 循環神經網絡:飽和函數的困境

    RNN 需要在時間轴上反覆傳遞隱藏狀態,梯度要沿著時間步展開並連乘。這種結構讓梯度消失問題更加嚴重——序列越長,早期資訊的梯度衰減得越厲害。這也是為什麼早期 RNN 幾乎只能用 Tanh 或 Sigmoid,而它們的飽和特性又反過來加劇了問題。

    LSTM 與 GRU 的門控機制,本質上是在網路內部設計了更精巧的非線性結構:遺忘門、輸入門、輸出門各自使用 Sigmoid 來產生 0 到 1 之間的「開關訊號」,再與候選狀態做逐元素相乘。這種閘控式的非線性,讓網路能夠選擇性地保留或丟棄資訊,從根本上緩解了長序列的梯度問題。可以說,LSTM 的成功,很大程度是「非線性設計」的成功。

    5.3 Transformer 與大型語言模型:非線性藏在哪裡

    Transformer 架構乍看之下好像「沒什麼激活函數」,但實際上非線性無處不在。

    首先是注意力機制中的 Softmax。Softmax 將注意力分數轉換為機率分佈,這本身就是一個非線性歸一化操作,決定了模型「該看哪裡」。

    其次是前饋網路(FFN)。每個 Transformer 區塊中的 FFN,通常是「線性層 → 激活函數 → 線性層」的結構。原始 Transformer 論文使用的是 ReLU,後來的 BERT、GPT 改用 GELU,而 PaLM、Llama 則採用了 SwiGLU。這個 FFN 區塊承擔了模型中大部分的參數,也是非線性表達的主要來源。有研究指出,FFN 可以被視為一種「鍵值記憶」,而激活函數則決定了記憶的讀取方式。

    第三是LayerNorm 與殘差連接中的非線性成分。雖然它們的主要目的是穩定訓練,但歸一化本質上也是一種非線性變換。

    有趣的是,隨著模型規模變大,激活函數的選擇對最終效能的影響反而變得相對次要——資料品質、架構設計、訓練策略的影響更大。但在同等條件下,SwiGLU 這類閘控式非線性仍然能帶來可觀的效能提升,這也是它成為當前主流的原因。

    六、常見迷思與實務選擇建議

    6.1 三個常見迷思

    迷思一:激活函數越多越好。 有些初學者會以為在網路中塞入更多激活函數能提升表現,但實際上,激活函數的數量是由網路層數與每層神經元數決定的,額外堆疊只會增加計算成本與訓練難度,並不會自動提升表達能力。關鍵在於「深度」與「寬度」的合理配置,而不是激活函數的密度。

    迷思二:非線性越強越好。 前面已經提過,過強的非線性會造成訓練不穩定。ReLU 之所以成功,恰恰是因為它「簡單」——大部分區域是線性的,只在原點做一次折疊。這種「溫和的非線性」反而比複雜的飽和函數更容易訓練。

    迷思三:一定要用最新、最潮的激活函數。 事實上,很多成功的模型至今仍在使用 ReLU。激活函數的選擇應該配合架構、資料規模與訓練策略,而不是盲目追新。一個經過充分調校的 ReLU 網路,往往能打敗激活函數選得很潮但其他部分沒調好的模型。

    6.2 實務上怎麼選?

  • 預設從 ReLU 開始:計算快、行為可預測、社群支援充分,是絕大多數任務的安全起點。
  • 遇到死亡神經元問題時,改用 Leaky ReLU 或 PReLU:特別是學習率較大或網路較深的情況。
  • Transformer 類模型優先考慮 GELU 或 SwiGLU:這是目前大型語言模型的事實標準,效能與穩定性都經過大規模驗證。
  • 輸出層的激活函數要配合任務:二分類用 Sigmoid,多分類用 Softmax,回歸任務通常不用激活函數(或使用線性輸出)。
  • 注意初始化方法的搭配:He 初始化是為 ReLU 設計的,Xavier 初始化則適合 Tanh 與 Sigmoid。激活函數與初始化不匹配,會大幅影響訓練效果。
  • 不要忘記正規化與殘差連接:現代深層網路能穩定訓練,靠的是激活函數、初始化、正規化與殘差連接的組合,而不是單一技術的功勞。
  • 七、未來展望:可學習的非線性

    7.1 從手工設計到自動搜尋

    過去,激活函數是由研究者手工設計的。但近年來,一個明顯的趨勢是「讓模型自己決定要用什麼非線性」。PReLU 讓負區間的斜率成為可學習參數,只是一個開端;此後出現了各種可學習的激活函數,例如參數化的分段線性函數、以樣條曲線參數化的函數,甚至是透過神經架構搜尋(NAS)自動找出來的激活函數。

    2024 年引起廣泛討論的 Kolmogorov-Arnold Network(KAN),更是把這個思路推到極致:它把可學習的激活函數放在網路的「邊」上,而不是節點上,並用樣條函數來參數化。雖然 KAN 是否會取代 MLP 仍有爭議,但它提醒了我們:非線性的形式本身,也可以是學習的對象。

    7.2 稀疏化、閘控與混合專家

    另一個明顯的趨勢是「條件式的非線性」。傳統激活函數對每個輸入都套用同一個函數,但未來的模型越來越傾向於根據輸入動態決定非線性的強度與形式。SwiGLU 的閘控機制就是一個例子:它讓網路自己決定要讓多少資訊通過。混合專家模型(MoE)則更進一步,讓不同的輸入由不同的「專家」子網路處理,每個專家可以有自己的非線性特性。

    此外,硬體友善性也成為設計考量。隨著 AI 晶片的多樣化,激活函數的選擇不再只考慮數學性質,還要考慮它在特定硬體上的執行效率。這意味著未來的激活函數設計,會是一場數學、統計與工程之間的綜合權衡。

    結語:非線性,是 AI 學會「思考」的起點

    回到最初的問題:為什麼 AI 需要非線性?答案其實很樸素——因為世界本身是非線性的。一張圖片中的貓,不是像素的加權總和;一句話的語義,不是詞向量的簡單疊加;股市的漲跌、天氣的變化、蛋白質的折疊,這些現象背後的規律都充滿了交互作用與臨界轉折。如果模型只能用線性函數去逼近,它注定只能看到世界的一個粗糙投影。

    激活函數就是那個讓模型「長出曲線」的裝置。它讓神經網絡從只能畫直線,變成可以折疊空間、逼近任意函數;從感知機的階躍函數,到 ReLU 的簡單折疊,再到 GELU 與 SwiGLU 的平滑閘控,這條演化路線反映了整個深度學習的發展脈絡:從追求理論可行性,到追求訓練穩定性,再到追求極致的表達效率。

    下次當你寫下 nn.ReLU() 或 nn.GELU() 這一行的時候,不妨想想它背後的故事。它不只是一行程式碼,而是整個神經網絡能夠從資料中學到複雜規律的關鍵樞紐。理解了非線性,你才真正理解了深度學習為什麼「深」得有意義。

    如果你對這類 AI 基礎原理與趨勢解析有興趣,歡迎持續關注雅寶社區 · 頂客論壇的 🤖 AI 趨勢專欄,我們會持續帶來更多從原理到實務的深度內容。

    🏠 返回首頁