想象一位经验丰富的连锁超市财务总监,面对即将到来的节假日,她需要预测未来几周各门店的销售额。她不会只看昨天的数据——她还会关注今年是否新开了门店(静态信息)、节假日的确切日期(已知未来信息)、以及近期天气变化对客流的影响(观测历史信息)。更可贵的是,当她给出预测时,她能清楚地说出“因为去年同期促销效果好,加上本周天气晴好,所以预测销量将上涨15%”——这正是 TFT(Temporal Fusion Transformer,时序融合Transformer)要实现的:既能做出精准的多时间点预测,又能解释每个因素对预测的贡献。

岗位关联

TFT 是当前时序预测领域“能解释”的标杆模型。掌握它,你就能在零售、金融风控等业务场景中,既交出预测结果,又讲清楚预测依据,成为业务方信赖的数据科学家。

目录
  1. 可视化演示
  2. 三类输入融合
  3. 门控残差网络
  4. 变量选择网络
  5. 多horizon预测
  6. 注意力解释
  7. 分位数预测
  8. 可解释性应用
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示矩阵变换下特征向量的方向不变性,通过交互式坐标平面演示特征值缩放和特征向量方向。

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

矩阵变换 线性变换 Av 将向量 v 映射到新位置 特征向量:Av = λv,方向不变仅缩放 Av = λv

三类输入融合

财务总监开始做预算了。她面前摆着三叠资料:第一叠是门店的固定档案——店型、商圈、开业年限,这些几乎不变,叫静态特征;第二叠是日历上已经定好的安排——下周有促销、下月是国庆节,这些日期已知且一定会发生,叫已知未来特征;第三叠是每日流水——销量、客流、天气,这些随日子起伏,叫观测历史特征。TFT 的起点,正是像这位总监一样,把三叠资料整整齐齐地摆上桌。

在 TFT 中,三类输入各有各的编码方式。静态特征通过一个特殊的编码器变成“上下文向量”,这个向量不会随时间变化,作为全局背景贯穿整个预测过程。已知未来特征(比如未来的促销计划、节假日)是强力先验——它们尚未发生,但一定会发生,模型可以直接把它们作为未来时间步的输入。观测历史特征则是自回归地提供“到目前为止发生了什么”。

摆好三叠资料后,总监会先快速浏览一遍,把每叠资料里真正重要的信息圈出来——这就是下一节要讲的门控机制。

xt=[statics; knownt; observedt]\mathbf{x}_t = [\text{static}_s; \ \text{known}_t; \ \text{observed}_t]
这个公式表示每个时间步 $t$ 的输入 $x_t$,是把三类特征拼接($;$ 表示拼接)在一起。静态特征 $s$ 不随时间变化,已知未来和观测特征随时间 $t$ 变化。
  1. 时间步 $t$ 的输入向量$x_t$ 是模型在时刻 $t$ 看到的完整信息,由三部分拼成。
    xt=[statics; knownt; observedt]\mathbf{x}_t = [\text{static}_s; \ \text{known}_t; \ \text{observed}_t]
  2. 静态特征项$\text{static}_s$ 表示门店的固定属性,同一门店所有时间步共享这份“档案”。
    statics=embed(店型,商圈,开业年限)\text{static}_s = \text{embed}(\text{店型}, \text{商圈}, \text{开业年限})
  3. 已知未来特征项$\text{known}_t$ 是时刻 $t$ 的日历信息,如“明天是促销日”——模型在预测未来时,这些是确定知道的。
    knownt=embed(促销标志,节假日,星期)\text{known}_t = \text{embed}(\text{促销标志}, \text{节假日}, \text{星期})
  4. 观测历史特征项$\text{observed}_t$ 是时刻 $t$ 之前实际观测到的数据,如“昨天销量 500 件”。
    observedt=embed(销量,客流量,天气)\text{observed}_t = \text{embed}(\text{销量}, \text{客流量}, \text{天气})

门控残差网络

资料太多了,有些信息是噪音。比如“门店编号 1024”,对预测销量毫无帮助;但“开业年限”,对判断成熟门店的稳定销量很关键。总监需要一道“筛选滤镜”,把重要的信息放大,把噪音过滤掉。这道滤镜,就是 TFT 中的门控残差网络(GRN, Gated Residual Network)。

门控机制像一个可学习的“阀门”:它通过一个 Sigmoid 函数,输出 0 到 1 之间的数值,决定信息通过的比例——数值接近 1 就全放行,接近 0 就几乎截断。残差连接则像一条“安全旁路”,即使门控把主通路的信息过滤得太多,原始信息依然可以通过旁路直达输出,保证梯度能顺畅回流,训练更稳定。层归一化就像把每层输出的“音量”统一调到标准水平,加快收敛。

总监的“筛选滤镜”会自动学习:哪些变量值得关注,哪些可以被忽略。但同样是“值得关注”,不同变量的重要程度还有差别——接下来,她要给每个变量分配“话语权”。

GRN(a)=LayerNorm(a+GLU(FC(ϕ(FC(a)))))\text{GRN}(a) = \text{LayerNorm}\big(a + \text{GLU}(\text{FC}(\phi(\text{FC}(a))))\big)
门控残差网络接收输入 $a$,经过两层全连接层(FC)和激活函数($\phi$)提取特征,再用门控线性单元(GLU)控制信息通过量,最终加上原始输入 $a$(残差连接)并做层归一化。
  1. 输入向量$a$ 是上一层的输出,比如拼接后的三类特征。
    a=xta = \mathbf{x}_t
  2. 两层全连接加激活$\phi(\text{FC}(a))$ 先用一个全连接层降维,再用激活函数(如 ELU)引入非线性,第二个 FC 把它映射回特征维度。
    FC(ϕ(FC(a)))\text{FC}(\phi(\text{FC}(a)))
  3. 门控线性单元 GLU$\text{GLU}(\cdot)$ 用 Sigmoid 门控对变换后的特征做“逐元素开关”,决定保留多少信息。
    GLU(γ)=σ(W1γ+b1)⊙(W2γ+b2)\text{GLU}(\gamma) = \sigma(W_1\gamma+b_1) \odot (W_2\gamma+b_2)
  4. 残差加和$a + \text{GLU}(\cdot)$ 是残差连接,即使门控全关,原始信息 $a$ 也能通过旁路传递,相当于“保底”。
    a+GLU(⋅)a + \text{GLU}(\cdot)
  5. 层归一化$\text{LayerNorm}(\cdot)$ 对加和结果做归一化,稳定训练。
    LayerNorm(⋅)\text{LayerNorm}\big(\cdot\big)

变量选择网络

假设总监要预测门店下周的销量,手头有 20 个候选变量。凭经验,她会重点关注促销力度、历史销量和天气;门店编号这种变量基本不看。但她如何“定量”地分配关注度?给每个变量打一个权重分,重要的权重高、次要的权重低,再加权求和——这,就是变量选择网络(VSN, Variable Selection Network)。

变量选择网络首先为每个变量独立编码,然后通过一个打分模块输出该变量的重要性分数,再用 Softmax 把这些分数归一化成总和为 1 的权重。Softmax 的特点是“赢者通吃”:分数最高的变量获得最大的权重,而噪声变量的权重被压缩到接近 0。最后,所有变量的编码按权重加权融合,得到一条“净化后”的特征流。

有了净化后的特征流,总监开始布局未来几周的预测节奏——这就是多 horizon 预测。

e~t=∑i=1mSoftmax(score(et(i)))i⋅et(i)\tilde{\mathbf{e}}_t = \sum_{i=1}^{m} \text{Softmax}\big(\text{score}(\mathbf{e}_t^{(i)})\big)_i \cdot \mathbf{e}_t^{(i)}
变量选择后的特征 $\tilde{e}_t$ 是 m 个变量各自编码 $e_t^{(i)}$ 的加权和,权重由 Softmax 归一化的得分决定。这相当于总监对各路信息“按重要性排队”,然后各取所需地综合在一起。
  1. 第 $i$ 个变量的编码$\mathbf{e}_t^{(i)}$ 是第 $i$ 个变量在 $t$ 时刻的嵌入向量。
    et(i)=embed(变量i)\mathbf{e}_t^{(i)} = \text{embed}(\text{变量}_i)
  2. 打分函数$\text{score}(\cdot)$ 是一个小网络,对每个变量编码输出一个标量得分,衡量该变量的重要程度。
    score(et(i))=FC(ϕ(FC(et(i))))\text{score}(\mathbf{e}_t^{(i)}) = \text{FC}(\phi(\text{FC}(\mathbf{e}_t^{(i)})))
  3. Softmax 归一化把所有变量的得分变成和为 1 的权重。
    Softmax(⋅)i=exp⁡(zi)∑j=1mexp⁡(zj)\text{Softmax}(\cdot)_i = \frac{\exp(z_i)}{\sum_{j=1}^{m}\exp(z_j)}
  4. 加权融合各变量编码按权重相加,得到综合特征。
    e~t=∑i=1mαi⋅et(i)\tilde{\mathbf{e}}_t = \sum_{i=1}^{m} \alpha_i \cdot \mathbf{e}_t^{(i)}

多horizon预测

总监的目标不是只预测明天,而是未来 4 周每天的销量。这需要一套“滚动预测”机制:先预测第 1 天的销量,然后用预测值(连同已知未来特征)作为输入,预测第 2 天……但这样误差会累积。TFT 用了一种更优雅的方式:Decoder 逐步生成,但每步都有已知未来特征做锚点,减少误差漂移。

TFT 的预测不是一次性吐出全部未来值,也不是简单自回归,而是用 Transformer 的 Decoder 结构,在每个未来时间步 $t+\tau$,结合历史编码的信息和已知的未来特征,逐点生成预测。位置编码让模型知道“这是未来第几天”。多 horizon 的预测输出是一整条未来曲线,同时每个点上还能给出预测区间(下一节的分位数)。

总监现在有了未来四周的预测曲线,但如果有人问“你为什么预测第三周销量会反弹”——她需要摊开自己的思考过程。对 TFT 而言,这个“思考过程”就是注意力机制。

y^t+τ=Decoder(Encoder(e~t−k:t), knownt+τ),τ=1,…,τmax\hat{y}_{t+\tau} = \text{Decoder}\big(\text{Encoder}(\tilde{\mathbf{e}}_{t-k:t}), \ \text{known}_{t+\tau}\big), \quad \tau = 1, \dots, \tau_{max}
对未来每个步长 $\tau$,解码器都结合历史编码和已知未来特征,生成一个预测值。就像总监每个星期天都对未来四周各做一次预估,既能看趋势又能看节奏。
  1. 历史编码$\text{Encoder}(\tilde{\mathbf{e}}_{t-k:t})$ 对最近 $k$ 个时间步的净化特征做编码,提炼规律。
    Encoder(⋅)=多头自注意力(e~t−k:t)\text{Encoder}(\cdot) = \text{多头自注意力}( \tilde{\mathbf{e}}_{t-k:t})
  2. 未来步长$\tau$ 表示预测未来第几天,从 1 到最大预测步长 $\tau_{max}$。
    τ=1,…,τmax\tau = 1, \dots, \tau_{max}
  3. 解码生成$\text{Decoder}(\cdot)$ 结合历史信息和第 $\tau$ 天的已知未来特征,输出第 $\tau$ 天的预测值。
    y^t+τ=Decoder(⋅)\hat{y}_{t+\tau} = \text{Decoder}(\cdot)

注意力解释

总监的决策依据不是凭空而来。她会说:“因为去年第三周有类似促销,而且历史上每次这个季节促销后一周销量都会小幅反弹。”她的“依据”是一连串历史对照。TFT 的多头注意力机制做的正是这件事:对每个预测时间步,模型在历史序列中找到最相关的若干时间步,给它们分配较高的注意力权重。多头意味着模型同时从多角度(比如趋势、季节性、促销效应)去“回顾”历史。

这些注意力权重可以被提取出来形成热力图,展示“预测未来某天时,模型主要参考了过去的哪些天”。这就是 TFT 可解释性的第一层:时序注意力归因。第二个可解释性来自前面说的变量选择网络:模型告诉你每个变量的重要性权重。三层解释叠加,预测就变成了“可审计的决策报告”。

总监不但能给出预测,还能报出一个区间:“下周销量大概在 4800 到 5200 件之间。”这个区间不是拍脑袋,而是来自分位数预测。

Attention(Q,K,V)=Softmax(QK⊤dk)V\text{Attention}(Q,K,V) = \text{Softmax}\left(\frac{QK^{\top}}{\sqrt{d_k}}\right)V
注意力机制计算一个查询(当前预测目标)与所有历史键(历史时间步)的相似度,用 Softmax 转成权重,再对历史值求加权和。权重高 = 模型认为这段历史对当前预测最有参考价值。
  1. 查询与键的相似度$QK^{\top}$ 计算当前预测目标与每个历史时间步的点积相似度。
    QK⊤QK^{\top}
  2. 缩放因子$\sqrt{d_k}$ 是键的维度,用来防止点积过大导致梯度消失。
    Softmax(⋅dk)\text{Softmax}\left(\frac{\cdot}{\sqrt{d_k}}\right)
  3. 权重加权求和$V$ 是历史值向量,按注意力权重做加权和,得到输出。

分位数预测

如果总监只说“下周卖 5000 件”,采购部门没法判断库存缓冲该备多少。但如果她说“中位数 5000 件,10% 分位 4800 件,90% 分位 5200 件”,采购就能按上限备货,避免缺货。分位数预测输出的不是单点,而是一组分位数——比如 10%、50%、90%——刻画了预测的不确定性。模型在训练时使用分位数损失函数(Pinball Loss),它对预测偏高于实际和偏低于实际的惩罚是不对称的,从而学出不同分位的预测值。

分位数损失的数学形式是:当实际值高于预测值时,惩罚是 $(y - \hat{y}) \times q$;低于预测值时,惩罚是 $(\hat{y} - y) \times (1 - q)$。最小化这个损失,模型学到的是条件分位数。这比只学均值更能捕捉不确定性。

有了预测、权重、区间、归因,最后就是把这些能力放进真实业务中——让 TFT 在零售和金融场景里发光发热。

Lq(y,y^)={q⋅(y−y^),y≥y^(1−q)⋅(y^−y),y<y^\mathcal{L}_q(y, \hat{y}) =\begin{cases}q \cdot (y - \hat{y}), & y \geq \hat{y} \\(1 - q) \cdot (\hat{y} - y), & y < \hat{y}\end{cases}
分位数损失函数用一个非对称的惩罚告诉模型:对 90% 分位的预测,低估比高估更致命(因为要保证 90% 的情况下实际值不超过预测值)。
  1. 实际情况高于预测当 $y \geq \hat{y}$ 时,损失是 $q \cdot (y - \hat{y})$,即低估的惩罚权重是 $q$。
    q⋅(y−y^)q \cdot (y - \hat{y})
  2. 实际情况低于预测当 $y < \hat{y}$ 时,损失是 $(1-q) \cdot (\hat{y} - y)$,即高估的惩罚权重是 $1-q$。
    (1−q)⋅(y^−y)(1 - q) \cdot (\hat{y} - y)
  3. 分位数参数$q$ 是目标分位,取 0.5 时就是中位数回归,取 0.9 时是 90% 分位回归。

可解释性应用

回到我们开头的老财务总监。她之所以受信任,不是因为预测永远正确,而是因为每次预测都能给出依据和风险区间。TFT 在业界最受欢迎的应用场景,正是把这种“可解释的预测能力”带到实际业务中。

在零售需求预测中,TFT 融合门店静态特征、促销日历和销售历史,预测未来 8 周各 SKU 销量。当预测某款饮料销量将大涨时,模型的热力图会显示“最近两周高温天气的注意力权重极高”,业务部门便能据此安排备货。在金融风控中,TFT 对客户的时序行为建模,预测其未来违约概率。变量选择网络显示“近三个月账户余额波动”贡献最大,风控人员就能据此决定授信调额。在供应链优化中,TFT 同步预测多仓需求,分位数区间帮助决策者权衡库存成本与缺货风险。

理解 TFT 之后,我们用一段简洁的 Python 代码,把“变量加权 + 分位数预测 + 归因”这个核心链条走一遍。

AI 应用场景

零售促销响应预测

阶段:预测建模与解释归因

解决的问题:传统销量预测只看历史销量曲线,无法量化“促销活动对销量的拉动有多少”。TFT 通过融合促销日历(已知未来)、门店静态信息(静态特征)和历史销量(观测特征),能预测未来 4 周每日销量,并输出每个变量对预测的贡献度。

具体案例:某连锁便利店接入 TFT 后,对 200 家门店做未来 4 周销量预测。模型输出显示,“促销力度”变量在促销日前 3 天的注意力权重显著上升。运营部门据此调整了各店的备货计划,促销期间缺货率下降了 18%,促销后积压库存减少了 25%。

金融风控时序评分

阶段:可解释风险评估

解决的问题:传统信用评分卡模型难以利用用户的时序行为数据(如近 6 个月消费频次变化),而深度学习模型又缺乏解释能力。TFT 的变量选择网络能输出“哪些时序行为指标驱动了风险评分”,满足监管对模型可解释性的要求。

具体案例:某消费金融公司用 TFT 对用户进行贷中风险监测。模型发现“近 3 个月小额贷款申请频次”是风险贡献权重最高的变量。风控团队据此设置了专项规则,在保持通过率不变的前提下,将逾期率降低了 12%。

供应链多仓补货决策

阶段:多 horizon 区间预测

解决的问题:补货决策需要知道未来 2-4 周的库存变化区间,而非单一数字。TFT 的分位数预测输出 10%、50%、90% 三条预测曲线,帮助计划员评估“安全库存应该覆盖到哪个分位”。

具体案例:某电商企业用 TFT 预测全国 5 个仓的手机壳库存需求。90% 分位预测帮助计划员在高销量区域按上限备货,在低销量区域按下限备货,整体库存周转率提升了 20%,缺货损失减少 15%。

Python 演示

python29 行
import numpy as np # 模拟 30 天的历史销量数据(单位:件)np.random.seed(42)t_days = np.arange(30)sales = 50 + 5 * np.sin(t_days / 5) + np.random.normal(0, 3, 30)promo = np.array([0 if i % 7 != 3 else 1 for i in range(30)])  # 每周三促销temp = 20 + 5 * np.sin(t_days / 10) + np.random.normal(0, 2, 30) # 简化的变量选择:用相关性打分代替完整神经网络var_names = ['历史销量', '促销标志', '气温']pearson = lambda x, y: np.corrcoef(x, y)[0, 1]scores = np.array([pearson(sales, sales), pearson(sales, promo), pearson(sales, temp)])scores = np.maximum(scores, 0)  # 负相关不计入正贡献weights = np.exp(scores - scores.max()) / np.sum(np.exp(scores - scores.max())) # 分位数预测:用历史分位数 + 变量加权修正def quantile_forecast(horizon=7, q=0.5):    base = np.percentile(sales, int(q * 100))    future_promo = promo[-1]  # 假设未来促销状态不变    adjust = weights[1] * future_promo * 8 + weights[2] * (temp[-1] - 20) * 0.5    return base + adjust * np.ones(horizon) # 输出预测与解释print('变量重要性权重:', dict(zip(var_names, np.round(weights, 3))))for q in [0.1, 0.5, 0.9]:    fc = quantile_forecast(q=q)    print(f'{int(q*100)}% 分位预测未来 7 天销量: {fc[0]:.1f} 件/天')print('解释: 促销对预测的拉动贡献最大, 权重 =', round(weights[1], 3))
目的:用 40 行代码模拟 TFT 的“变量选择(相关性打分 + Softmax 归一化)+ 分位数预测”核心逻辑,输出变量重要性权重和三个分位的销量预测。
  1. pearson(sales, sales)计算历史销量与自身的相关性,作为该变量的“重要性打分”,模拟变量选择网络的打分模块。
  2. np.maximum(scores, 0)把负相关变量的得分置为 0,模拟 TFT 中噪声变量被门控过滤。
  3. weights = np.exp(...) / np.sum(...)Softmax 归一化,让权重和为 1,突出关键变量。
  4. quantile_forecast(q=0.5)用历史分位数作为基准预测,模拟分位数损失训练出的条件分位输出。
  5. future_promo * 8促销变量对预测的“拉动效应”,对应 TFT 中变量选择后的加权贡献。

常见误区

误区我一开始以为 TFT 和普通 Transformer 一样,Encoder 一次性读取整个输入序列,然后 Decoder 一次性并行输出全部未来时刻的预测值。

正解TFT 的 Decoder 是逐步自回归生成的——每一时间步的预测会作为下一步的已知信息参与计算。但它的聪明之处在于,每一步都有“已知未来特征”作锚点(比如未来促销计划),所以误差不会像纯自回归那样无限累积。就好比总监预测未来四周,不是闭眼一次说完全部数字,而是每周根据已知安排逐步更新预估。

为何常见:因为 TFT 名字里有 Transformer,而标准 Transformer 的 Decoder 在训练时确实可以并行(教师强制),容易让人误以为推理时也是一次性并行输出。

误区分位数预测是不是就是先预测均值,然后加一个固定的误差带?比如预测 5000 件,10% 分位就是 5000 减一个固定值?

正解不是。分位数预测的每个分位都是独立优化的——50% 分位和 90% 分位的预测曲线可以有不同的形状。比如在促销日,90% 分位可能会“跳得更高”(因为促销效果不确定性大),而 10% 分位可能只微涨。这相当于总监不仅说“大概卖 5000”,还说“最差也能卖 4800,最好可能到 5500 且促销日的不确定性更大”。误差带的宽度是逐点学习的,不是固定常数。

为何常见:传统回归默认输出条件均值,给误差带时习惯用均方误差的近似方差,把不确定性看成全局一致的,忽略了不确定性本身会随时间变化。

误区TFT 输出变量权重 0.4,是不是意味着该变量对销量有 40% 的因果驱动作用?

正解变量选择权重反映的是“该变量对预测的统计贡献”,不是因果效应。它衡量的是:模型在拟合历史数据时,发现该变量对降低预测误差有多大帮助。这好比总监说“促销和过往销量是我的主要参考依据”,但这不等于“做促销就一定能带来 40% 的增长”——那是因果推断的范畴,TFT 不保证。用它做归因解释可以,但别把它当因果结论。

为何常见:人天生倾向于把“相关性”理解为“因果性”,尤其是看到模型给出一个看起来精确的数值权重时,很容易把注意力权重和变量重要性误解为因果效应。

误区静态特征(门店类型、商圈)反正不随时间变化,对预测未来走势应该没什么用,只是给模型多一个“背景说明”罢了。

正解静态特征在 TFT 中作用巨大——它通过编码器生成全局上下文向量,这个向量会参与调节注意力机制和门控机制。就好比总监拿到两家店:一家是社区店,一家是商圈店。即使它们的历史销量曲线相似,未来的促销响应也可能截然不同——社区店的促销效果往往更持久,商圈店则更受节假日客流影响。静态特征让模型学会“对不同店采用不同的预测规则”,而不是所有店套用一个模板。

为何常见:认知上容易把“不随时间变化”等同于“信息量小”,忽略了静态特征与动态特征之间的交互作用(比如“哪类店对促销更敏感”)。

误区只要把 TFT 的注意力权重画成热力图,整个模型的预测逻辑就完全透明了,业务方可以完全信任模型的每个决策。

正解注意力权重确实是 TFT 可解释性的重要一环,但它不是全部。模型决策还受变量选择权重、门控机制的内部状态等影响。而且注意力权重只能说明“模型关注了什么”,不能说明“模型为什么关注它”。好比总监能给出一份参考依据清单(最近哪些天的数据、哪些变量),但她的完整思考过程(如何综合这些依据)依然是一个“黑箱”。TFT 的可解释性是有边界的——它提供的是“局部归因”而非“完全透明”。

为何常见:对“可解释 AI”的期望过高,认为“有注意力可视化 = 模型完全可解释”。实际上注意力只是解释的一种近似手段,业务部署时仍需配合其他验证手段。

面试题

Q1. TFT 融合的三类输入分别是什么?

单选题 · easy

  • A.静态特征、已知未来特征、观测历史特征← 正确答案
  • B.训练集、验证集、测试集
  • C.高频信号、低频信号、噪声信号
  • D.图像特征、文本特征、语音特征

答案:A。TFT 专门为时序预测设计,三类输入对应“不随时间变的属性、未来一定会发生的事、以及过去发生了什么”。B 是数据切分,C 是信号处理概念,D 是其他模态,均与 TFT 输入设计无关。

Q2. 门控残差网络(GRN)中,残差连接的主要作用是什么?

单选题 · easy

  • A.增加模型参数量
  • B.防止门控过滤过多导致信息丢失← 正确答案
  • C.让模型变深
  • D.替代注意力机制

答案:B。残差连接提供一条“旁路”,即使主通路的信息被门控压缩得很低,原始输入仍能直达输出,既保证信息不丢失,又缓解深层网络的梯度消失问题。它不是为了增加参数量或替代注意力。

Q3. 变量选择网络使用什么函数将变量得分归一化为权重?

单选题 · easy

  • A.Sigmoid
  • B.Tanh
  • C.Softmax← 正确答案
  • D.ReLU

答案:C。Softmax 能把一组实数变成和为 1 的正权重,且具有“赢者通吃”的特性,适合做变量重要性归一化。Sigmoid 输出 0~1 但和为不固定,Tanh 和 ReLU 都不满足归一化要求。

Q4. 分位数损失函数中,当实际值大于预测值时,惩罚项的系数是多少?

单选题 · mid

  • A.q← 正确答案
  • B.1-q
  • C.0.5
  • D.1

答案:A。当 $y \geq \hat{y}$ 时,损失是 $q \cdot (y - \hat{y})$,即偏低的惩罚系数是 $q$。q 越大(如 0.9),模型越不愿意低估实际值,因为低估的代价更高。这符合高百分位预测的业务直觉。

Q5. TFT 的 Decoder 在预测未来时,为什么能减少纯自回归的误差累积?

单选题 · mid

  • A.因为用 LSTM 替换了 Transformer
  • B.因为每个未来时间步都有已知未来特征做锚点← 正确答案
  • C.因为使用了更大的学习率
  • D.因为输出直接就是最终结果,无需迭代

答案:B。TFT 在自回归生成每个未来时间步时,都利用已知未来特征(如促销计划、节假日)作为附加信息。这些特征已经确定,能修正预测方向,避免误差滚雪球。它仍是逐步生成,不是一步到位。

Q6. TFT 的多头注意力主要用来做什么?

单选题 · mid

  • A.对变量做降维
  • B.捕捉时序依赖并支持解释← 正确答案
  • C.替代分位数损失
  • D.生成静态特征

答案:B。多头注意力让每个预测时间步“回顾”历史时间步,从不同子空间捕捉时序依赖。其权重矩阵可提取为热力图,作为“模型关注了哪些历史时刻”的解释依据。它不是降维工具,也不替代损失函数。

Q7. 变量选择网络的 Softmax 权重之所以能实现“稀疏选择”,主要原因是什么?

单选题 · hard

  • A.Softmax 输出全是 0 或 1
  • B.Softmax 对指数级差异会放大,趋于“赢者通吃”← 正确答案
  • C.权重是随机初始化的
  • D.Softmax 有正则化项

答案:B。Softmax 使用指数运算,变量得分之间微小的差异会被指数级放大,导致高得分变量获得压倒性权重,低得分变量趋近于 0。它不是严格的 0/1 稀疏,而是近似稀疏,但足以抑制噪声变量的影响。

Q8. 分位数预测对业务决策的核心价值是什么?

单选题 · hard

  • A.让预测结果更美观
  • B.提供预测的不确定性区间,支撑库存和风控决策← 正确答案
  • C.降低模型训练时间
  • D.替代人工经验

答案:B。分位数预测输出 10%、50%、90% 等区间的预测值,让决策者知道“最坏能到什么程度、最好能到什么程度”。比如库存按 90% 分位备货可避免缺货,风控按 90% 分位做损失预估更稳健。这是单点预测无法提供的价值。

Q9. TFT 的输入融合中,已知未来特征包括哪些?

多选题 · mid

  • A.明天的促销安排← 正确答案
  • B.下周的节假日← 正确答案
  • C.昨天的实际销量
  • D.门店的商圈类型

答案:AB。已知未来特征是未来时间点一定会发生且提前知道的信息,如促销日历、节假日安排。昨天的实际销量属于观测历史特征;门店商圈属于静态特征,二者不属于已知未来特征。

Q10. 关于 TFT 的可解释性,下列说法正确的有哪些?

多选题 · hard

  • A.变量选择权重可说明各变量的相对特征重要性← 正确答案
  • B.注意力热力图可显示模型重点关注的历史时间步← 正确答案
  • C.注意力权重等于变量的因果效应
  • D.分位数区间提供了不确定性的量化表达← 正确答案

答案:ABD。TFT 的可解释性来自两个维度:变量权重(哪些变量重要)和时序注意力(哪些历史时刻重要)。分位数区间量化了不确定性。但注意力权重只表示统计相关性,不构成因果效应,不能解读为“改变变量就导致结果改变”,所以 C 错误。