技术文档:SwiGLU (Swish-Gated Linear Unit)
1. 概述
SwiGLU 全称为 Swish-Gated Linear Unit(采用 Swish 激活函数的门控线性单元)。它是一种用于替代 Transformer 架构中传统前馈神经网络(FFN / MLP)层的网络结构。
SwiGLU 由 Google 研究员 Noam Shazeer 在 2020 年的论文 "GLU Variants Improve Transformer" 中提出。该论文通过大量实验证明,在参数量相同的情况下,采用门控机制(GLU)的 FFN 变体在性能上显著优于标准的 ReLU 或 GELU FFN。而在众多变体中,SwiGLU 通常表现最佳,现已成为大模型时代的"工业标准"。
2. 背景:从标准 FFN 到 SwiGLU
为了理解 SwiGLU,我们首先需要回顾它所取代的对象。
2.1. 传统的标准 FFN (Standard FFN)
在最初的 Transformer (如 BERT, GPT-2) 中,FFN 层是一个简单的两层全连接网络,其工作流程是"先放大,后激活,再缩小":
- 将输入维度从 扩展到 ( 通常是 4 倍)。
- 经过一个非线性激活函数(如 ReLU 或 GELU)。
- 将维度从 投影回 。
数学公式如下:
注: 形状为 , 形状为 。总共涉及 2 个 权重矩阵。
2.2. SwiGLU FFN 的演进
SwiGLU 引入了两个核心概念来改进上述结构:
- 门控机制 (Gating Mechanism):不再是单一的信息流通路径,而是并行计算两条路径,并通过乘法进行控制。
- Swish (SiLU) 激活函数:使用更平滑的激活函数替代 ReLU/GELU。
SwiGLU FFN 结构包含 3 个 权重矩阵(通常不使用偏置 bias):
- : 用于计算门控信号。
- : 用于计算数据信息流。
- : 用于输出投影。
其数学公式如下:
符号说明:
- 表示逐元素乘法 (Element-wise multiplication)。
- SiLU 是 Sigmoid Linear Unit 的缩写,即 时的 Swish 函数:。
2.3. 结构对比示意图
3. SwiGLU 的核心优势
SwiGLU 之所以能成为主流,主要归功于以下两点优势的结合: