Transformer 與大型語言模型內部機制

SwiGLU 激活

SwiGLU 是一種閘控前饋單元,用來取代 transformer 慣用的「線性—激活—線性」區塊。它不是讓資訊單路穿過一個激活,而是分成兩條平行投影:一條通過平滑的 SiLU/Swish 非線性,當作閘門,逐元素乘上另一條。這個閘門讓網路調節要放行多少各個特徵,實證上在相同參數量下帶來品質提升。

具體上該區塊計算 (SiLU(xW) 逐元素乘 xV) 乘 W_out,其中 SiLU(z) = z 乘 sigmoid(z) 即 Swish 激活,而 W、V、W_out 為可學。由於閘控多了第三個權重矩陣,實作會縮小隱藏維度(常縮到等價稠密前饋的三分之二),以在公平比較下維持參數與浮點預算一致。此變體出自 Shazeer 的閘控線性單元家族:GEGLU、ReGLU 與 SwiGLU。

SwiGLU 如今是 LLaMA、PaLM 及多數現代 LLM 的標準,已取代單純的 ReLU 與 GELU 前饋。增益穩定但幅度溫和,而正如 Shazeer 自嘲,這份成功部分是實證的——這些架構在實務上就是更好用,卻沒有完全第一性原理的解釋。

\mathrm{SwiGLU}(x) = \big(\mathrm{SiLU}(xW)\odot xV\big)W_{\text{out}},\quad \mathrm{SiLU}(z)=z\,\sigma(z)

Swish 閘控的線性單元:一條分支在輸出投影前對另一條開閘。

又称
SwiGLUswish-gated linear unit