Week 28: 机器学习补遗:MoE 原理与时序路由策略

文章目录

  • [Week 28: 机器学习补遗:MoE 原理与时序路由策略](#Week 28: 机器学习补遗:MoE 原理与时序路由策略)
    • 摘要
    • Abstract
    • [1. MoE(Mixture of Experts)](#1. MoE(Mixture of Experts))
      • [1.1 单一模型的局限性](#1.1 单一模型的局限性)
      • [1.2 MoE 的核心思想](#1.2 MoE 的核心思想)
    • [2. Sparse MoE](#2. Sparse MoE)
      • [2.1 Dense MoE 的计算瓶颈](#2.1 Dense MoE 的计算瓶颈)
      • [2.2 Sparse MoE与Top-K Gating](#2.2 Sparse MoE与Top-K Gating)
    • [3. 路由粒度 (Routing Level)](#3. 路由粒度 (Routing Level))
      • [3.1 Token Level MoE (Token 级路由)](#3.1 Token Level MoE (Token 级路由))
      • [3.2 Pooling Level MoE (池化级/序列级路由)](#3.2 Pooling Level MoE (池化级/序列级路由))
    • 总结

Week 28: 机器学习补遗:MoE 原理与时序路由策略

摘要

本周重点探讨了混合专家模型 (Mixture of Experts, MoE)。MoE是当前LLM中的研究热点,其思想与集成学习一脉相承,但以端到端可微的方式在深度神经网络中实现。

Abstract

This week's focus has been on the Mixture of Experts (MoE) model. MoE represents a current research hotspot within large language models (LLMs), drawing inspiration from ensemble learning while being implemented in a fully differentiable manner within deep neural networks.

1. MoE(Mixture of Experts)

1.1 单一模型的局限性

在标准 Transformer 中,FeedForward Network (FFN) 对所有的输入 Token 使用同一组参数 W W W。
FFN ( x ) = ReLU ( x W 1 + b 1 ) W 2 + b 2 \text{FFN}(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2 FFN(x)=ReLU(xW1+b1)W2+b2

为了应对各种复杂情况,我们不得不把一个需要应对全部情况的模型做得非常巨大(增加参数量),但这导致了推理成本的飙升。

1.2 MoE 的核心思想

MoE 引入了"分诊"和"专科"的概念。它包含两个核心组件:

  1. 专家网络 (Experts, E i E_i Ei):一组独立的神经网络(通常是 MLP),每个专家专注于处理输入空间的一个特定子区域。
  2. 门控网络 (Gating Network / Router, G G G) :一个轻量级的分类器,根据输入 x x x 的特征,决定派哪个(或哪几个)专家上场。

其通用数学形式为:
y = ∑ i = 1 N G ( x ) i ⋅ E i ( x ) y = \sum_{i=1}^N G(x)_i \cdot E_i(x) y=i=1∑NG(x)i⋅Ei(x)

这与XGBoost中将样本划分到不同叶子节点的思想异曲同工,区别在于 MoE 的划分是软性 (Soft)且动态 (Dynamic)的,并且全程通过梯度下降联合训练。

2. Sparse MoE

2.1 Dense MoE 的计算瓶颈

在原始的 MoE 定义中,门控网络 G ( x ) G(x) G(x) 输出的是一个针对所有 N N N 个专家的概率分布(Sum = 1)。这意味着对于每一个输入,所有的 专家都要进行前向传播计算。

当专家数量扩展到成百上千时,计算量将线性增长,这违背了我们想通过增加参数来提升模型容量的初衷。

2.2 Sparse MoE与Top-K Gating

为了解决这个问题,Sparse MoE引入了稀疏性约束。核心思想是条件计算 (Conditional Computation)。即对于每个样本,我们只激活一小部分专家。

这是通过Top-K Gating实现的。假设我们有 N N N 个专家,我们只选取门控分数最高的 K K K 个(通常 K = 1 K=1 K=1 或 2 2 2):

TopK ( v , k ) i = { v i if v i is in the top k elements of v − ∞ otherwise \text{TopK}(v, k)_i = \begin{cases} v_i & \text{if } v_i \text{ is in the top } k \text{ elements of } v \\ -\infty & \text{otherwise} \end{cases} TopK(v,k)i={vi−∞if vi is in the top k elements of votherwise

具体的门控输出计算如下:

  1. 计算原始路由分数: h ( x ) = x ⋅ W g h(x) = x \cdot W_g h(x)=x⋅Wg
  2. 加入高斯噪声(可选,用于负载均衡): h ′ ( x ) = h ( x ) + StandardNormal ( ) ⋅ Softplus ( x ⋅ W n o i s e ) h'(x) = h(x) + \text{StandardNormal}() \cdot \text{Softplus}(x \cdot W_{noise}) h′(x)=h(x)+StandardNormal()⋅Softplus(x⋅Wnoise)
  3. 应用 Softmax 并保留 Top-K:
    G ( x ) = Softmax ( TopK ( h ′ ( x ) , k ) ) G(x) = \text{Softmax}(\text{TopK}(h'(x), k)) G(x)=Softmax(TopK(h′(x),k))

意义:通过这种方式,我们可以拥有一个参数量高达数千亿的"超大模型",但每次推理只调用其中几十亿的参数。实现了"大模型的容量,小模型的速度"。

3. 路由粒度 (Routing Level)

路由粒度 是将 MoE 应用于时序预测时最关键,也是最容易被忽视的环节。

3.1 Token Level MoE (Token 级路由)

在 NLP 领域(如 GPT-4 或 Switch Transformer),路由是针对每个 Token 独立进行的。

  • 过程 :对于时间序列 X = { x 1 , x 2 , . . . , x T } X = \{x_1, x_2, ..., x_T\} X={x1,x2,...,xT},Router 可能会把 x 1 x_1 x1 分给专家 A,把 x 2 x_2 x2 分给专家 B。
  • 时序领域的弊端
    • 破坏连续性:时间序列具有极强的自相关性(Autocorrelation)。如果相邻时间步由完全不同的专家网络处理,输出结果可能会出现不自然的跳变 (Jumps)。
    • 缺乏上下文 :单个时间步 x t x_t xt 的数值可能本身不包含足够的信息来判断当前的"市场状态"(Regime)。例如,价格为 100 时,可能是上涨趋势中的 100,也可能是下跌趋势中的 100。仅凭 x t x_t xt 很难区分。

3.2 Pooling Level MoE (池化级/序列级路由)

针对上述问题,Pooling Level MoE 提出了一种更符合时序特性的策略:以时间窗口(Patch 或 Whole Series)为单位进行路由

  • 核心逻辑

    1. Pooling :首先提取一段时间内的全局特征。
      v g l o b a l = AveragePool ( x 1 , . . . , x T ) 或 v g l o b a l = AttentionPool ( X ) v_{global} = \text{AveragePool}(x_1, ..., x_T) \quad \text{或} \quad v_{global} = \text{AttentionPool}(X) vglobal=AveragePool(x1,...,xT)或vglobal=AttentionPool(X)
    2. Routing :基于这个全局特征 v g l o b a l v_{global} vglobal 来决定使用哪个专家。
      Selected Expert = TopK ( G ( v g l o b a l ) ) \text{Selected Expert} = \text{TopK}(G(v_{global})) Selected Expert=TopK(G(vglobal))
    3. 执行 (Execution) :被选中的专家处理整个时间窗口的数据。
  • 学术解释

    这种做法实际上是对非平稳性 (Non-stationarity) 的一种显式建模。我们假设时间序列是由若干个隐含的分布状态 (Regimes)组成的(例如:平稳震荡期、剧烈波动期)。

    • Pooling 操作旨在识别当前窗口属于哪个 Regime。
    • 不同的 Experts 实际上习得了不同 Regime 下的动力学方程。
    • Routing 保证了在同一个 Regime 内部,预测逻辑的一致性和平滑性。

总结

本周比较详细的研究了MoE的数学原理以及从Dense MoE到Sparse MoE的演进逻辑,并针对时间序列数据的非平稳性和时序连续性,深入剖析了Pooling Level MoE相较于传统 Token Level 路由的必要性。后续可能考虑对MoE继续进行深入研究,MoE作为当下的研究热点,可以作为一个策略或者模块比较容易的嵌入现有的网络当中,值得继续研究。

相关推荐
roman_日积跬步-终至千里1 小时前
【计算机视觉(5)】特征检测与匹配基础篇:从Harris到SIFT的完整流程
人工智能·深度学习·计算机视觉
工藤学编程1 小时前
零基础学AI大模型之相似度Search与MMR最大边界相关搜索实战
人工智能
izx8881 小时前
从 Buffer 到响应式流:Vue3 实现 AI 流式输出的完整实践
javascript·vue.js·人工智能
知识浅谈1 小时前
传统爬虫太耗时?AI一键生成企业级爬虫架构
人工智能·爬虫
许泽宇的技术分享1 小时前
当AI学会“自己动手,丰衣足食“:深度剖析AgentGPT的自主智能之路
人工智能
CS创新实验室1 小时前
计算机视觉:从感知到生成的产业变革与未来展望
人工智能·计算机视觉
水如烟1 小时前
孤能子视角:数字时代,城乡生活的反转
人工智能
qq_348231851 小时前
Spring AI核心知识点
java·人工智能·spring
测试人社区—52722 小时前
破茧成蝶:DevOps流水线测试环节的效能跃迁之路
运维·前端·人工智能·git·测试工具·自动化·devops