在大语言模型(LLM)的 Decoder Block 中,如果说 Attention 负责信息的社交与分发,那么 MLP(及其演进版 MoE)则负责信息的内化与推理。它是模型真正的“知识仓库”。
第一部分:MLP —— 模型的“思考中心”
1.1 物理结构与执行路径
每个 Transformer 层都包含一个 MLP (Multi-Layer Perceptron),其核心执行路径为:线性升维 → 非线性激活 → 线性降维。
1.2 核心环节的深度作用
- 线性升维 ():提供“解题空间” 将特征投影到高维空间(通常是隐藏层的 4 倍)。这就像是在一张巨大的画布上摊开信息,实现特征解耦。在高维空间中,原本纠缠在一起的语义特征更容易被捕捉。
- 非线性激活 (Activation):引入“逻辑灵魂”
这是模型产生“智能”的关键。
- 逻辑剪裁:如 SwiGLU 变体。它通过门控机制决定哪些信息该保留(激活),哪些该剔除。
- 打破线性:如果没有这一层,无论叠加多少层 MLP,本质上都只是一个复杂的线性缩放。非线性函数赋予了模型学习“如果...那么...”这种复杂逻辑函数的能力。
- 线性降维 ():特征聚合与回归 将处理后的高维精华信息压缩回原始维度,强迫模型进行信息提纯,以便通过残差连接传递给下一层。
第二部分:MoE —— 规模经济的终极形态
当模型参数增加到千亿级时,全量激活(Dense)的计算开销变得不可承受。MoE (Mixture of Experts) 通过“稀疏激活”解决了这一矛盾。
2.1 核心组件:分拣员与专家团
- Router (路由/门控网络):一个极轻量的线性层,负责为每个 Token 计算与各专家的匹配度。参数量极小(仅占总量的万分之一),几乎不增加计算延迟。
- Experts (专家):多个并行的、结构相同的 MLP 块。
- 激活逻辑:每个 Token 仅激活 个专家(通常 或 ),其余专家保持静默。
2.2 Token 级别的“特种分拣”
MoE 的核心魅力在于:Query 中的不同 Token 会被分发给不同的专家。
- “代码”相关 Token 去找“代码专家”。
- “物理”相关 Token 去找“科学专家”。 这实现了计算效率(FLOPs)与知识容量(Total Params)的解耦。
第三部分:纵向深度 —— 每一层的独立博弈
MoE 不仅在同一层内对不同 Token 进行分发,在**跨层(Depth)**维度上,其决策同样是动态的:
- 独立决策:Token 在经过每一层时,Router 都会根据该层当前的特征重新选择专家。
- 职能演化:
- 浅层:处理表面语法、词法特征(如:这是一个动词)。
- 中层:专注于语义理解和领域知识(如:这涉及量子物理)。
- 深层:负责高阶逻辑汇总和生成预测(如:下一句应该接什么语气)。
- 路径组合:一个 Token 的完整推理路径是一条在几十层专家森林中穿梭的独特轨迹。
第四部分:工程权衡与 DeepSeek 的改良
4.1 核心痛点
- All-to-All 通信:由于专家分布在不同 GPU 上,Token 必须频繁跨卡“瞬移”,对 NVLink 带宽要求极高。
- 负载均衡:Router 可能“偏心”,导致部分专家累死,部分专家“吃空饷”。
4.2 DeepSeek 的方案
- 共享专家 (Shared Experts):强制所有 Token 经过固定专家,确保基础常识不丢失,起到语义“黏合剂”作用。
- 解耦式设计:配合 MLA (Multi-head Latent Attention) 压缩 KV Cache,腾出显存空间来装载更多的专家参数。
第五部分:总结对比
| 特性 | 标准 MLP (Dense) | MoE (Sparse) |
|---|---|---|
| 激活参数量 | 全部激活 (计算成本高) | 极少激活 (计算成本恒定) |
| 知识容量 | 受限于单次计算能承受的规模 | 理论上可无限扩展 |
| 推理速度 | 随参数规模线性变慢 | 保持极速,接近小模型延迟 |
| 激活函数 | 决定单层逻辑表达力 | 每个专家内部仍需强效激活 (如 SwiGLU) |
一句话总结: 线性层负责空间扩张与重组,非线性层负责逻辑选择与过滤;而 MoE 则是将这套逻辑分发给了一群“专项人才”,实现了在不增加算力负担的前提下,模型智力的指数级飞跃。