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有明确的理论优势。

相关概念

← 所有术语
← Suno Throughput →