Skip to content

MoE数学架构 Mathematics

MOE(Mixture of Experts)架构

Mixture of Experts(MOE)是一种通过组合多个专家网络(Experts)来提高模型表达能力和计算效率的架构。每个专家负责处理输入数据的不同部分,而门控网络(Gating Network)则决定如何组合这些专家的输出。MOE架构广泛应用于大规模模型,如语言模型和图像处理模型,以实现参数高效和计算可扩展性。

MOE 的关键组件

组件 描述
专家网络(Experts) 多个独立的子网络,每个网络专门处理输入数据的不同方面。
门控网络(Gating Network) 决定每个输入应由哪些专家处理,以及各专家的权重。
稀疏激活(Sparse Activation) 仅选择少数几个专家参与每次前向传播,提高计算效率。
负载均衡机制(Load Balancing Mechanism) 确保各专家得到大致相同的负载,避免部分专家过载。

MOE 的数据流动

阶段 输入 操作 输出 输出去向
输入层 原始输入数据 数据预处理与嵌入 \(X \in \mathbb{R}^{N \times d_{model}}\) MOE层
门控网络 \(X\) 1. 线性变换:\(G = XW_g + b_g\)
2. Softmax:\(G_{ij} = \frac{\exp(G_{ij})}{\sum_{k=1}^{E} \exp(G_{ik})}\)
3. 选择 top-k 专家
选择的专家索引及权重 专家层
专家层 输入数据 \(X\) 和门控权重 \(G\) 1. 将输入分配给选定的专家
2. 每个专家独立处理分配到的数据
3. 汇总专家输出
\(Y \in \mathbb{R}^{N \times d_{model}}\) 聚合层
聚合层 专家输出 \(Y\) 1. 根据门控权重加权组合专家输出
2. 叠加与后续层
\(Z \in \mathbb{R}^{N \times d_{model}}\) 后续模型层

MOE 层详细结构

输入 操作 输出
门控网络 输入嵌入 \(X \in \mathbb{R}^{N \times d_{model}}\) 1. 线性变换:\(G = XW_g + b_g\), \(W_g \in \mathbb{R}^{d_{model} \times E}\)
2. Softmax激活:\(G_{ij} = \frac{\exp(G_{ij})}{\sum_{k=1}^{E} \exp(G_{ik})}, \forall j \in \{1, ..., E\}\)
3. 选取 top-k 专家
选择的专家索引与权重 \(G' \in \mathbb{R}^{N \times k}\)
专家处理 输入数据 \(X\), 选择的专家 \(G'\) 1. 将输入分配到选定的专家
2. 每个专家独立执行前向传播:\(Y_e = \text{Expert}_e(X_e)\)
其中 \(e \in \{1, ..., E\}\)
各专家的输出 \(Y_e \in \mathbb{R}^{N_e \times d_{model}}\)
输出聚合 各专家输出 \(Y_e\), 门控权重 \(G'\) 1. 根据门控权重加权:\(Y = \sum_{e=1}^{k} G'_{e} \cdot Y_e\)
2. 汇总所有专家的输出
聚合输出 \(Z \in \mathbb{R}^{N \times d_{model}}\)

MOE 数据流动示例

输入 输出 输出去向
输入嵌入 原始输入数据 \(X_0 \in \mathbb{R}^{N \times d_{model}}\) MOE层
MOE层 \(X_0\) \(Z \in \mathbb{R}^{N \times d_{model}}\) 后续模型层
后续层 \(Z\) ... ...

注:

  1. \(N\) 是批量大小。
  2. \(d_{model}\) 是模型的隐藏维度。
  3. \(E\) 是专家的数量。
  4. \(k\) 是每次前向传播中激活的专家数量(通常较小,如2或4)。

MOE 层中的参数更新

门控网络

参数 维度 描述
\(W_g\) \(\mathbb{R}^{d_{model} \times E}\) 门控网络的权重矩阵
\(b_g\) \(\mathbb{R}^{E}\) 门控网络的偏置向量

专家网络

组件 参数 维度 描述
专家1 \(W^{(1)}\) \(\mathbb{R}^{d_{model} \times d_{ff}}\) 专家1的权重
\(b^{(1)}\) \(\mathbb{R}^{d_{ff}}\) 专家1的偏置
专家2 \(W^{(2)}\) \(\mathbb{R}^{d_{model} \times d_{ff}}\) 专家2的权重
\(b^{(2)}\) \(\mathbb{R}^{d_{ff}}\) 专家2的偏置
... ... ... ...
专家E \(W^{(E)}\) \(\mathbb{R}^{d_{model} \times d_{ff}}\) 专家E的权重
\(b^{(E)}\) \(\mathbb{R}^{d_{ff}}\) 专家E的偏置

注意:

  • 每个专家都拥有独立的参数集。
  • 专家数量 \(E\) 和每个专家的隐藏维度 \(d_{ff}\) 可根据具体需求调整。
  • 通过稀疏激活(只激活少数专家),可以在保持高模型容量的同时,提高计算效率。