除夕前夜,城中最大的饭店要承办一场连续十天、每天八千人的“长桌宴”。总厨需要提前排出一份覆盖上百道菜的完整出餐计划。他手头有厚厚一摞往年档案——过去五年的菜单、客流、天气、节日记录。普通厨师会翻遍每一份档案、为每道菜比对全部历史,假如 1000 道菜对 1000 份档案,就要比对 100 万次。老师傅却有门道:他先快速判断哪些档案“与众不同”——去年冬至的爆单、上回台风的备货危机——只精读这几本关键档案,其余掠过;再把几十种调料熬成一碗高汤,越熬越少、精华越稠。这位“聪明厨师”的思路,正是今天要讲的 Informer——一个专为超长序列预测而生的深度学习模型。 Informer 针对注意力机制“每个查询都要和所有键配对”的平方级开销,提出 ProbSparse 自注意力:先给每个查询算一个“稀疏度评分”,只保留信息量最大的 Top-K 少数查询;再用“蒸馏”把序列逐层浓缩减半;配合能读懂周几、月份、节假日的时序编码。最终,它让电力、交通这类按小时甚至按分钟滚动记录的超长数据预测,以接近线性的复杂度逼近全注意力的精度。

岗位关联

掌握 Informer,等于拿到长序列预测的“工业级钥匙”——在算力可控的前提下做出接近全注意力精度的长期预测,这是时序算法工程师的核心竞争力之一。

目录
  1. 可视化演示
  2. 一、长序列预测困境
  3. 二、概率稀疏注意力
  4. 三、稀疏度度量
  5. 四、蒸馏编码器
  6. 五、时序特征编码
  7. 六、效率与精度
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

一、长序列预测困境

总厨要在除夕前排出十天完整菜单。最笨的办法是任何新人都会的:每设计一道菜,就把五年档案从头翻到尾。一千道菜对一千份档案,就是一百万次配对。菜单还没排完,人先累垮了——这个“每道新菜都去比对全部老档案”的动作,在深度学习中有一个响当当的名字:注意力机制。

在 Transformer 模型里,序列中的每个时间步都会产生一个“查询”(query,相当于“想找什么资料的问题”),历史序列的其他时间步则是“键”(key,相当于“档案的标签”)和“值”(value,相当于“档案正文”)。计算注意力,就是让每个查询去和所有键比对相似度,再按相似度把值加权汇总。序列长度记为 L,每个查询要配对所有 L 个键,总共就是 L×L = L² 次计算。序列翻一倍,计算量变四倍,这就是“平方复杂度”的含义。

长序列预测的头号敌人正是它:序列稍长,训练时间与显存双双失控。标准自注意力的公式如下:

试想,总厨若真的把 1000×1000 次比对全部做完,光查档案就要好几天;换成机器,序列长度从 1000 涨到 2000,花费会变成四倍。长序列预测最难的不是数据不够,而是算不过来。幸好,老师傅另有心法——只看关键档案。

Attention(Q,K,V)=Softmax(QKTdk)V\displaystyle \text{Attention}(Q,K,V)=\text{Softmax}\left(\frac{QK^{T}}{\sqrt{d_k}}\right)V
通俗理解:Q 是“提问清单”,K 是“档案标签”,V 是“档案正文”。先算 Q 与 K 的相似度,归一化成权重,再按权重调取 V 的内容。
  1. 相似度矩阵 QKᵀ让每个查询与每个键做点积,得到 L×L 的得分矩阵——相当于把所有新菜与所有老档案逐一比对,一张都不能少。
    QKTQK^{T}
  2. 缩放因子 √d_k特征维度越大,点积数值越大,Softmax 越容易“一边倒”导致梯度消失;除以 √d_k 把分数压回温和区间。
    QKTdk\frac{QK^{T}}{\sqrt{d_k}}
  3. Softmax 归一化对每一行做指数归一化,让得分变成总和为 1 的权重,突出最相关的键、压低无关键。
    Softmax(⋅)\text{Softmax}(\cdot)
  4. 加权求和得输出用权重对 V 做加权平均,每个查询得到融合了全部历史信息的输出向量。
    Attention(Q,K,V)\text{Attention}(Q,K,V)

二、概率稀疏注意力

老师傅有个习惯:新菜单动笔前,只在档案堆里抽几本——去年冬至的爆单记录、上回台风断供的账本、今年春节的备货单。徒弟问为什么。“大部分日子都差不多,真正改变菜单的就那么几份。读透它们,其他按经验走。”这就是稀疏性的直觉:绝大多数配对是冗余的。

研究发现,长序列的注意力矩阵天然是“稀疏”的:只有少数“活跃查询”的注意力分布尖锐地集中在一两个键上,主导了输出;大部分查询的注意力近似均匀,跟谁都差不多,算不算它们对结果影响很小。于是 Informer 提出 ProbSparse 自注意力——先对每个查询做稀疏度评估,挑出信息量最大的 Top-K 个,只对它们计算注意力。

稀疏注意力把查询矩阵从 L 个压到 K 个,但键仍然完整保留。公式如下:

于是总厨把“翻一千遍档案”改成“精读五六本、粗看一遍摘要”,时间省下几个数量级。但新问题来了:怎么在翻档案之前就知道哪几本值得精读?这就要靠稀疏度度量这双火眼金睛。

ProbSparseAttention(Q,K,V)=Softmax(Q‾KTdk)V\displaystyle \text{ProbSparseAttention}(Q,K,V)=\text{Softmax}\left(\frac{\overline{Q}K^{T}}{\sqrt{d_k}}\right)V
通俗理解:Q 上多了一根横线,表示“这是被精挑细选出来的少数查询”;K 和 V 仍然完整,历史信息不丢。
  1. 稀疏查询矩阵 Q̄只把稀疏度评分最高的 Top-K 个查询向量装进来,其余查询直接跳过,不参与点积——这是省下绝大部分计算的关键。
    Q‾\overline{Q}
  2. 完整键矩阵 Kᵀ键一个都不能少,因为任何查询都可能与某个历史键高度相关,丢掉键等于丢掉历史。
    KTK^{T}
  3. 缩放因子 √d_k与标准注意力相同,防止点积数值过大破坏 Softmax 的梯度。
    Q‾KTdk\frac{\overline{Q}K^{T}}{\sqrt{d_k}}
  4. Softmax 与加权输出对选中查询的得分归一化后与 V 加权求和;未选中的查询不产生任何计算成本。
    Softmax(⋅)V\text{Softmax}(\cdot)V

三、稀疏度度量

徒弟问:“师傅,您怎么一眼看出哪几本档案关键?”老师傅说:“看它跟普通档案差多少。冬至那本客流是平时三倍,台风那本备货余量几乎归零。凡是跟平均水平差得离谱的,就是关键。”

这正是稀疏度度量的思想:一个查询的注意力分布如果越偏离“均匀分布”,说明它越“挑食”——只对极少数键倾注超高关注,这样的查询承载了大量信息。Informer 用“查询分布与均匀分布的 KL 散度”来量化这种偏离,略去常数项后得到一个简洁的公式:

品菜师不必喝完整锅汤,尝三五勺就敢写评语——采样近似让“挑关键档案”这件事本身也极其便宜。选出了 Top-K 查询,我们还要对付另一个开销:序列太长,内存和计算仍然吃紧。下一节,老师傅的“熬高汤”绝活登场。

M(qi,K)=ln⁡∑j=1LKeqikjTd−1LK∑j=1LKqikjTd\displaystyle M(q_i,K)=\ln\sum_{j=1}^{L_K} e^{\frac{q_i k_j^{T}}{\sqrt{d}}}-\frac{1}{L_K}\sum_{j=1}^{L_K}\frac{q_i k_j^{T}}{\sqrt{d}}
通俗理解:M 就是“这道菜的味道偏离普通水平多少”。偏离越大,越值得主厨亲自盯着;近似计算则是“尝几口判断整锅汤”。
  1. LogSumExp 第一项对当前查询与所有键的得分求指数和再取对数,近似等于“最匹配的键有多大优势”;若某个键异常匹配,这一项会明显偏大。
    ln⁡∑j=1LKesij\ln\sum_{j=1}^{L_K} e^{s_{ij}}
  2. 算术平均第二项所有键得分的平均值,代表这份查询的“普通水平”;两项相减,正好是“突出程度减平均程度”。
    1LK∑j=1LKsij\frac{1}{L_K}\sum_{j=1}^{L_K} s_{ij}
  3. 差值即稀疏度M 越大,说明该查询的注意力越集中在少数键上,是“活跃查询”;M 越小,说明注意力越均匀、越冗余。
    M(qi,K)M(q_i,K)
  4. 采样近似每轮都为 L 个查询算全量键太贵,Informer 随机采样 $U=L_K\ln L_K$ 个键来估算第一项,把评估成本从 O(L²) 降到 O(L ln L)。
    U=LKln⁡LKU=L_K\ln L_K

四、蒸馏编码器

长桌宴备料时,老师傅会熬一锅高汤:骨头、鸡架、干贝丢进去,大火烧开、小火慢煨,滤掉浮沫;汤收到一半,兑水再熬,再收……每一轮汤的体积减半,鲜味却更浓。最后那一小碗汤,是一整锅食材的精华。

Informer 的编码器有一模一样的操作,叫做蒸馏(distillation)。在 ProbSparse 注意力之后,每一层编码器都对序列做一次“浓缩”:先用一维卷积把相邻时间步的信息融合起来,再做非线性激活,最后用步长为 2 的最大池化让序列长度直接减半。层数越深,序列越短,计算和内存开销同步下降。

蒸馏层公式如下:

当原始序列从 1000 步被浓缩到几十步,后面的注意力只在这“一小碗高汤”上工作,成本一降再降。可这时候老师傅又发现一个细节:同样的客流数字,出现在周三下午和年三十晚上,意义完全不同。模型该怎么读懂日历?这就是时序特征编码的舞台。

Xj+1t=MaxPool(ELU(Conv1d(Xjt)))\displaystyle X_{j+1}^{t}=\text{MaxPool}\left(\text{ELU}\left(\text{Conv1d}\left(X_{j}^{t}\right)\right)\right)
通俗理解:高汤“收汁”三步——切料、去沫、猛火收干。卷积负责切料融合,ELU 负责去杂味,池化负责把汤收到一半的量。
  1. 一维卷积 Conv1d用滑动窗口扫过时间维度,把相邻时间步的信息“拌”成局部特征,相当于高汤里的食材先切碎。
    Conv1d(Xjt)\text{Conv1d}(X_{j}^{t})
  2. ELU 激活对卷积结果做非线性变换,负值平滑饱和、正值基本保留,增强特征表达能力。
    ELU(⋅)\text{ELU}(\cdot)
  3. 最大池化 MaxPool以步长 2 对时间维取最大值,序列长度减半;每个窗口里最强的信号留下,弱信号丢弃。
    MaxPool(⋅)\text{MaxPool}(\cdot)
  4. 层级堆叠编码器第 j 层的输出送入第 j+1 层继续浓缩,序列越来越短、特征越来越浓缩。
    Xj+1tX_{j+1}^{t}

五、时序特征编码

老师傅排菜单从不只看数字,还要看日子:冬至前后饺子多备三倍,周五晚上客流是周二的两倍,大年初一大家不来饭店要改外卖。同样一串营业额数字,配上“星期几、几月几号、是否节日”,意思完全不一样。

时间序列数据自带丰富的日历属性:分钟、小时、星期几、几月几号,乃至节假日。Informer 把这些信息编码成向量喂给模型,让注意力知道“我看到的这个时刻,是年三十还是普通周三”。其中最主要的编码是位置编码——它告诉模型“这是第几个时间步”,让模型能区分先后顺序。

位置编码用不同频率的正余弦函数生成:

有了这把“时间尺”和这张“黄历”,模型终于知道历史中哪些“同一天”“同类日子”值得借鉴。日历读懂了,关键档案挑出来了,高汤也熬好了——整套流程足以应对超长序列。最后我们来看,这套组合拳到底省了多少、准不准。

PE(pos,2i)=sin⁡(pos100002i/dmodel),PE(pos,2i+1)=cos⁡(pos100002i/dmodel)\displaystyle \text{PE}_{(pos,2i)}=\sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right),\qquad \text{PE}_{(pos,2i+1)}=\cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right)
通俗理解:位置编码像日历上的一把刻度尺;在此基础上 Informer 还会叠加可学习的“分钟/小时/星期/月份/节假日”嵌入向量,等于在尺子旁边再贴一张黄历。
  1. 位置序号 pospos 是时间步在第几个位置,从 0 开始数;位置不同,编码向量就不同。
    pos\text{pos}
  2. 维度下标 i特征维度被分成一对对(2i 与 2i+1),分别用正弦和余弦编码;维度越高频率越低。
    2i, 2i+12i,\ 2i+1
  3. 频率分母 10000^{2i/d}让不同维度拥有不同刻度——低维快变、高维慢变,像尺子上从毫米到米的刻度。
    pos100002i/d\frac{pos}{10000^{2i/d}}
  4. 正余弦交替偶数维正弦、奇数维余弦,保证任意两个位置都有可区分的相位组合。
    sin⁡, cos⁡\sin,\ \cos

六、效率与精度

十天的长桌宴终于开席。客人络绎不绝,总厨一手翻着浓缩好的高汤菜单、一手兼顾后厨,从容不迫。徒弟记录:这次排菜单只用了两小时,客人满意度几乎满分。消息传开,同行纷纷表示:“这不比那家熬三天三夜的传统馆子差,还快得多。”

消息传回技术圈就是三组数字:标准 Transformer 的复杂度是 O(L²),序列一长就爆炸;Informer 把 ProbSparse 注意力、蒸馏、采样评估组合起来,整体复杂度降到 O(L ln L),接近线性;而实验精度在电力变压器温度、交通流量等长程预测任务上与全注意力几乎持平,某些指标甚至更优。

复杂度对比公式如下:

从此,长桌宴不再是少数老店的传说——Informer 让任何一台普通算力服务器都能在电力负荷、交通流量这类动辄上万步的时序数据上,做出接近全注意力精度的长期预测。总厨的经验,如今变成了公开的菜谱。

---

O(L2) ⟶ O(Lln⁡L)\displaystyle O(L^2)\ \longrightarrow\ O(L\ln L)
通俗理解:复杂度从“平方”缩到“线性对数”,就像把“翻遍全部档案”改成“精读关键几本”——省下大量冗余劳动,留下关键信息。
  1. 原来平方复杂度 O(L²):标准注意力中每个查询必须与全部键配对,计算量是 L×L,序列翻倍成本变四倍。
    O(L2)O(L^{2})
  2. 现在线性对数复杂度 O(L ln L):ProbSparse 只保留 c·ln L 个活跃查询,稀疏度评估用 U = L ln L 个采样键近似,整体计算量随 L 近乎线性增长。
    O(Lln⁡L)O(L\ln L)
  3. 蒸馏再减半编码器每一层蒸馏让序列长度减半,堆叠 d 层后主要计算集中在一个长度为 L/2^d 的精华序列上,内存占用同步下降。
    L2d\frac{L}{2^d}
  4. 精度何以不降注意力本就高度稀疏,丢弃冗余配对等于去噪;蒸馏保留下最显著的时间特征,二者让“省算”与“保准”兼得。
    Accuracy≈Full Attention\text{Accuracy}\approx\text{Full Attention}

AI 应用场景

场景一:电力负荷预测——电网调度中心的“长桌宴”

阶段:数据预处理与模型训练

解决的问题:电网要提前 3-7 天预测逐小时负荷曲线,传统 ARIMA 只能做短步长,误差随预测长度快速累积;标准 Transformer 在 1000 步以上的序列上平方复杂度吃不消。Informer 用 ProbSparse 自注意力加蒸馏,把两年多的逐小时负荷(附带温度、节假日标记)编码成特征,一次前向输出一整周 168 小时负荷曲线,像总厨一口气排出十天菜谱。

具体案例:某省级电力调度中心将历史负荷与天气、星期、节假日拼成特征表,训练 Informer 后,96 步长预测误差与全注意力模型接近,训练显存却只用了原来的小零头,模型每天凌晨自动重训并下发调度建议。

场景二:交通流量预测——智慧城市的“客流日历”

阶段:特征工程与模型评估

解决的问题:交通部门需要预测未来 48 小时各主干道车流量以调整信号灯与诱导屏。传统统计模型难以捕捉“工作日早晚高峰 + 周末出游 + 节假日返程”的复合节奏;Informer 的时序编码正好把日历属性写进模型,稀疏注意力又能从一年前的同类型日子中翻出关键档案。

具体案例:某市交通大数据平台用量化路口线圈数据训练 Informer,输出未来 48 小时逐 15 分钟流量预测,调度中心据此提前放行主路、切换潮汐车道,高峰拥堵指数下降约 12%。

场景三:零售库存补货——供应链的“备货单”

阶段:模型推理与业务集成

解决的问题:连锁零售商要为上千个 SKU 预测未来 90 天销量来安排补货和库容,长程预测误差会被层层放大——备多了压资金、备少了断货。Informer 能在线性开销内处理 90 天长序列,并利用促销、节假日时间戳修正需求波动,就像总厨提前三个月就知道年三十该备多少货。

具体案例:某连锁超市用三年日销量数据训练 Informer,预测未来一个季度每个 SKU 的日销量,补货计划从人工周更改为系统日更,缺货率下降 8%,库存周转天数缩短 11%。

Python 演示

python41 行
import numpy as np  def sparsity_measure(Q, K, d):    S = Q @ K.T / np.sqrt(d)  # 所有查询与键的点积分数    row_max = S.max(axis=1, keepdims=True)    lse = np.log(np.sum(np.exp(S - row_max), axis=1)) + row_max[:, 0]    mean = np.mean(S, axis=1)  # 算术平均项    return lse - mean  # 稀疏度评分  def prob_sparse_attention(Q, K, V, c=3, sample_ratio=0.5):    L_q, d = Q.shape    L_k = K.shape[0]    M = sparsity_measure(Q, K, d)  # 为每个查询打分    top_n = max(1, min(int(c * np.log(L_q)) + 1, L_q))    query_idx = np.argsort(M)[-top_n:]  # 取 Top-K 活跃查询    key_n = max(1, min(int(sample_ratio * L_k), L_k))    key_idx = np.random.choice(L_k, key_n, replace=False)    key_idx.sort()  # 采样键用于近似评分    S = Q[query_idx] @ K[key_idx].T / np.sqrt(d)    A = np.exp(S - S.max(axis=1, keepdims=True))    A = A / A.sum(axis=1, keepdims=True)  # 稀疏 Softmax    out = np.zeros_like(Q)    out[query_idx] = A @ V[key_idx]  # 仅回写选中查询    pairs = top_n * key_n    return out, M, pairs  if __name__ == "__main__":    rng = np.random.default_rng(42)    L, d = 64, 16    Q = rng.normal(size=(L, d))    K = rng.normal(size=(L, d))    V = rng.normal(size=(L, d))    out, M, pairs = prob_sparse_attention(Q, K, V)    total = L * L    print("输出形状:", out.shape)    print("稀疏度评分示例:", np.round(M[:5], 3))    print("Top-3 查询索引:", np.argsort(M)[-3:].tolist())    print("计算配对 %d, 占全量 %.1f%%" % (pairs, 100.0 * pairs / total))
目的:用 NumPy 从零实现 ProbSparse 自注意力的核心流程,直观展示稀疏化后计算配对的压缩比例。
  1. M = sparsity_measure(Q, K, d)给每个查询算“口味偏离分”,分数越高越值得精读,这就是稀疏度度量。
  2. query_idx = np.argsort(M)[-top_n:]按分数从高到低取 Top-K 查询,对应老师傅“只翻关键档案”。
  3. key_idx = np.random.choice(L_k, key_n, replace=False)随机采样部分键来近似评分,相当于“尝几口判断整锅汤”。
  4. out[query_idx] = A @ V[key_idx]只把注意力结果写回被选中的查询,其余查询保持零向量。
  5. print("计算配对 %d, 占全量 %.1f%%" % (pairs, 100.0 * pairs / total))打印真实配对开销,直观看到省掉了多少计算。

常见误区

误区我以为 ProbSparse 自注意力就是像 Dropout 一样随机丢一些查询,丢谁全靠运气,这样当然会丢信息。

正解ProbSparse 一点不随机敲查询:它用稀疏度评分给每个查询打分,只保留得分最高的 Top-K 个“活跃查询”。随机性只出现在“评估稀疏度时的键采样”上——那是为了省钱的数学近似,选出来的查询本身严格按信息量排序。打个比方:老师傅不是闭眼抽档案,而是先看标题再挑重点。

为何常见:论文里反复出现“采样”字样,且“稀疏=随机”是常见直觉;没仔细分清“对键采样”与“对查询挑选”是两件事。

误区少算了那么多配对,精度肯定掉得厉害,Informer 不过是拿精度换速度的妥协方案。

正解长序列的注意力分布天然高度稀疏,绝大多数查询的注意力近乎均匀分布,贡献接近于噪声。只算 Top-K 活跃查询相当于去噪,反而让模型聚焦关键时间步。在 ETT 电力、交通流量等基准上,Informer 的精度与全注意力几乎持平,部分长程指标更好。

为何常见:把“计算量减少”直接等同于“信息损失”,忽略了冗余计算本身价值很低。

误区蒸馏层让序列长度减半,不就是把序列隔一个采一个吗?那我也能写。

正解简单跳步会丢失相邻时间步的局部结构;Informer 的蒸馏是先做一维卷积把邻域信息“拌”成局部特征,再过 ELU 激活,最后用步长 2 的最大池化选择最强信号。“浓缩”保留精华,“抽稀”只是丢掉数据,二者有本质区别。

为何常见:只看到“长度减半”的结果,忽略了卷积先融合信息的过程。

误区Informer 能处理长序列,所以我把训练输入拼命拉长,比如把三年数据全塞进去,效果肯定最好。

正解过长的输入会引入大量与预测目标无关的历史片段,稀释关键信号,还可能放大噪声;Informer 的意义是让“长序列预测在算力上可行”,而不是“越长越好”。实际工程中要根据数据周期性和任务步长,选择合适的输入窗口与蒸馏层数。

为何常见:把“支持长序列”的能力误解为“所有场景下长输入都更优”。

面试题

Q1. Informer 模型最擅长的任务是下列哪一项?

单选题 · easy

  • A.图像分类与目标检测
  • B.长序列时间序列预测← 正确答案
  • C.自然语言机器翻译
  • D.语音识别与语音合成

答案:B。Informer 是专门为长序列时间序列预测设计的模型,核心卖点是把注意力复杂度从平方降到线性对数。图像分类是 CNN 的强项,机器翻译和语音识别虽用 Transformer,但不是 Informer 的主战场,就像总厨的独门菜谱是为长桌宴准备的,不适合拿去做甜点。

Q2. 标准自注意力机制的计算复杂度是多少?

单选题 · easy

  • A.常数复杂度 O(1)
  • B.平方复杂度 O(L²)← 正确答案
  • C.线性复杂度 O(L)
  • D.对数复杂度 O(lnL)

答案:B。标准自注意力中每个查询都要与全部键配对,L 个查询乘 L 个键就是 L² 次点积。序列翻倍计算量变四倍,这正是长序列预测的头号敌人。常数、线性、对数复杂度都比它低,但都不符合标准注意力的计算方式。

Q3. Informer 将注意力整体复杂度降到了什么量级?

单选题 · mid

  • A.常数复杂度O(1)
  • B.平方复杂度O(L²)
  • C.线性对数O(LlnL)← 正确答案
  • D.指数复杂度O(2^L)

答案:C。Informer 通过 ProbSparse 注意力把查询数压到 c·ln L 个,稀疏度评估用采样近似,整体复杂度收敛到 O(L ln L),处于线性与平方之间的“接近线性”水平。常数与指数复杂度分别低估和高估了它。

Q4. ProbSparse 自注意力靠什么挑选重要的查询?

单选题 · mid

  • A.随机均匀采样查询
  • B.按稀疏度评分取TopK← 正确答案
  • C.按时间先后顺序取
  • D.按查询数值大小取

答案:B。ProbSparse 用稀疏度评分度量“查询注意力分布偏离均匀的程度”,只保留评分最高的 Top-K 个查询,选择过程按信息量排序而非随机或按时间。就像总厨挑档案时专挑“长得最离谱”的先看,而不是闭眼抽一本。

Q5. 稀疏度评分 M(q,K) 由哪两个部分构成?

单选题 · mid

  • A.LogSumExp加均值项← 正确答案
  • B.均值项加方差项
  • C.最大项加最小项值
  • D.正弦项加余弦项值

答案:A。稀疏度评分 M = LogSumExp - 算术平均。第一项刻画“最匹配键的突出程度”,第二项刻画平均得分,差值越大说明注意力越集中在少数键上。均值与方差、最大值与最小值、正弦与余弦都不是这两个组成部分。

Q6. 蒸馏层中序列长度是如何被减半的?

单选题 · hard

  • A.卷积加池化综合浓缩← 正确答案
  • B.随机丢弃一半时间步
  • C.全连接层直接降维
  • D.对序列做线性插值

答案:A。蒸馏层先做一维卷积融合相邻时间步信息,再用 ELU 激活去杂,最后用步长 2 的最大池化让序列长度减半。它是“浓缩”而非简单抽稀,因此能层层保留主导特征。随机丢弃、全连接降维、线性插值都只做下采样或降维,不做邻域融合。

Q7. 关于时序编码中的多频率正余弦,正确的说法有?

多选题 · hard

  • A.偶数维用正弦编码← 正确答案
  • B.让不同维度刻度不同← 正确答案
  • C.位置不同编码就不同← 正确答案
  • D.直接决定预测数值大小

答案:ABC。多频率正余弦位置编码的目的是:偶数维用正弦、奇数维用余弦,不同维度拥有不同频率刻度,从而使任意两个位置的编码都可区分。加快收敛、减少参数量、防止梯度消失都不是位置编码的设计目标。

Q8. 关于稀疏度评估的键采样近似,正确说法是?

单选题 · extreme

  • A.只为降低稀疏度评估成本← 正确答案
  • B.采样结果直接决定注意力输出
  • C.采样键必须覆盖全部时间步
  • D.采样键数量必须等于序列长度

答案:A。采样键只用于快速近似稀疏度评分,从而挑出 Top-K 查询;真正计算注意力输出时,选中的查询使用的仍是完整的键矩阵。所以采样不会直接决定输出,也无需覆盖全部时间步,更不等于序列长度。

Q9. 长序列预测面临的主要挑战包括哪些?

多选题 · easy

  • A.注意力平方复杂度← 正确答案
  • B.长期依赖难以捕捉← 正确答案
  • C.计算内存占用较大← 正确答案
  • D.训练数据必须单调

答案:ABC。长序列预测的三大挑战:注意力平方复杂度、长期依赖难以捕捉、内存占用巨大。“数据必须单调”不是挑战特征——时间序列通常是非平稳、有波动的,单调反而是特例。

Q10. 关于 ProbSparse 注意力,下列说法正确的有?

多选题 · mid

  • A.只对TopK查询算输出← 正确答案
  • B.所有查询都要算稀疏度← 正确答案
  • C.键矩阵必须整体随机采样
  • D.精度接近标准全注意力← 正确答案

答案:ABD。ProbSparse 对全部查询计算稀疏度评分,然后只对 Top-K 查询计算注意力输出;键矩阵在计算输出时完整保留,采样只发生在评分阶段。由于注意力本就高度稀疏,其精度可以接近标准全注意力。