news 2026/10/30 6:38:48

Time-MoE学习笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Time-MoE学习笔记

一、前置知识

稠密模型 vs 稀疏模型

稠密模型(dense):每个输入进来,所有参数都参与计算。一个 1B 的稠密模型,每个数据点都要流过完整的 1B 参数。

稀疏模型(sparse / MoE):网络里有一群并行的"专家"子网络 + 一个路由器(router)。每个输入进来,路由器看一眼,只把它分给 top-K 个最相关的专家(K 远小于专家总数),其余专家这次完全不动。

两个追问先记下:
1. 凭什么相信路由器分得准、专家会真的"专科化"?——论文用一张专家激活热力图做证据:不同领域的数据集确实激活了不同的专家组合(模块 7 会批判性地看这张图的说服力)。
2. 稀疏不是没有代价的:如果路由器偷懒、永远只选同一两个专家怎么办?(这叫路由崩溃,模块 3 的负载均衡损失就是治它的。)

encoder(编码器):把输入序列转成一组结合了上下文的表示。
decoder(解码器):结合已经生成的内容,以及 encoder 提供的表示,预测后面的输出。

decoder-only:只保留一套负责预测后续内容的主干
decoder-only 没有额外的 encoder,也没有读取 encoder 输出的那套交叉注意力。它直接接收前面的序列,利用因果自注意力来构造表示、预测后续内容。

二、处理数据流程

历史数值 → 输入嵌入 → 多层「因果注意力+MoE」→ 预测头 → 未来数值。

MoE对每个位置已经汇集的信息,选择部分专家加工。

1.注意力和MoE分别负责什么?

注意力负责在允许看到的时间位置之间汇集信息,而MoE负责对每个位置已经汇集的信息选择部分专家进行加工。

对比维度稠密模型MoE(稀疏模型)
每步激活参数量全部参数都参与计算,激活量等于总参数量只有 top-K 个专家和共享专家被激活,激活量远小于总参数量
计算量与总参数量成正比,规模越大计算越重与激活参数量成正比,可在总参数扩张时保持较低计算量
显存占用参数全部常驻,显存需求与总参数量一致全部专家参数仍需常驻显存,显存占用接近同等总参数量的稠密模型
路由开销无路由环节,无额外开销每层每个位置都要计算路由分数并做 top-K 选择,带来额外计算与调度开销
训练稳定性结构简单,训练过程相对稳定存在路由崩溃风险,需要负载均衡辅助损失等额外约束来稳定训练

一句话总结:MoE 用少量激活参数换来了更大的模型容量和更低的计算量,代价是显存仍需承载全部专家、路由带来额外开销,并且训练更依赖负载均衡等手段来保持稳定。

2.一个专家究竟是什么?

这里的专家指的是可训练的前馈网路,也就是FFN(输入一个向量,经过若干次可学习变换与非线性运算,输出一个加工后的向量)。

假设有 4 个可路由专家,路由权重为:

[0.50, 0.30, 0.15, 0.05]

若设置 top-k=2,就只选择权重最大的专家 1、2,其他两个这次不执行。两份专家输出再按权重相加:

路由专家的结果 = 0.50E1(u)+0.30E2(u)

这里 u是当前位置的输入向量,E1(u) 是专家 1 对它的加工结果。

3.路由器怎样选专家?

路由器也是可学习的模块,它根据输入的内容为各个专家计算分数,再转换为权重。

假设有 4 个可路由专家,路由权重为:

[0.50, 0.30, 0.15, 0.05]

若设置 top-k=2,就只选择权重最大的专家 1、2,其他两个这次不执行。两份专家输出再按权重相加:

路由专家的结果 = 0.50E1(u)+0.30E2(u)

这里 u是当前位置的输入向量,E1(u) 是专家 1 对它的加工结果。

4.为什么还设置共享专家?

Time-MoE 除了这些按Top-k选择的专家,还设置了一个共享专家。它不参与同一套top-k竞争,为每个位置提供一条共同的加工路径;它的输出再由一个随输入变化的门控系数调节,论文希望它承载不同输入之间的共同知识。

于是MoE输出可以理解为:

MoE输出=共享专家的加权输出+选中专家的加权输出

5.这些专家会自动得到充分训练吗?

不一定。假设路由器总选专家 1、2,那么它们不断获得训练机会,专家 3、4却很少被使用,整个模型可能越来越依赖前两个专家。

这叫路由崩溃。Time-MoE 在预测损失之外加入负载均衡辅助损失,鼓励更均衡地使用可路由专家。它是训练时的额外约束,不是要求每个时间点都使用所有专家,也不是要求每个输入的权重完全相同。

现在,一条输入在主干里的路径就完整了:

点级嵌入 → 注意力结合历史 → 路由器按当前表示选专家 → 专家加工并合并 → 进入下一层 → 最后交给预测头。

flowchart TD A[输入嵌入] --> B[因果注意力] B --> C[路由器 top-K 选择] C --> D[可路由专家] B --> E[共享专家] D --> F[加权合并] E --> F F --> G[下一层] G --> H[预测头]

图中共享专家与可路由专家是两条并行的分支:因果注意力的输出一方面送入路由器做 top-K 选择,只激活少数可路由专家;另一方面直接送入共享专家,不参与竞争。两条分支的输出最终在「加权合并」节点汇合,可路由专家按路由权重加权,共享专家按门控系数加权,两者相加后才进入下一层。因此合并环节是共享知识与专科化加工的唯一交汇点,也是 MoE 输出公式在结构上的直接体现。

三、预测头如何输出

主干最后一个位置输出一个D维向量。它包含模型从历史中提取的特征,但还不是温度、用电量等预测值。

预测头负责将这个向量转换成数值。论文公式 12 是:

这里:

:表示第t个位置经过最后一层后的向量,含D个数

:表示这个预测头一次能输出多少个未来时间点

:表示这个头的可学习矩阵,大小为

:表示对后续p个时间点的预测

矩阵的每一行,都将同一个历史表示转换成一个未来位置的预测值。所以,一个向量可以直接输出多个未来值,不必先预测第一个,再用第一个预测第二个。

Time-MoE 设置了多个这样的预测头,分别负责不同输出长度;训练时共同优化它们。

四、论文做了哪些实验?

1、零样本预测

假设模型已经在大量公开序列上预训练。现在拿来一个未用于预训练的数据集,直接输入它的历史,预测未来;不再用这个数据集调整模型参数。这就是这里的zero-shot forecasting,零样本预测。

论文 §4.1 报告在六个未纳入其预训练语料的基准数据集上评价,比较对象包括其他预训练时间序列模型。这里检验的是:预训练学到的能力,能否直接迁移到这些目标数据。

2、域内预测

  • 预训练:先从大规模数据中学习通用能力。
  • 微调 fine-tuning:在预训练参数基础上,用目标任务的数据继续更新参数。

Time-MoE 的域内实验用六个基准的训练集微调一个 epoch。epoch 表示按训练流程遍历一轮训练数据。然后在测试部分评价,并与任务专用模型比较。

3、MoE消融

把 Time-MoE 与另一个预训练模型比较,双方可能同时存在以下差异:数据、模型规模、输入处理、损失、训练预算、预测头。因此,即使 Time-MoE 获胜,首先支持的也是整套方案在该设置下更好。

要更直接检验 MoE,就要尽量保持其他条件一致,只改变这一结构。

论文 §4.4 另外训练了稠密对照:使用相同训练设置与数据,把 MoE 换成与其激活参数规模相当的稠密层。这比跨论文模型比较更直接地检验稀疏结构的作用。

五、小结

  • 稠密与稀疏的区别:稠密模型每个输入都流过全部参数;MoE 只把输入分给 top-K 个最相关的专家,其余专家这次不参与计算。
  • MoE 的计算与显存代价:计算量随激活参数量增长,因此能在总参数扩张时保持较低计算量;但全部专家参数仍需常驻显存,显存占用接近同等总参数量的稠密模型,另外每层每个位置还要付出路由开销。
  • 专家与路由器的工作方式:专家是可训练的前馈网络(FFN),路由器根据当前位置的表示给各专家打分并转成权重,只取权重最大的 top-K 个专家,输出按权重加权相加。
  • 共享专家的作用:共享专家不参与 top-K 竞争,为每个位置提供一条共同的加工路径,其输出再由随输入变化的门控系数调节,用来承载不同输入之间的共同知识;它与可路由专家在加权合并环节汇合。
  • 路由崩溃与负载均衡:若路由器长期只选少数专家,其余专家得不到训练,模型会越来越依赖它们;Time-MoE 在预测损失之外加入负载均衡辅助损失,作为训练时的额外约束来缓解这一问题。
  • 预测头一次输出多步:预测头用一个可学习矩阵把最后一个位置的 D 维表示直接映射成 p 个未来时间点的预测值,不必先预测第一个再递推;模型还设置了多个负责不同输出长度的预测头。
  • 三类实验各自能证明什么:零样本预测检验预训练能力能否直接迁移到未参与预训练的数据集;域内预测检验微调后在目标任务上与专用模型相比的表现;MoE 消融用相同训练设置和数据、把 MoE 换成激活参数规模相当的稠密层,更直接地检验稀疏结构本身的作用。

总体来看,MoE 更适合在需要大模型容量、又希望控制单步计算量的场景中使用,前提是显存足以承载全部专家,并且愿意为路由开销和训练稳定性付出额外代价。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/30 6:35:52

INV Manager待提交单据批量脚本提交与对账实践

INV Manager 的待提交列表堆到四位数那天,手工点提交这条路基本就走到头了。这里的 INV Manager 指的是业务侧的单据管理模块,存放所有待落账的库存与物料流转单据;MTI 和 MMTT 是下游两套处理链路,前者负责物料转移指令的校验与派…

作者头像 李华
网站建设 2026/10/30 6:35:11

【git原理与使用】git初识与安装

文章目录1. 提出问题2. 解决方法——版本控制器3. git安装之前Linux系统编程专栏中,我们通过一篇文章简单介绍过git的基本使用,本专栏我们将来正式全面深入地学习git,本专栏目标: 掌握 Git 企业级应用,深刻理解Git操作…

作者头像 李华
网站建设 2026/10/30 6:32:58

自学C语言笔记

占位符%d 以十进制的形式打印整数%c 打印字符%f 打印小数%s 打印字符串%zu 打印sizeof计算的结果%p 打印地址int 整型char 字符类型转义字符:\n 换行\0 字符串的结束标志\t ‌作用是水平对齐数据类型:①内置类型:字符型:char整型…

作者头像 李华
网站建设 2026/10/30 6:20:40

Java开发同城KTV预约系统:Spring Boot与Redis实战

1. 项目概述"Java打造同城:自助KTV线上预约新体验源码"是一个基于Java技术栈开发的线上KTV预约系统。这个项目主要解决传统KTV行业面临的预约效率低、资源分配不均等问题,通过互联网技术实现同城KTV资源的线上化管理和预约。作为一个全栈Java项…

作者头像 李华