Pre-Norm 变体(常用):
\[ \mathbf{h}_t^l = \mathbf{u}_t^l + \mathrm{FFN}(\mathrm{LayerNorm}(\mathbf{u}_t^l)) \]
Post-Norm 变体(原始 Transformer):
\[ \mathbf{h}_t^l = \mathrm{LayerNorm}\left( \mathbf{u}_t^l + \mathrm{FFN}(\mathbf{u}_t^l) \right) \]
对一个 token 的表示 \(\mathbf{u}_t^l \in \mathbb{R}^d\),标准的前馈网络(Feed-Forward Network,FFN)结构如下:
\[ \mathbf{h}_t^l = \mathrm{FFN}\left( \mathbf{u}_t^l \right) + \mathbf{u}_t^l \]
其中 FFN 通常包含两层线性变换 + 非线性激活,例如:
\[ \mathrm{FFN}(\mathbf{x}) = W_2 \, \sigma(W_1 \mathbf{x} + b_1) + b_2 \]
\[ \mathbf{h}_t^l = \sum_{i=1}^{N} \left( g_{i,t} \, \mathrm{FFN}_i\left( \mathbf{u}_t^l \right) \right) + \mathbf{u}_t^l \]
这个公式表示:
🆚 MoE vs MLP:逐点对比
项目 | 普通 MLP | MoE |
---|---|---|
参数共享 | 所有 token 共享一个 FFN | 每个专家有独立 FFN,token 动态选择 |
计算开销 | 所有 token 都计算一次 FFN | 仅计算 Top-K 个专家,节省计算 |
表达能力 | 有限(全局统一) | 更强(不同 token 用不同专家) |
路由策略 | 固定 | 动态(token-level routing) |
稀疏性 | 无稀疏性 | 引入稀疏性(仅部分专家激活) |
通信 | 无 | 多专家调度可能涉及跨设备通信(尤其在分布式训练中) |