EventTSF的训练与预测逻辑

公式和数据流的角度来剖析《EventTSF: Event-Aware Non-Stationary Time Series Forecasting》的训练和预测逻辑。

1. 数据准备

假设你有时间序列 x 1 , x 2 , ... , x T x_1, x_2, \dots, x_T x1,x2,...,xT 和事件信息 e 1 , e 2 , ... , e T e_1, e_2, \dots, e_T e1,e2,...,eT。

  • 历史序列长度: L hist L_{\text{hist}} Lhist
  • 预测长度(horizon): H H H
  • 模型输出维度: C C C

论文把时间序列拆成 块 (block) ,每个 block 的长度是 H H H(或 block_len),便于 U-shaped Transformer 做下采样/上采样。

训练样本公式:

Input: x t − L hist : t , e t \text{Input: } x_{t-L_{\text{hist}}:t}, \quad e_t Input: xt−Lhist:t,et

Target: v t : t + H = x t + 1 : t + H − x t : t + H − 1 \text{Target: } v_{t:t+H} = x_{t+1:t+H} - x_{t:t+H-1} Target: vt:t+H=xt+1:t+H−xt:t+H−1

这里 v t v_t vt 是速度 (velocity),即时间序列的增量。

  • 公式(1)

v t = x t − x t − 1 v_t = x_{t} - x_{t-1} vt=xt−xt−1


2. 训练阶段逻辑

论文训练的是 velocity denoising

v ^ t : t + H = f θ ( x t − L hist : t , e t ) \hat{v}{t:t+H} = f\theta(x_{t-L_{\text{hist}}:t}, e_t) v^t:t+H=fθ(xt−Lhist:t,et)

  • 输入:

    • 历史序列 x t − L hist : t x_{t-L_{\text{hist}}:t} xt−Lhist:t
    • 对应事件 embedding e t e_t et
    • 时间 embedding t _ e m b t\_emb t_emb(编码位置/时间)
  • 输出:

    • 预测速度 v ^ t : t + H \hat{v}_{t:t+H} v^t:t+H
  • 损失函数

L = 1 H ∑ i = 1 H ∥ v ^ t + i − v t + i ∥ 2 2 \mathcal{L} = \frac{1}{H} \sum_{i=1}^{H} \| \hat{v}{t+i} - v{t+i} \|_2^2 L=H1i=1∑H∥v^t+i−vt+i∥22

注意:训练是在 velocity 上 MSE,而不是直接预测 x x x。

  • 如果论文用 multi-block 自回归(多步训练):

    • 先预测 block1,累加得到 x
    • 再把 block1 作为历史预测 block,预测 block2
    • 保证模型能学习到滞后和非平稳变化

3. 自回归预测阶段

预测阶段核心公式在论文中就是 公式(3) + velocity 累加

  1. EventSteps 决定 block 的步长 Δ t \Delta t Δt:

δ T = σ ( Linear ( e ) ) \delta T = \sigma(\text{Linear}(e)) δT=σ(Linear(e))

t step = 1 T + δ T t_\text{step} = \frac{1}{T + \delta T} tstep=T+δT1

  1. 模型预测 velocity

v ^ t : t + H = f θ ( x t − L hist : t , e t ) \hat{v}{t:t+H} = f\theta(x_{t-L_{\text{hist}}:t}, e_t) v^t:t+H=fθ(xt−Lhist:t,et)

  1. 自回归累加得到预测序列:

x ^ t + i = x ^ t + i − 1 + v ^ t + i − 1 , i = 1 , ... , H \hat{x}{t+i} = \hat{x}{t+i-1} + \hat{v}_{t+i-1}, \quad i=1,\dots,H x^t+i=x^t+i−1+v^t+i−1,i=1,...,H

预测阶段直接用 x 递推,不再用真实 velocity。

这个逻辑严格对应论文里 velocity → accumulate → forecast


4. 数据流总结(训练 vs 预测)

阶段 输入 输出 公式/说明
训练 历史 x, event embedding 预测 velocity v ^ \hat{v} v^ v t = x t − x t − 1 v_t = x_t - x_{t-1} vt=xt−xt−1, 训练 MSE( v ^ , v \hat{v}, v v^,v )
预测 历史 x, event embedding 预测 x 预测 v ^ \hat{v} v^ 后累加: x ^ t + 1 = x t + v ^ t \hat{x}_{t+1} = x_t + \hat{v}_t x^t+1=xt+v^t
block 自回归 前一个 block 预测序列 后一个 block 保持历史信息,用累加结果作为新的历史

重点理解

  1. 训练是在 velocity 上做 denoising

    • 模型学习的是序列变化趋势,而不是绝对值。
    • 这样能更好适应非平稳序列(趋势、波动变化)。
  2. 预测是自回归累加

    • 测试时不会暴露真实 x,只用模型预测的 velocity 累加得到序列。
    • 保证和真实应用一致。
  3. 事件 embedding 直接调节 block 步长和注意力

    • EventSteps 模块学习如何根据事件重要性调整 timestep 分配(公式(3))。

如果用 Python 实现:

python 复制代码
# 训练阶段
v_true = x[:,1:] - x[:,:-1]         # velocity
v_hat  = model(x_hist, ev_emb)
loss   = F.mse_loss(v_hat, v_true)

# 测试阶段
x_pred = x_hist[:,-1:]              # last known value
for t in range(H):
    v_hat = model(x_hist, ev_emb)
    x_new = x_pred + v_hat
    x_pred = x_new                  # 自回归累加
相关推荐
大模型任我行1 天前
谷歌:大模型规划最优性超越传统算法
人工智能·语言模型·自然语言处理·论文笔记
时序之心1 天前
ICLR 2026两篇时间序列论文新思路:都用Patch作为建模基础单元
人工智能·iclr·时间序列
Lsk_Smion6 天前
【类增量学习之2025ICCV】TUNA : 让AI像搭积木一样学习新知识,TUNA的适配器融合之道
人工智能·深度学习·机器学习·论文笔记
析稿AI写作10 天前
终极降重 + 降 AI 率提示词合集,1 小时搞定论文双率问题,建议收藏!
ai写作·论文笔记
时序之心16 天前
做不规则多变量时序预测,试试ReIMTS递归多尺度框架,我实验涨点明显!
人工智能·深度学习·机器学习·时间序列
deardao17 天前
【ICLR 2026】MixLinear:基于0.1 K参数的极低资源多变量时间序列预测
时间序列
stanlyYP20 天前
OpenClaw 升级后避坑指南(实干版)
论文笔记
森诺Alyson20 天前
前沿技术借鉴研讨-2026.4.9(视觉语言模型)
论文阅读·人工智能·经验分享·语言模型·自然语言处理·论文笔记·论文讨论
实证小助手20 天前
最新上市公司2011-2024年面板数据
数据库·论文笔记
Pushkin.22 天前
OpenAI Computer Use Agent (CUA) & Wordle 评估
ai·论文笔记·论文精读