当前位置: 首页 > news >正文

Retrieval Augmented Time Series Forecasting 论文笔记

基本信息

发表刊物

ICML 2025

作者

第一完成单位

School of Computing, KAIST, Daejeon, South Korea

解决的问题

Motivation(背景)

  • 现实世界时间序列的复杂性与模型的局限性

    • 现实世界中的时间序列表现出复杂、非平稳的模式,具有不同的周期和形状 。  

    • 模式可能缺乏固有的时间相关性,源于非确定性过程,导致不经常重复和多样化分布 。  

    • 现有模型在从这些不经常出现的模式中进行推理时,效果令人担忧 。  

  • 现有深度学习模型的学习负担

    • 传统的深度学习模型(如基于CNN、RNN和Transformer的模型)通过学习模型的权重来隐式地捕获历史观测中的模式 。  

    • 强行让模型去学习所有可能的复杂模式会增加学习负担 。  

    • 不加选择地记忆所有模式(包括噪声和不相关的模式)在泛化性和效率方面都有疑问 。  

  • 对稀有模式的记忆困难

    • 如果某个模式在历史数据中很少出现,模型很难将其记忆下来 。  

论文解决的问题(核心创新点)

为解决上述问题,本文提出 RAFT (Retrieval-Augmented Forecasting of Time-series) ,其核心是借鉴了大型语言模型中的“检索增强生成(RAG)”思想 ,将检索模块引入到时间序列预测。

  1. 减轻预测模型的学习负担,增强泛化性

    • 通过检索模块,直接从训练数据集中检索与当前输入模式最相似的历史数据片段 。  

    • 相当于外部提供了关于过去模式的信息,从而增强了模型的容量,并减少了预测模型在学习复杂模式上的负担 。  

  2. 显式利用历史模式,解决稀有模式问题

    • 通过直接利用检索到的信息,过去有用的模式在推理时可以显式地提供给模型,而不是仅仅依赖于模型权重中学习到的隐式信息 。  

    • 这样即使一个模式很少出现,检索模块也能让模型在它再次出现时轻松地利用历史模式进行预测 。  

RAFT 的目标是提供足够的归纳偏置(inductive biases)补充模型的学习能力,使其能更有效地处理时间序列中复杂、不经常重复或缺乏时间相关性的模式,从而提高预测的准确性 。

实验证明,RAFT  在十个基准数据集上平均胜率达到 86%,显著优于现有基线模型 。  

论文的方法

问题概述

问题定义

给定 S\in \mathbb{R}^{C \times T} 为含有C个变量的、长度为T的时间序列,

RAFT 利用历史观测值\textit{x}\in \mathbb{R}^{C\times L} 来预测未来值 \textit{y} \in \mathbb{R}^{C \times F} 。

核心思想

  • 增强机制:  RAFT  的核心是引入一个检索模块

  • 检索内容: 给定输入 \textit{x},检索模块会从整个历史时间序列 S 中找到最相关的 Patch 

  • 附加信息: 随后,这些相关Patch 的后续Patches(subsequent patches,即它们在历史中对应的未来值)被检索出来,作为额外的预测信息。

  • 检索过程: 检索过程遵循一种类似注意力 (attention-like) 的结构

    • 相似度计算: 基于输入 \textit{x} 与历史 patch 的相似度来计算重要性权重  

    • 聚合:  检索到的后续patch 通过加权求和 (weighted sum) 的方式进行聚合,生成一个有用的历史信息摘要。

与 Transformer 的关键区别

  • 传统注意力 (如 Transformer): 依赖于一个固定的回溯窗口 (fixed lookback window) 内的数据进行注意力计算和模式学习。

  • RAFT 的检索: 能够从整个时间序列 (the entire time series) 中检索相关数据。这意味着 RAFT 可以找到很久以前出现过的、与当前输入模式相似的稀有模式,这在处理非平稳或具有不经常重复模式的时间序列时,具有显著优势。

整体架构 (Overall Architecture)

为了全面捕获时间序列的特征,RAFT  进一步引入了多周期检索:

  • 多周期处理: 考虑到时间序列在不同时间尺度(如天、周、月)上表现出不同的特性,RAFT 通过对原始时间序列 S 进行下采样 (downsampling),创建出多个具有不同周期的序列。

  • 独立检索: 对每个下采样后的序列,都应用一个独立的检索模块进行检索。

  • 聚合:

    • 每个周期的检索结果先经过一个线性投影 (linear projection)

    • 然后,通过求和 (summation) 的方式进行聚合,形成最终的检索增强特征。

  • 最终预测:

    • 将原始输入 \textit{x} 的特征与聚合后的检索结果进行拼接 (concatenated)

    • 这个组合特征被送入一个线性模型 (linear model) 中,生成最终的预测  \textit{y}

Retrieval module architecture(检索模块架构)

检索模块是 RAFT 的关键创新,它使用了一种类似注意力(attention-like)的结构来进行检索。

构建候选集(Key-Value Pairs)

首先,模型将完整的历史时间序列 S 转化为可供检索的候选集合:

  • Key 集合 (K):  使用步长为 1(或可调整以提高计算效率)的滑动窗口方法,从 S 中提取所有窗口大小为 L 的历史片段。 集合 K = \{k_1, k_2, ..., k_{T-(L+F)+1}\} 中的每个  k_i \in \mathbb{R}^{C \times L} 都是一个 Key 补丁。

    • 排除重叠: 训练阶段 任何与当前输入 \textit{x}  有时间重叠的 Key 须被排除,以防模型作弊。

  • Value 集合 (V): 对于 K 中的每一个 Key  k_i,紧随其后的、窗口大小为 F 的时间片段被定义为对应的 Value v_i \in \mathbb{R}^{C \times F} 。

    •  如果 $k_i$ 被选中,这个 $v_i$  就是模型将用于预测的历史未来值

数据预处理 (Offset Subtraction)

为了使 Patch比较 更具意义,并消除数值的绝对偏移影响,所有参与检索的 Patch 都进行标准化预处理:

  • 机制: 将每个 Patch 的 最后一个时间步的值$x^L$)视为偏移量 (offset)

  • 操作: 将这个偏移量从该片段中的所有时间步数值中减去。

    • 对于查询 $x$: $\hat{x} = \{x^t - x^L\}_{t=1}^L$

    • 所有 Key  $k_i$ 和 Value $v_i$ 也进行类似操作,得到  $\hat{K}$  和 $\hat{V}$。

  • 目的: 确保相似度比较侧重于时间序列的 形状 和 趋势,而不是绝对值的高低。

计算相似度与选择 (Top-m Selection)

使用经过预处理的输入 $\hat{x}$ 作为查询 (Query),与所有预处理后的 Key $\hat{K}$ 进行比较:

  • 相似度函数 (\textit{s}): 采用皮尔逊相关系数 作为相似度函数 $\rho_i = s(\hat{x}, \hat{k}_i)$

    • 优势: 皮尔逊相关系数对 尺度变化 和 值偏移 不敏感,能够有效地捕获时间序列的增减趋势 (increasing and decreasing tendencies)

  • Top-m 选择: 选出相似度 $\rho_i$最高的 $m$ 个 Key 及其对应的 Value。索引集合记为 $J$

加权求和(Weighted Sum)

检索到的 $m$  个历史未来值(Value Patch )被加权聚合,生成最终的检索结果  $\tilde{v}$

  • 注意力权重 (w_i ): 对 Top-m 的相关系数 $\rho_i$ 使用 SoftMax 函数进行归一化,得到权重 $w_i$

    • 其中,$\tau$ 是一个温度参数 (temperature \textbf{$\tau$} ),用于控制权重的集中程度。

    • $w_i = \frac{\exp (\rho_i/\tau)}{\sum_{j \in J} \exp (\rho_j /\tau)}$

  • 加权求和: 最终的检索结果 $\tilde{v}$ 是所有 Value 补丁 $\hat{v}_i$  的加权和: 

  • $\tilde{v} = \sum_{i \in \{1,...,|\hat{V}|\}} w_i \cdot \hat{v}_i$

$\tilde{v}$ 就是从整个历史中提炼出的、与当前输入最相关的历史未来信息,将被送入后续的预测模块中。

Forecast with retrieval module

如何将检索到的历史信息当前输入结合起来,生成最终的预测。分为单周期多周期两种情况。

单周期预测 (Single period)

这是最基础的预测过程:

  • 输入准备:

    • 获取原始输入 $x \in \mathbb{R}^{C \times L}$  和经过加权求和得到的检索结果  $\tilde{v} \in \mathbb{R}^{C \times F}$ 。

    • $x$ 进行偏移量减法预处理,得到 $\hat{x}$(即减去了$x$的最后一个时间步 $x^L$)。

  • 特征提取与投影:

    • 输入特征 $f(\hat{x})$ : 通过线性投影 $f$ 将预处理后的输入 $\hat{x}$ 从维度 $L$ 映射到预测长度 $F$ (即 $\mathbb{R}^L \to \mathbb{R}^F$)。

    • 检索特征 $g(\tilde{v})$ : 通过线性投影 $g$ 将检索结果$\tilde{v}$ 从维度 $F$映射到 F(即$\mathbb{R}^F \to \mathbb{R}^F$)。

  • 特征融合与预测:

    • 融合(拼接$\oplus$):$f(\hat{x})$$g(\tilde{v})$ 拼接(Concatenation)起来,形成一个长度为 $2F$ 的融合特征。

    • 最终预测: 将融合特征送入一个线性预测器 $h$(即 $\mathbb{R}^{2F} \to \mathbb{R}^F$),得到去偏移量的预测结果$\hat{y}$

    $\hat{y} = h(f(\hat{x}) \oplus g(\tilde{v}))$

多周期预测 (Multiple periods)

为了捕获时间序列在不同尺度上的模式(局部模式 vs. 全局趋势),RAFT 引入了多周期检索:

  • 多周期下采样:

    • 定义一组周期 P(例如 $P=\{1, 2, 4\}$)。

    • 对输入 $x$ 、Key 集合 $K$  和 Value 集合  $V$  进行平均池化 (average pooling) 下采样,得到 n 个不同周期下的序列。

    • 对于每个周期  $p \in P$ ,得到相应的查询 $x^{(p)}$ 、Key 集合$K^{(p)}$  和 Value 集合 $V^{(p)}$

  • 独立检索:

    • 对每个周期 $p$ 的下采样序列,都运行一个独立的检索模块。

    • 得到 $n$ 个周期下的检索结果 $\tilde{v}^{(p)}$

  • 聚合:

    • 投影: 每个 $\tilde{v}^{(p)}$ (它们的维度 $\lfloor F/p \rfloor$ 各不相同)都通过一个独立的线性层 $g^{(p)}$,将它们投影到相同的嵌入空间$\mathbb{R}^F$ 。

    • 求和: 将所有投影后的检索结果求和 (Summation),形成最终的聚合检索特征$\sum_{p \in P} g^{(p)}(\tilde{v}^{(p)})$

  • 最终预测:

    • 将输入特征 $f(\hat{x})$ 与聚合后的检索特征进行拼接

    • 送入线性预测器 $h$  得到去偏移量的预测结果 $\hat{y}$

    $\hat{y} = h(f(\hat{x}) \oplus \sum_{p \in P} g^{(p)}(\tilde{v}^{(p)})) $

恢复偏移量与损失函数

无论是单周期还是多周期,模型都需要进行最后的处理和训练:

  • 恢复偏移量: 预测结果 $\hat{y}$ 是去偏移量的版本。模型通过将原始输入片段的最后一个值 $x^L$  加回去,来恢复到原始的数值范围,得到最终的预测 $y$

    $y = \{\hat{y}^t + x^L\}_{t=1}^F$

  • 训练损失: 模型通过最小化预测值 $y$ 与实际未来值 $y_0$ 之间的 均方误差(MSE)来训练。

    $\mathcal{L} = MSE(y, y_0)$

实验

复现

http://www.dtcms.com/a/532209.html

相关文章:

  • Vscode中选择Conda环境
  • PyCharm无法启动jupyter server问题的解决
  • 手机考勤软件哪个好?10款APP测评
  • 小游戏网站建设网络规划设计师资格证
  • 网站建设钅金手指排名十五网站做app服务端
  • Docker 拉取镜像超时问题排查与解决实录
  • 找个做游戏的视频网站好WordPress加速优化方案
  • Kafka 生产者详解(上):消息发送流程与API,分区,吞吐量与数据可靠性
  • Chrome扩展安装插件教程,Edge安装插件扩展教程,浏览器安装扩展程序方法
  • 基于Swin Transformer的糖尿病视网膜病变影像分类与诊断系统
  • 从零开始:C++ 线程池 TCP 服务器实战(续篇)
  • 免费招工人在哪个网站传奇合成版2合1雷霆版
  • AJAX家政系统同城服务多商家小程序源码
  • 《string 类模拟实现(收尾):传统与现代写法对比及底层机制探析》
  • ISCSI存储服务
  • 选择排序详解
  • 暖色网站模板wordpress 翻译 每页
  • ProcDump 学习笔记(6.9):MiniPlus 转储(-mp)——轻量却够用的现场证据
  • 特乐网站建设如何用源码搭建网站源码
  • Java 大视界 -- Java 大数据实战:分布式架构重构气象预警平台(2 小时→2 分钟)(428)
  • 洗牌算法讲解——力扣384.打乱数组
  • 芋道源码:VUE3部署:避坑--验证码不现显示,管理后台无法访问后端接口等,完善中。。。
  • 前端速通—ajax篇
  • 济南建立网站湖南建筑工程信息平台
  • android 堆栈打印
  • 太原网站优化排名北京互联网排名
  • 2025-web集群-问题总结
  • CATWIFI
  • 智能旅行助手Agent实战:前后端分离的多Agent系统
  • java基础-练习