Zubnet AI學習Wiki › SwiGLU
基礎

SwiGLU

別名:門控線性單元、GLU 變體

現代 Transformer 前饋層中使用的門控激活函數。SwiGLU 將 SiLU/Swish 激活與門控機制結合:SwiGLU(x) = (x · W1 · SiLU) ⊗ (x · W3),其中 ⊗ 是逐元素乘法。這讓網路學習哪些資訊要通過,始終優於標準的 ReLU 或 GELU 前饋層。

為什麼重要

SwiGLU 是 LLaMA、Mistral、Qwen、Gemma 及大多數現代 LLM 使用的前饋激活函數。理解它有助於你閱讀模型架構,並解釋為什麼現代 FFN 層有三個權重矩陣而非兩個。這是一個小的架構選擇,卻對模型品質有顯著的影響。

深度解析

標準 FFN:FFN(x) = W2 · GELU(W1 · x)。兩個權重矩陣,一個激活函數。SwiGLU FFN:SwiGLU(x) = W2 · (SiLU(W1 · x) ⊗ W3 · x)。三個權重矩陣,一個門控機制。門控(W3 · x)控制什麼通過,讓網路可以選擇性地抑制或放大不同的特徵。為保持參數量不變,中間維度通常從 4×model_dim 減少到 (8/3)×model_dim。

為什麼門控有幫助

門控為網路提供了標準激活函數所缺乏的乘法交互。標準激活函數應用固定的非線性。門控應用學習到的、依賴輸入的非線性。這種額外的表達能力幫助網路在每一層學習更複雜的函數,這意味著你需要更少的層(或更小的層)來獲得等效的效能。Shazeer(2020 年)展示了 GLU 變體在各種模型大小上始終優於標準 FFN。

GLU 家族

SwiGLU 是幾個 GLU 變體之一:GeGLU(使用 GELU 代替 SiLU)、ReGLU(使用 ReLU),以及原始的 GLU(使用 sigmoid)。SwiGLU 和 GeGLU 表現相似,都優於 ReGLU。它們之間的選擇主要是經驗性的 — SwiGLU 透過慣例成為預設(LLaMA 採用了它,其他人跟隨),而非對 GeGLU 有明確的理論優勢。

相關概念

← 所有術語
← Supervised Learning(監督式學習) Synthetic Data(合成資料) →