跳到主要内容

激活函数改进:SwiGLU、GeGLU

要解决的问题

FFN 中间层需非线性。ReLU 简单但表达力有限;门控线性单元(GLU) 用 sigmoid 门控一路;SwiGLU / GeGLU 成为大模型 FFN 默认。

标准 FFN(原始)

FFN(x)=W2σ(W1x+b1)+b2\text{FFN}(\mathbf{x}) = W_2 \,\sigma(W_1 \mathbf{x} + b_1) + b_2

σ=ReLU\sigma=\text{ReLU}dff=4dd_{ff}=4d

SwiGLU(Llama 等)

SwiGLU(x)=(W1x)Swish(W2x),Swish(t)=tσ(t)\text{SwiGLU}(\mathbf{x}) = (W_1 \mathbf{x}) \odot \text{Swish}(W_2 \mathbf{x}), \quad \text{Swish}(t)=t\cdot\sigma(t)
  • 再经 W3W_3 投影回 dd
  • 参数量略增(三路矩阵),实践中常调 dffd_{ff} 保持总参不变

GeGLU

将 Swish 换为 GELU 门控:(W1x)GELU(W2x)(W_1\mathbf{x}) \odot \text{GELU}(W_2\mathbf{x})。PaLM 等采用。

选型

激活特点
ReLU简单,早期 Transformer
GELU平滑,BERT/GPT-2
SwiGLU当前开源 LLM 最常见
GeGLU闭源/部分 Google 路线

参考链接