时序相关的文章 (一)
GATGPT: A Pre-trained Large Language Model with Graph Attention Network for Spatiotemporal Imputation
数据形式
框架
Our approach integrates pre-trained large language models (LLMs) into spatiotemporal imputation, introducing a groundbreaking framework, GATGPT. This framework merges a graph attention mechanism with LLMs. We maintain most of the LLM parameters unchanged to leverage existing knowledge for learning temporal patterns, while fine-tuning the upper layers tailored to various applications. The graph attention component enhances the LLM’s ability to understand spatial relationships.
Input Embedding
Graph Attention Module
Frozen Pre-trained Blocks
GPT-ST: Generative Pre-Training of Spatio-Temporal Graph Neural Networks
数据形式
Spatio-Temporal Data \(\mathbf{X}\)
Spatio-Temporal Hypergraphs
为了帮助理解超边和节点之间的关系,我们来定义一个带有详细标注的顶点-超边连接矩阵 \(\mathbf{H}\)。
假设我们有以下节点:
- \(v_{A,8}\):A区在早上8点
- \(v_{B,8}\):B区在早上8点
- \(v_{C,8}\):C区在早上8点
- \(v_{A,9}\):A区在早上9点
- \(v_{B,9}\):B区在早上9点
- \(v_{C,9}\):C区在早上9点
超边:
- \(e_1\):连接 \(v_{A,8}\)、\(v_{B,8}\) 和 \(v_{C,8}\)
- \(e_2\):连接 \(v_{A,9}\) 和 \(v_{B,9}\)
我们可以构建一个带有标注的矩阵:
解释
- 行表示节点 \(v_{A,8}\) 到 \(v_{C,9}\),代表不同区域在不同时间点的数据。
- 列表示超边 \(e_1\) 和 \(e_2\),用来连接多个节点。
- 矩阵中的 "1" 表示某个节点被某条超边连接。例如:
- 第一行中 \(v_{A,8}\) 和 \(e_1\) 连接,因此位置为 1。
- 第四行中 \(v_{A,9}\) 和 \(e_2\) 连接,因此位置为 1。
这样标注之后,可以清晰地看到超边和节点的连接关系。通过这种方式,超图可以同时捕捉多个节点之间的复杂关系,而不仅仅是两两节点的关系。
框架
- We propose a spatio-temporal mask autoencoder as a pre-training model for learning spatio-temporal dependencies. The model incorporates customized parameter learners and hierarchical spatial pattern encoding networks. These modules are specifically designed to capture spatio-temporal customized representations and intra- and inter-cluster region semantic relationships, which have often been neglected in existing approaches.
- We introduce an adaptive mask strategy as part of the pre-training mechanism. This strategy guides the mask autoencoder in learning robust spatio-temporal representations and facilitates the modeling of different relationships, ranging from intra-cluster to inter-cluster, in an easy-to-hard training manner.
Spatio-Temporal Pre-training Paradigm
Pretrain时间序列的编码器(利用mask的数据)。在下游任务的时候,先对时间进行编码。
这里的 \(g\) 表示的是下游任务的训练。
以下是具体的训练框架
Customized Temporal Pattern Encoding
- 初始化时间embedding
1. Initial Embedding Layer
在进行时空数据编码时,首先构建一个初始嵌入层。具体流程如下:
- 数据归一化: 原始的时空数据 \(\mathbf{X}\) 通过 Z-Score 方法进行归一化。这可以确保数据在不同时间和空间维度上具有可比性。
- 掩码操作: 归一化后的数据经过掩码处理。这意味着在预训练或特定任务中,有选择地隐藏一些输入数据,用来模拟缺失值或鼓励模型在部分缺失数据的情况下进行推断。
- 线性变换: 接着,应用一个线性变换来增强数据表示:\[\mathbf{E}_{r,t} = \mathbf{M}_{r,t} \odot \hat{\mathbf{X}}_{r,t} \cdot \mathbf{E}_0 \]
- 这里,\(\mathbf{E}_{r,t}\) 是表示区域 \(r\) 在时间 \(t\) 的嵌入。
- \(\mathbf{M}_{r,t}\) 是一个掩码矩阵,表示哪些数据可见。
- \(\hat{\mathbf{X}}_{r,t}\) 是归一化后的时空数据。
- \(\mathbf{E}_0 \in \mathbb{R}^{F \times d}\) 是初始的嵌入向量矩阵,\(F\) 表示特征的数量,\(d\) 是隐藏单元的维度。
通过这种方式,初始嵌入层可以在输入数据的基础上进行增强,生成更具代表性的嵌入。
2. Temporal Hypergraph Neural Network
为了学习时空关系,该方法使用了超图神经网络进行编码。核心公式如下:
解释:
- 超图传播 (HyperPropagate): 通过超图神经网络模型,将初始嵌入 \(\mathbf{E}_r\) 转换成中间嵌入 \(\mathbf{\tilde{E}}_r\)。
- 最终嵌入 \(\mathbf{\Gamma}_t\): 将中间嵌入和时间特定的参数 \(\mathbf{W}_t, \mathbf{b}_t\) 结合,使用激活函数 \(\sigma\) 得到。
这些参数(例如 \(\mathbf{H}_r, \mathbf{W}_t, \mathbf{b}_t\))都可以动态地调整,以捕捉到不同时间点上区域间的复杂关系。而这些参数的动态生成过程由下一部分的自定义参数学习器提供。
3. Customized Parameter Learner
该模块的核心目的是实现自定义参数学习,特别是为不同的区域和时间段生成独特的模型参数。这些参数直接服务于第2点的超图神经网络,用于调整其超图传播过程,从而实现对不同区域和时间的精细化建模。
公式解读:
- \(\hat{\mathbf{H}}, \hat{\mathbf{W}}, \hat{\mathbf{b}}\):独立的基础参数。这些参数通过自定义学习器进行调整,以生成适合特定时间和区域的参数。
- \(\mathbf{c}_r, \mathbf{d}_t\):分别表示区域 \(r\) 和时间 \(t\) 的特征表示。
- \(\mathbf{c}_r\) 是区域的自由参数,可以根据不同的区域调节超图参数 \(\mathbf{H}_r\),确保在超图传播过程中,能够捕捉到区域特定的关系。
- \(\mathbf{d}_t\) 通过时间的特征 \(\bar{\mathbf{z}}_t^{(d)}\)(表示一天中的特定时间,如上午或下午)和 \(\bar{\mathbf{z}}_t^{(w)}\)(表示一周中的特定时间,如工作日或周末)生成,用于调节时间特定的参数 \(\mathbf{W}_t\) 和 \(\mathbf{b}_t\),从而反映时间变化对模型的影响。
总结:
在“Customized Temporal Pattern Encoding”这一框架中,第3点的自定义参数学习器直接为第2点的超图神经网络提供服务。通过生成自适应的参数 \(\mathbf{H}_r, \mathbf{W}_t, \mathbf{b}_t\),使得超图神经网络能够根据不同的区域和时间段动态地调整传播过程,精准捕捉时空数据中的复杂关系。这种方法允许模型自动学习并适应时空数据中的变化模式,更好地进行分析和预测。
4.2 Hierarchical Spatial Pattern Encoding
4.2.1 Hypergraph Capsule Clustering Network
当前的空间编码主要专注于捕捉局部相邻区域间的关系,但忽略了不同区域之间的广泛相似性。这些区域即使在地理上相距较远,也可能表现出相似的时空模式。例如,商业区即使地理位置分散,也会表现出相似的时空特性。因此,GPT-ST 引入了一种超图胶囊聚类网络来捕捉全局区域间的相似性。该网络将多个区域聚类中心作为超图边,这些边表征了区域间的全局相似性。
为了进一步增强超图结构学习,我们引入了胶囊网络的动态路由机制。这种机制通过迭代更新超图表示和区域-超图连接,根据语义相似性改进聚类效果,从而增强了区域间依赖关系的全局建模能力。
具体来说,首先我们获取区域 \(r\) 在时间 \(t\) 的归一化区域嵌入 \(\mathbf{v}_{r,t} \in \mathbb{R}^d\),使用先前的嵌入 \(\mathbf{\Gamma}_{r,t}\) 和 squash 函数计算。然后,这个嵌入被用来计算从区域 \(r\) 到每个超图聚类中心 \(i\) 的传递信息 \(\mathbf{\tilde{v}}_{i|r,t} \in \mathbb{R}^d\),在时间槽 \(t\) 内的具体公式如下:
其中:
- \(\mathbf{V} \in \mathbb{R}^{d \times d}\) 和 \(\mathbf{c} \in \mathbb{R}^d\) 是自由可学习的参数。
- 超图连接矩阵 \(\mathbf{H}_{i}^{\prime} \in \mathbb{R}^{H_S \times R}\) 记录了 \(R\) 个区域和 \(H_S\) 个超图边之间的关系,用作聚类中心。
- 该矩阵是基于之前的自定义参数学习器,使用如下公式进行动态调整:\[\mathbf{H}_{i}^{\prime} = \text{softmax}(\mathbf{d}_t^{\top} \mathbf{\hat{H}}) \]这里,\(\mathbf{d}_t\) 和 \(\mathbf{\hat{H}}\) 是时间特征和超图嵌入。
迭代超图结构学习。通过初始化区域嵌入 \(\mathbf{v}_{r,t}\) 和超图连接嵌入 \(\mathbf{\tilde{v}}_{i|r,t}\),采用胶囊网络的动态路由算法来迭代增强超图的聚类效果。第 \(j\) 轮迭代的公式如下:
- \(s_{i,t}^j \in \mathbb{R}^d\) 表示第 \(j\) 次迭代的超图嵌入。
- 权重 \(c_{i|r,t}^{j} \in \mathbb{R}\) 是基于上一轮超图嵌入和传递信息计算得到的。
- 最后,动态更新 \(b_{i|r,t}^{j}\) 使得聚类效果逐渐得到优化。
4.2.2 Cross-Cluster Relation Learning
通过聚类嵌入 \(\mathbf{s}_{i,t}\),我们提出在高层次超图神经网络中建模聚类之间的相互关系。具体来说,使用以下公式来通过高层超图从各个超图聚类中心和 \(H_M\) 个高层超图边之间进行消息传递:
- 其中 \(\mathbf{\hat{S}} \in \mathbb{R}^{H_S \times d}\) 是从 \(\mathbf{s}_{i,t}\) 重整后的嵌入矩阵。
- \(\mathbf{H}^{\prime\prime} \in \mathbb{R}^{H_M \times H_S T}\) 表示高层超图结构。
在调整后的聚类表示 \(\hat{\mathbf{s}}_{i,t}\) 之后,我们将聚类嵌入反向传递给低层超图结构:
- 这里 \(\mathbf{\Psi}_{r,t}\) 是新的区域嵌入。
- 自定义参数学习器生成的 \(\mathbf{W}_{r}^{\prime}\) 和 \(\mathbf{b}_{r}^{\prime}\) 是低层超图的区域特异性变换和偏差参数。
Squash 函数
squash
函数是一种非线性激活函数,主要用于胶囊网络。其目的是将输入向量的长度限制在 \((0,1]\) 的范围内,同时保持向量的方向。这种操作能够有效地规范向量的长度,使得模型在处理特征时,能够更稳定地聚焦在特征方向,而不会因为特征值的大小而产生波动。
squash
函数的数学表达式为:
其中:
- \(\mathbf{x}\) 是输入向量。
- \(\|\mathbf{x}\|\) 表示向量的欧氏范数(即长度)。
函数解释
- 向量长度调整:
squash
函数通过 \(\frac{\|\mathbf{x}\|^2}{1 + \|\mathbf{x}\|^2}\) 这一项,将输入向量的长度缩放到 \((0,1]\)。当 \(\|\mathbf{x}\|\) 较大时,输出的长度会趋近于 \(1\);当 \(\|\mathbf{x}\|\) 较小时,输出的长度会接近于 \(\|\mathbf{x}\|\)。 - 保持方向:由于最后的 \(\frac{\mathbf{x}}{\|\mathbf{x}\|}\),输入向量的方向得以保持。这意味着向量的方向信息不受缩放的影响,确保特征的方向性不变。
应用场景
在胶囊网络和超图神经网络中,squash
函数被用来规范向量的表示,使得模型在特征传递时能够更有效地利用方向信息,同时将特征长度控制在一个合理的范围内。这种设计能够帮助模型更好地进行聚类和分类任务。
4.3 Cluster-aware Masking Mechanism
受语义引导的 MAE 启发,GPT-ST 设计了一种基于聚类的掩码机制来增强聚类间和聚类内部的关系学习。这种机制根据之前的聚类信息 \(c_{i|r,t}\) 设计,来创建一种易于学习的掩码过程。具体实现方法如下:
- 在训练的开始,我们随机掩盖每个聚类中的一部分区域。
- 随着训练进行,对某些类别逐渐增加掩码比例,以减少对特定特征的依赖。
- 最终完全掩盖一些类别的信号,从而减少模型依赖,增强跨聚类的学习能力。
直接使用 \(c_{i|r,t}\) 生成掩码是不现实的,因此引入了基于自定义参数学习器的两层 MLP 网络进行调整,最终预测结果 \(\mathbf{q}_{i,t}\) 用于优化分布。通过 KL 散度损失 \(L_{KL}\) 来最小化预测和真实聚类信息的差异。
意义的解读
可以的,让我来详细解释一下这个超图结构在时空数据中的应用,并结合一个例子来帮助你理解。
超图编码在时空数据中的作用
在时空数据分析中,我们需要处理大量具有空间和时间维度的多维数据。例如,监测城市中各个区域的交通流量、空气质量、温度等。这些数据不仅仅受单个区域或单一时间点的影响,还会因为区域之间的相互关系和时间的变化而相互影响。如何有效地建模这些复杂的关系是时空数据分析的一个关键问题。
传统的图神经网络可以很好地捕捉到局部邻居之间的相互影响,但它们在处理更广泛的全局关系(例如,城市的几个不同区域在相距较远的情况下依然有相似的时空模式)时,就变得不够有效。而超图的引入能够解决这一问题。
什么是超图?
- 在普通的图结构中,一条边只连接两个节点。而在超图中,一条“超边”可以连接多个节点,这样能够直接表示多个区域之间的相互关系。例如,如果某些区域在某个时间段表现出相似的交通模式(比如通勤高峰),超图就能把这些区域连接起来,作为一个超边。
- 通过这种方式,超图能够将普通的点对点连接扩展到一个点对多个点的关系,增强模型捕捉全局相似性和复杂模式的能力。
超图在时空数据中的应用举例
假设我们要分析一个城市的交通流量数据。我们有以下几个区域(A、B、C、D、E、F),并且想在不同的时间段(比如工作日和周末,早高峰和晚高峰)下,捕捉这些区域之间的交通流量模式。
-
普通图结构的限制:
- 假设我们只使用普通的图神经网络来表示这些区域之间的相互关系。可能只能捕捉到区域 A 和它直接相邻的 B、C 之间的交通流量关系。这样就只能建模局部邻居的关系。
-
超图如何增强建模:
- 通过超图,我们可以把在某个特定时间段(比如周一早高峰)下,有相似交通流量模式的区域用一个“超边”连接起来。
- 比如,如果区域 A、D、E 在早高峰都有大量的通勤流量,而 B 和 C 较少,那么我们可以把 A、D、E 这三个区域用一条超边连接,表示它们之间的相似性。
- 这样做的好处是,即便 A、D、E 之间在地理位置上并不相邻,超图也能够通过这种方式捕捉到它们在特定时间段下的相似模式。
-
动态时空关系的建模:
- 在不同的时间段,超图的结构也可以动态调整。例如,在周末,区域 B、C 和 F 的某些活动更密集,超图就会调整超边的连接,将这些区域连在一起,形成另一种相似模式。
- 这种动态调整是通过自定义参数学习器完成的,会根据时空数据的变化自动调整超边和节点的连接权重,从而捕捉到复杂的时空关系。
超图在公式中的体现
-
超边连接表示:
- 在公式中,\(\mathbf{H}^{\prime}\) 作为超图的连接矩阵,可以表示区域和超图边之间的连接关系。超图边的调整通过自定义学习器控制的动态路由完成,从而根据不同时段的相似性调整连接。
-
信息传递:
- 在时空数据中,使用 \(\text{HyperPropagate}\) 来进行信息传播。例如,城市不同区域的交通流量信息会在这些相似模式的区域中传播,形成一种“全局特征”的聚类,而不仅仅是局部的相邻关系。
结合squash函数的使用
squash
函数在这种超图模型中主要用于将节点的表示进行归一化和调整,确保每个节点的信息不会在信息传递过程中因为过大或者过小的特征而丢失。
总结
通过超图和胶囊网络的结合,模型能够自动将时空数据中的复杂全局模式进行编码,不仅能够捕捉到局部的邻居关系,还可以学习到不同区域在某些特定时间下的全局相似性。这种模型在分析和预测时空模式(例如交通流量、天气变化、空气污染分布等)时非常有效,因为它能够自动将分散的节点(区域)连接成有意义的整体,从而提升预测和分析的准确性。
是的,你的理解非常准确。我们可以总结如下:
普通图 vs. 超图
-
普通图的关系:
- 主要基于空间上的邻近关系,也就是说,如果两个节点(例如,两个城市区域)在地理位置上相邻,普通图会把它们连接起来。
- 这种方式适合建模局部的相互影响,比如相邻区域之间的交通流量、天气状况等。
-
超图的关系:
- 除了考虑空间上的邻近性外,超图还能够根据特定时间段的相似性进行连接。例如,尽管两个区域在地理上不相邻,但如果它们在同一时间段(比如早高峰、周末)有相似的流量模式,超图可以用“超边”将它们连接在一起。
- 这种连接方式更灵活,可以捕捉到跨越空间和时间的复杂关系,帮助模型了解哪些区域在不同时间段内表现出相似的时空模式。
超图的更新机制
关于超图的更新,你的理解也是正确的。超图的更新过程通常是针对单独一个时间节点进行的。具体地讲:
-
时间特定的超图更新:
- 在模型中,超图会根据特定的时间点(例如一个小时、一段时间段或一天内的某个时刻)进行动态更新。这个时间点的选择取决于数据的粒度和应用场景。
- 例如,在早高峰时段,超图会调整连接关系,将那些在早上通勤高峰流量相似的区域用“超边”连接起来;而到了晚上,超图可能会重新调整连接,反映出晚高峰或夜间的相似模式。
-
动态调整的机制:
- 这种调整不是预定义的,而是通过模型的自定义参数学习器来自动完成的。自定义参数学习器会根据时间和区域的特征调整连接权重,从而动态地更新超图。
- 例如,参数学习器可能会通过分析一天中各个时间段的区域特征,生成不同时间特定的参数 \(W_t\) 和 \(b_t\),进而调整每个时间节点的超图结构。
总结
你可以将超图视为一种增强版的图,不仅表示空间上的直接邻居关系,还可以表达时间上的相似性关系。而超图的更新机制则是动态的、时间敏感的,针对每一个时间节点,根据时空数据自动调整超图的连接结构。这种灵活性使得模型能够捕捉到复杂的时空模式,从而更好地进行分析和预测。
第3条公式和第6条公式的区别
是的,你的理解非常到位,可以这么说:
第 3 条公式:邻接矩阵(超图结构)在网络层间保持不变
在第 3 条公式中:
- 邻接矩阵(超图连接矩阵) \(\mathbf{H}_r\) 在模型的不同层中保持不变。
- 具体来说,如果你有 3 层的超图神经网络,每一层都会使用相同的超图连接矩阵 \(\mathbf{H}_r\) 来进行信息传递和卷积操作。
- 这种结构类似于传统的图神经网络(GCN),其中邻接矩阵通常在不同的网络层间是固定的,只是在每一层进行不同的特征更新。
第 6 条公式:迭代优化中动态调整连接关系
在第 6 条公式中:
- 连接权重 \(c_{i|r,t}^{j}\) 是动态变化的,这意味着在每一轮迭代中,这些连接关系都会根据输入数据和当前的优化状态进行调整。
- 在迭代的每一轮中,\(b_{i|r,t}^j\) 会不断更新,从而影响到 \(c_{i|r,t}^j\) 的计算,最终使得 \(s_{i,t}^j\) 逐渐收敛到更稳定的聚类表示。
- 由于这是一个迭代优化过程,连接关系会在每一轮的迭代中动态变化,而不是在每层网络间保持不变。
小结:第 3 条和第 6 条公式的邻接矩阵(连接关系)是否变化
-
第 3 条公式:邻接矩阵不变
- 在多层网络中,超图的结构 \(\mathbf{H}_r\) 是固定的,不会随着网络层数变化。它根据区域特征和时间特征动态生成,但在某一时刻或时间段内会保持固定,贯穿所有网络层。
- 这意味着,假设有 3 层的超图神经网络,每一层都会使用相同的 \(\mathbf{H}_r\) 进行信息传递。
-
第 6 条公式:连接关系动态变化
- 在第 6 条公式中,连接关系(即 \(c_{i|r,t}^{j}\))是基于动态迭代优化的,每一轮迭代中都会根据节点的相似性和之前的结果进行更新。
- 这种动态调整使得模型能够在每一轮迭代中逐步增强对节点相似性的捕捉,最终找到更加稳定的连接模式。这意味着,连接关系并不固定,而是在迭代过程中不断变化和优化。
结论
- 第 3 条公式:超图的结构在网络层间固定,即便有多层网络,邻接矩阵不会变化。这种设计适合全局时空信息的聚合。
- 第 6 条公式:连接关系在迭代优化过程中动态调整,这使得模型能够灵活适应特定时段内的动态相似性,适合更精细的动态聚类任务。
你可以把第 3 条公式理解为一种静态的全局信息整合,而第 6 条公式则是动态的局部优化过程。这种设计使得整个模型既能捕捉到稳定的全局时空模式,也能动态适应局部的相似性变化。
LANGUAGE MODEL EMPOWERED SPATIO-TEMPORAL FORECASTING VIA PHYSICS-AWARE REPROGRAMMING
数据格式
框架
Specifically, we first propose a physics-aware decomposer that adaptively disentangles spatially correlated time series into interpretable sub-components, which facilitates PLM to understand sophisticated spatio-temporal dynamics via a divide-and-conquer strategy. Moreover, we propose a selective discrete reprogramming scheme, which introduces an expanded spatio-temporal vocabulary space to project spatio-temporal series into discrete representations. This scheme minimizes the information loss during reprogramming and enriches the representations derived by PLMs.
按照之前的笔记结构,我将重新整理并解读图片中的公式内容。
3.1 Physics-Aware Evolutional Spatio-Temporal Decomposition
公式 (2) 和公式 (3) 的解读
公式 (2):动力学系统的分解表示
-
解释:
- \(\mathbf{X}_{\text{dyn}}\) 是从复杂的时空数据中提取出的动力学系统表示。这个公式表示,通过动态模式分解(Dynamic Mode Decomposition, DMD)技术,将复杂的时空信号分解成若干个时空模式。
- 其中,\(\omega_i\) 表示系统的特征频率(模式),\(\mathbf{v}_i\) 是对应的特征向量(空间模式),\(\epsilon_i\) 是基于观测得到的系数,用来调节每个模式的强度。
- \(e^{\omega_i t_i}\) 反映了时间上的动态变化,是一种指数形式的演变,表明时空数据中信号的变化特征。
- 通过将原始的复杂信号分解为若干个可以理解的物理模式,模型可以更好地解耦和理解系统的演变规律,从而在物理意义上得到更易解释的结果。
-
主要目标:
- 通过模式分解,将复杂的时空数据分解成可以解释的动力学信号。这些模式能够帮助识别和解耦数据中的动态模式,从而更好地理解和预测时空系统的行为。
公式 (3):基于主要模式的重构
-
解释:
- \(\mathbf{X}_{\text{rec}}\) 是对系统的主要动力学模式进行的重构表示。通过挑选出一组最重要的模式(\(i \in \alpha\)),模型能够在去除噪声的情况下对原始信号进行重构。
- \(\alpha\) 是一个模式的索引集,表示挑选出对系统演变最关键的模式。通过选择贡献最大的模式,这种方式能够减少噪声并增强信号的可解释性。
- 这种重构策略类似于提取信号中的主要成分,从而确保保留系统中的关键动态特征,同时去除不相关的或次要的信号。
-
主要目标:
- 通过模式筛选和重构,只保留对系统演变最关键的模式。这有助于在降噪的同时,提高模型对时空数据的预测能力。
公式之间的关系总结
- 公式 (2):是将原始时空信号分解为若干个动力学模式,每个模式都反映了特定的物理动态。这些模式的分解能够帮助更好地理解时空信号的内部规律。
- 公式 (3):通过重构,模型只保留对系统影响最大的模式,从而去除噪声和不必要的细节,使得系统的重构更加平滑且具有物理可解释性。
3.2 Enhancing Decoupled Signals with Patching Strategy
Patch-based输入构建
为了增强解耦后的信号信息密度,模型采用了基于补丁(patching)的策略,将信号分解为一系列的片段,并进一步作为输入特征进行编码。使用这种方式,模型可以更加细致地捕捉到时空数据中的细节特征。
- 操作步骤:
- 将解耦后的信号 \(\mathbf{X}_{\text{dec}} = \mathbf{X}_{\text{rec}} \parallel \mathbf{X}_{\text{dyn}}\) 切分成多个无重叠的补丁:\[\mathbf{X}_{\text{dec}}^{P} \in \mathbb{R}^{N \times P \times L_P \times (C+1)} \]
- 其中,\(P = \left\lceil \frac{T}{T_P} \right\rceil + 1\) 表示切分后的补丁数量,\(T_P\) 是每个补丁的长度,\(L_P\) 是每个时间点的特征数。
- 接着,将这些补丁输入到卷积网络 \(\text{Conv}(\cdot)\) 中,生成嵌入表示:\[\mathbf{X}_{\text{enc}} = \text{Conv}(\mathbf{X}_{\text{dec}}^{P}, \theta_p) \in \mathbb{R}^{N \times P \times D} \]其中,\(N\) 表示节点数量,\(D\) 是嵌入的维度。
- 将解耦后的信号 \(\mathbf{X}_{\text{dec}} = \mathbf{X}_{\text{rec}} \parallel \mathbf{X}_{\text{dyn}}\) 切分成多个无重叠的补丁:
总结
通过上面的分解和重构以及补丁策略,模型能够将复杂的时空数据分解成更细致、更可解释的物理模式,并能够高效编码时空特征,生成更丰富的信息表示。希望这些公式的解读能够帮助你理解这个模型的工作机制。
根据图片中的内容,我将继续按照之前的笔记格式整理并解读这些公式和相关内容。
3.2 Selective Reprogrammed Language Models
公式 (4) 和公式 (5) 的解读
公式 (4):Gumbel-Softmax for Reprogramming Word Selection
- 解释:
- 公式 (4) 描述了使用Gumbel-Softmax的策略进行词选择的过程,这是一种可微的重新参数化方法,可以在保持语义不变的情况下,选择与时空数据表示最相关的词语。
- \(\mathbf{m}\) 是一个可学习的词选择掩码向量,通过学习调整词的选择权重。\(\mathbf{m}[i]\) 取值在 \([0, 1]\) 之间,表示对词 \(i\) 的选择概率。
- Gumbel-Softmax:由于词的选择是一个离散过程,为了使得这一过程可微,公式引入了 Gumbel-Softmax 方法,通过引入随机变量 \(g_i\) 来进行重新参数化。\(\tau\) 是温度参数,用来控制输出的平滑程度。
- 目的是:能够在训练过程中对词的选择进行优化,从而构建一个扩展的词汇表,使得模型可以根据时空模式自动选择合适的词汇进行再编程,提升语言模型处理时空数据的能力。
公式 (5):Reprogrammed Patch-Based Embeddings with Cross-Attention
- 解释:
- 公式 (5) 描述了一个跨模态对齐的过程,具体通过交叉注意力(cross-attention)来实现,将时空数据的嵌入与语言模型的词向量进行对齐。
- \(\mathbf{X_q}\)、\(\mathbf{X_k}\)、\(\mathbf{X_v}\) 分别表示查询矩阵、键矩阵和值矩阵:其中 \(\mathbf{X_q}\) 由时空数据补丁的嵌入生成,\(\mathbf{X_k}\) 和 \(\mathbf{X_v}\) 则由重新编程后的词嵌入生成。
- Softmax 权重控制着信息从语言模型到时空补丁的传递,从而将这两者结合起来生成新的嵌入 \(\mathbf{Z}\)。
- 主要目的是:使得物理信息丰富的时空嵌入能够与语言模型的词汇表结合,从而将语言模型的推理能力引入到时空数据的分析和处理中。
公式 (4) 和公式 (5) 的关系总结
- 公式 (4) 负责选择合适的词嵌入,利用 Gumbel-Softmax 方法,使得模型能够根据时空数据模式自动调整语言模型的词选择,从而实现更加精准的语义表达。
- 公式 (5) 负责跨模态的嵌入对齐,通过交叉注意力机制,将时空数据补丁的嵌入与重新编程后的词嵌入结合,最终得到更有效的多模态嵌入表示。
3.3 RePST: Predicting Future States with Reprogrammed Evolutional Spatio-Temporal Models
公式 (6)、(7) 和模型优化
公式 (6):Evolutionary-Decomposition(物理感知的时空分解)
- 解释:
- 该公式表示将输入的时空数据 \(\mathbf{X}\) 进行物理感知的时空分解,得到一个新的表示 \(\mathbf{Z}\)。这一步是利用前面提到的分解技术,将复杂的时空信号分离成可解释的物理模式。
- 核心思想是通过 DMD 等技术,将时空数据分解成若干个独立的动态模式,从而更好地解耦和分析系统的演变规律。
公式 (7):Reprogrammed Language Model
- 解释:
- 这一步利用公式 (4) 和公式 (5) 生成的语言模型嵌入 \(\mathbf{E}\),对物理分解得到的 \(\mathbf{Z}\) 进行重新编程,从而生成一个融合了语言模型语义信息的多模态表示 \(\mathbf{Z}_{\text{text}}\)。
- 通过这种方法,模型能够在处理时空数据时利用语言模型的推理能力,从而增强对物理模式的理解。
公式 (6) 和 (7) 的关系总结
- 公式 (6) 先通过物理感知的分解方法,将时空数据分解成多个可解释的模式表示。
- 公式 (7) 然后利用重新编程的语言模型,将这些模式表示转化为能够被语言模型理解的嵌入,融合语言和时空特征。
公式 (8):完整的预测过程
- 解释:
- 最终的预测通过一个投影层 \(\text{Projection}\) 实现,利用重新编程语言模型生成的多模态嵌入 \(\mathbf{Z}_{\text{text}}\) 进行预测,得到未来的时空状态 \(\hat{\mathbf{Y}}\)。
- 这一过程结合了物理感知的分解和语言模型的推理能力,使得模型能够在复杂时空数据的预测任务中表现出色。
优化和可扩展性
- 损失函数:模型通过最小化均方误差 (MAE) 来优化,目标是使得预测的 \(\hat{\mathbf{Y}}\) 与真实值 \(\mathbf{Y}\) 之间的误差最小。
- 可扩展性:通过将时空图划分成多个子图,模型能够高效地在更大规模的数据集上进行训练。
总结
- Selective Reprogrammed Language Models:通过公式 (4) 和 (5),实现了时空嵌入与语言模型词汇表的多模态对齐。
- RePST 综合流程:通过公式 (6) 和 (7) 对时空数据进行物理感知分解和语言模型重新编程,最终利用公式 (8) 进行预测。
- 优化与可扩展性:模型能够高效优化,同时支持大规模数据的训练和推理。
更通俗的理解
从 REPST 的描述来看,以下是对“字典”和“注意力机制中的 Q, K, V”的解释:
字典是如何构建的?
REPST 中的“字典”并不是传统的自然语言词汇,而是由预训练语言模型(PLM)词嵌入和选择性重新编程机制生成的。这是通过以下步骤完成的:
-
预训练词汇表 (\(\mathbf{E} \in \mathbb{R}^{V \times d}\)):这里,\(\mathbf{E}\) 是从 PLM 提取的嵌入,\(V\) 表示词汇的大小,\(d\) 是嵌入的维度。这些嵌入表示预训练语言模型中已有的词汇,模型会从中选择适合时空模式的词汇。
-
选择性重新编程 (\(\mathbf{m}\)):使用一个可学习的掩码向量 \(\mathbf{m}\) 选择与时空数据最相关的词汇。这是通过线性层和 Softmax 操作生成的。为了让这个选择过程更灵活,使用了 Gumbel-Softmax 技术,将离散的选择过程转化为一个连续的可微过程,从而在模型训练时进行优化。
-
扩展时空词汇表:在进行重新编程时,模型会根据 \(\mathbf{m}\) 选择出“最相关的”词嵌入,从而构建一个扩展的时空词汇表。这些嵌入代表了经过筛选后最能表达时空模式的信息。
这种机制与传统字典不同,目的是利用 PLM 中已有的语义能力,将复杂的时空模式映射到可以理解和处理的语言表示中。
注意力机制中的 Q, K, V 是怎么构建的?
在 REPST 中,注意力机制被用来对齐来自时空数据和重新编程语言模型的表示。这一步帮助模型将不同模态的特征结合起来:
-
查询 (Query, \(\mathbf{Q}\)):
- 查询矩阵 \(\mathbf{X_q}\) 是从时空数据生成的。具体来说,\(\mathbf{X_q} = \mathbf{X_{\text{enc}}}\mathbf{W_q}\),其中 \(\mathbf{X_{\text{enc}}}\) 表示时空数据经过补丁和卷积编码后的表示,\(\mathbf{W_q}\) 是可学习的投影矩阵。
- 这种方式让模型根据时空数据中的模式进行查询,寻找与之相关的词汇表示。
-
键 (Key, \(\mathbf{K}\)) 和 值 (Value, \(\mathbf{V}\)):
- 键矩阵和值矩阵 (\(\mathbf{X_k}, \mathbf{X_v}\)) 都是从重新编程后的词嵌入生成的,即 \(\mathbf{X_k} = \mathbf{E'}\mathbf{W_k}\) 和 \(\mathbf{X_v} = \mathbf{E'}\mathbf{W_v}\),其中 \(\mathbf{E'}\) 是从扩展的词汇表中选择出来的嵌入。
- 键和值分别代表了词汇的特征和对应的实际信息,通过与查询矩阵进行匹配,模型能够找到哪些词嵌入与当前时空模式最相关。
-
交叉注意力机制:
- 注意力机制通过计算 \(\text{Softmax}(\frac{\mathbf{X_q} \mathbf{X_k}^\top}{\sqrt{d}}) \mathbf{X_v}\) 来生成对齐的表示 \(\mathbf{Z}\)。
- 这样一来,时空数据的嵌入会通过查询矩阵 \(\mathbf{Q}\) 搜索到与其匹配的键矩阵 \(\mathbf{K}\),并从值矩阵 \(\mathbf{V}\) 中提取出相应的信息。这就像在问答系统中,提出问题(查询),找到相关的知识(键),并得到答案(值)。
总结
- 字典构建:通过 PLM 中已有的词汇表和可学习的掩码进行选择性重新编程,生成一个扩展的时空词汇表。这些词汇表嵌入与时空数据中的模式相对应。
- 注意力机制:通过时空数据的查询矩阵与重新编程的词汇嵌入(键和值)的交叉注意力机制,将多模态的信息有效对齐。
这种设计允许 REPST 有效利用 PLM 的语义理解能力,从而在处理复杂的时空模式时更加精准和高效。
拓展知识
好的,我来详细解释 Gumbel-Softmax 技术,并通过一个例子帮助你理解。
什么是 Gumbel-Softmax?
在机器学习中,我们经常需要从一个离散的选项中进行选择,例如在语言模型中选择一个词,或者在图像分类中选择一个类别。这种选择本质上是离散的,无法直接通过梯度下降进行优化,因为离散操作不可微分。
Gumbel-Softmax 提供了一种方法,使得模型在进行训练时能够“模拟”离散选择的过程,同时保留梯度信息,从而实现可微分的优化。这是通过引入Gumbel 分布和Softmax 函数结合实现的。
举个例子:选择一个词
假设我们有一个简单的任务:从三个词中选择一个最相关的词(例如“冷”、“热”、“温暖”)。在传统的机器学习模型中,我们可能会用one-hot 向量来表示这种选择,例如:
- 选择“冷”:\([1, 0, 0]\)
- 选择“热”:\([0, 1, 0]\)
- 选择“温暖”:\([0, 0, 1]\)
然而,这种选择是离散的,在训练模型时无法直接优化。我们需要一种方法,将这个离散的选择过程转化为一个连续的过程,使其可以通过梯度下降进行优化。
Gumbel-Softmax 如何工作?
-
引入 Gumbel 分布:
- 为了模拟随机选择的过程,Gumbel-Softmax 引入了Gumbel 分布,一种用来模拟极值的概率分布。简单理解,它是一种加噪的方法。
- 我们用 Gumbel 分布生成一个随机变量,用来扰动(perturb)每个选项的 logits 分数,使得在选择时能够进行随机化。
-
Softmax 平滑:
- 我们将被扰动的 logits 分数输入到 Softmax 函数中,通过控制温度参数 \(\tau\),让输出变得连续可微。温度参数决定了输出的“平滑”程度,当 \(\tau\) 很小时,输出会接近于 one-hot 向量;当 \(\tau\) 较大时,输出会更加平滑。
- 通过调节温度参数 \(\tau\),我们能够在训练过程中得到接近 one-hot 选择的输出,同时保留梯度信息。
数学公式
Gumbel-Softmax 技术的数学公式如下:
- \(\mathbf{m}[i]\):表示选择每个词的概率分数(logits)。
- \(g_i\):从 Gumbel 分布中采样的随机变量,用来加噪。
- \(\tau\):温度参数,用来控制输出的平滑度。
举个具体例子
假设我们要从三个词中选择一个,“冷”、“热”、“温暖”,并且模型输出的 logits 为:
- “冷”:\(2.0\)
- “热”:\(1.0\)
- “温暖”:\(0.5\)
传统的离散选择:我们直接选择得分最高的“冷”,然后使用 one-hot 向量表示。
使用 Gumbel-Softmax:
-
对每个 logits 添加从 Gumbel 分布中采样的随机噪声 \(g_i\):
- 假设我们从 Gumbel 分布中得到了 \(g_{\text{冷}} = 0.1\),\(g_{\text{热}} = -0.2\),\(g_{\text{温暖}} = 0.3\)。
- 经过扰动后的 logits:
- “冷”:\(2.0 + 0.1 = 2.1\)
- “热”:\(1.0 - 0.2 = 0.8\)
- “温暖”:\(0.5 + 0.3 = 0.8\)
-
使用 Softmax 和温度参数 \(\tau\) 对这些 logits 进行平滑处理:
- 假设 \(\tau = 0.5\)(较小的值,接近 one-hot 输出),计算得到:
- \(\mathbf{m'}[\text{冷}] = \frac{\exp(2.1/0.5)}{\exp(2.1/0.5) + \exp(0.8/0.5) + \exp(0.8/0.5)}\)
- \(\mathbf{m'}[\text{热}] = \frac{\exp(0.8/0.5)}{\exp(2.1/0.5) + \exp(0.8/0.5) + \exp(0.8/0.5)}\)
- \(\mathbf{m'}[\text{温暖}] = \frac{\exp(0.8/0.5)}{\exp(2.1/0.5) + \exp(0.8/0.5) + \exp(0.8/0.5)}\)
- 假设 \(\tau = 0.5\)(较小的值,接近 one-hot 输出),计算得到:
这样我们得到的 \(\mathbf{m'}\) 是一个平滑的、连续的向量,类似于 \([0.85, 0.075, 0.075]\),表示大多数概率分配给了“冷”,但“热”和“温暖”也有一点概率。
总结
- Gumbel-Softmax 的关键:在训练过程中,通过加入随机噪声并进行平滑处理,使得离散的选择过程变得连续可微。这意味着模型可以在训练时对这个选择进行优化,而不仅仅是固定地选择一个输出。
- 在 REPST 中的应用:通过 Gumbel-Softmax,可以从 PLM 的词汇嵌入中动态选择与时空模式相关的词汇嵌入,从而实现更加灵活和智能的多模态融合。
Gumbel-Softmax 让模型能够在优化时对这些选择的词汇进行调整和微调,而不是只能用固定的离散选择。这种柔性选择使得模型在应对不同时空数据时,能够自动选择最合适的表示。
Spatial Structure-Aware Road Network Embedding via Graph Contrastive Learning
输入数据格式
在 SARN 模型中,道路网络的数据输入由以下几个部分组成:
1. 道路网络表示:有向图 \(G = (S, A^T, A^S)\)
- \(G\) 表示整个道路网络,它是一个有向图,其中:
- \(S\):顶点集合,表示网络中的所有道路片段,每个顶点 \(s_i \in S\) 是一个具体的道路片段。
- \(A^T\):拓扑连接矩阵,用于描述道路片段之间的直接连接关系。
- \(A^S\):空间相似度矩阵,用于描述道路片段之间在空间上的相似性。
2. 道路片段特征表示
每个道路片段 \(s_i \in S\) 由多个特征描述,包括:
- 类型(Type):道路的类别(如高速公路、普通道路等),表示道路的性质。
- 长度(Length):道路片段的实际长度。
- 弯曲度(Radian):表示道路的方向和曲率。
- 起点和终点坐标:每个道路片段的起始点和终止点坐标(包括纬度和经度)。
这些特征帮助模型捕捉每个道路片段的物理和几何特性,使模型能够更好地理解道路网络中的节点。
3. 拓扑连接矩阵 \(A^T\)
-
定义:\(A^T \in \mathbb{R}^{n \times n}\) 表示道路片段之间的拓扑连接性。如果两个道路片段 \(s_i\) 和 \(s_j\) 是直接相连的,则 \(A^T_{i,j}\) 为非零值;否则 \(A^T_{i,j} = 0\)。
-
矩阵元素计算:
- 当 \(s_i\) 和 \(s_j\) 直接相连时:\[A^T_{i,j} = \frac{1}{2} \cdot (\text{weight}(s_i) + \text{weight}(s_j)) \]
- \(\text{weight}(s)\) 是道路片段的权重,根据道路的类型确定。例如,高速公路的重要性高于普通道路,因此权重更高。
- 当 \(s_i\) 和 \(s_j\) 直接相连时:
-
作用:这种设计使得邻接矩阵不仅表示了道路片段的连通性,还通过权重反映了道路片段的重要性。这样模型能够在学习时关注更重要的道路片段连接。
4. 空间相似度矩阵 \(A^S\)
- 定义:\(A^S \in \mathbb{R}^{n \times n}\) 表示道路片段在空间上的相似性。
- 描述:\(A^S_{i,j}\) 反映了道路片段 \(s_i\) 和 \(s_j\) 是否在地理位置、方向、特性等方面相似,即使它们之间没有直接连接。
- 作用:\(A^S\) 能够帮助模型捕捉到一些间接的、基于相似性的关系,使得模型可以理解道路片段之间的潜在关联。
5. 问题定义
给定道路网络 \(G\),学习一个嵌入函数 \(f: S \rightarrow \mathbb{R}^d\),将每个道路片段 \(s_i\) 映射到一个 \(d\) 维的向量 \(\mathbf{h}_i \in \mathbb{R}^d\),其中 \(d\) 是嵌入的维度。
- 目标:
- 通过 \(f\) 学习到的嵌入应能够保留道路片段的特征,并且保持道路片段之间的拓扑和空间相关性。
- 学习到的嵌入可以应用于各种下游任务,如路径规划和交通预测,无需进一步微调即可高效工作。
总结
- \(A^T\):邻接矩阵,用于表示道路片段之间的直接连接性,并且通过道路的权重来强调重要的连接。
- \(A^S\):空间相似度矩阵,用于表示道路片段在空间上的相似性,捕捉到间接的潜在关系。
- 结合使用:通过 \(A^T\) 和 \(A^S\),模型能够从直接和间接的角度理解道路网络中的结构,并学习到能够很好地表示这些关系的嵌入。
这种数据输入设计使得模型能够利用拓扑和空间信息,更好地进行道路网络的分析和优化。
框架
To tackle these issues, we propose a model named SARN to learn generic and task-agnostic road network embeddings based on self-supervised contrastive learning. We present (i) a spatial similarity matrix to help learn the spatial correlations of the roads, (ii) a sampling strategy based on the spatial structure of a road network to form self-supervised training samples, and (iii) a two-level loss function to guide SARN to learn embeddings based on both local and global contrasts of similar and dissimilar road segments.
4.1 Spatial Similarity Matrix
在 SARN 模型中,空间相似度矩阵 \(A^S\) 被设计为反映道路片段在地理空间上的相似性。具体定义如下:
公式 (3):空间相似度矩阵的计算
- \(A^S_{i,j,\text{ds}}\):表示道路片段 \(s_i\) 和 \(s_j\) 之间的距离相似性。
- \(A^S_{i,j,\text{as}}\):表示道路片段 \(s_i\) 和 \(s_j\) 之间的角度相似性。
公式 (4) 和 (5):距离和角度相似性的计算
-
距离相似性
\[A^S_{i,j,\text{ds}} = \cos\left(\pi \cdot \min\left(\frac{\text{sp\_dist}(s_i, s_j)}{\delta_{ds}}, 1\right)\right) \]- \(\text{sp\_dist}(s_i, s_j)\) 计算两个道路片段中点之间的 haversine 距离。
- \(\delta_{ds}\) 是距离阈值,用于控制相似性计算。
-
角度相似性
\[A^S_{i,j,\text{as}} = \cos\left(\pi \cdot \min\left(\frac{\text{2ag\_dist}(s_i, s_j)}{\delta_{as}}, 1\right)\right) \]- \(\text{ag\_dist}(s_i, s_j)\) 计算两个道路片段的绝对角度差异。
- \(\delta_{as}\) 是角度阈值。
解释
- 用途:\(A^S\) 用于捕捉空间上相似但未直接连接的道路片段关系,从而提升对道路网络整体结构的理解。
- 图的拓扑结构:图 \(G\) 包含两种类型的边:拓扑边(表示直接连接)和空间边(表示空间相似性)。
4.2 Spatial Importance-Based Graph Augmentation
SARN 模型通过生成图的变体(图视图 \(G'\) 和 \(\bar{G}\))来增强学习,以生成正样本和负样本。
公式 (6) 和 (7):边的破坏概率
-
拓扑边的破坏概率
\[p(s_i, s_j) = \sigma_{\epsilon} \left( 1 - \frac{A^T_{i,j} - \min(A^T)}{\max(A^T) - \min(A^T)} \right) \]- \(\sigma_{\epsilon}(\cdot)\):将概率映射到 \((\epsilon, 1 - \epsilon)\) 之间,\(\epsilon\) 是一个小数避免边界值。
-
空间边的破坏概率
\[p(s_i, s_j) = \sigma_{\epsilon} \left(1 - A^S_{i,j} \right) \]- 不归一化:由于 \(A^S_{i,j}\) 已经在 \([0, 1]\) 范围内。
解释
- 目的:破坏边来生成图的变体,以便模型能够学习到鲁棒的表示。
- 权重作用:边权重高的拓扑边表示更重要,不容易被破坏。
4.3 Graph Encoding
SARN 使用 GNN 进行图编码,包括特征嵌入层和图编码器。
公式 (8):特征聚合
- \(N_i\):节点 \(s_i\) 的邻居节点。
- \(\alpha_{ij}^l\):注意力权重。
- \(W^l\):可学习的权重矩阵。
- \(\sigma\):激活函数(如 ELU)。
公式 (9) 和 (10):注意力权重的计算
-
注意力系数计算
\[e_{ij} = a^\top [Wx_i \| Wx_j] \]- \(\|\):表示连接操作。
-
Softmax 归一化
\[\alpha_{ij} = \frac{\exp(\text{LeakyReLU}(e_{ij}))}{\sum_{s_k \in N_i} \exp(\text{LeakyReLU}(e_{ik}))} \]
解释
- 多头注意力:每层使用 \(L\) 个注意力头,并最终合并不同头的输出。
- 功能:使得模型能更好地聚合邻居节点的信息,并能兼顾拓扑和空间相似性。
4.4 Projection Head and Weight Update
公式 (11):投影头
- \(z_i\):投影到低维的嵌入,用于计算损失。
- \(\text{FC}\):全连接层。
公式 (12):权重更新
- \(W_{\chi}\):表示模型 \(\chi \in \{\mathcal{F}, \mathcal{P}\}\) 的所有权重。
- \(m\):动量系数(例如 0.999)。
解释
- 投影头:将高维的嵌入降维,以减少计算负担。
- 动量更新:帮助保持稳定的权重更新,扩大负样本池。
总结
- \(A^S\) 捕捉空间相似性,\(A^T\) 描述直接连接,结合使用提升模型鲁棒性。
- 边破坏和图变体:通过图增强策略提高嵌入的泛化能力。
- GNN 聚合和多头注意力:融合拓扑和空间特征。
- 投影和动量更新:保证模型稳定性和训练效率。
这种设计使得 SARN 能够从不同维度对道路网络进行深度分析和建模。
以下是关于空间距离负采样和两级损失函数的详细解释,用于 SARN 模型的学习。
4.4 Spatial Distance-Based Negative Sampling
为了有效地训练模型,SARN 需要正样本和负样本的对比学习策略。这里引入了一种基于空间距离的负采样策略,主要步骤如下:
1. 正样本采样
- 正样本的策略与之前的 GCL 模型类似。对于来自图视图 \(G\) 的某个顶点 \(s_i\),取来自另一个视图 \(G'\) 中相同顶点的嵌入作为正样本。这有助于模型学习到不同视图中相同节点的共同特性。
2. 负样本采样策略
SARN 引入了一种基于空间距离的负采样,与传统的随机采样不同,这种方法考虑了道路片段的空间分布:
-
局部负样本:通过在网络图中建立一个网格系统,每个网格(cell)存储若干个前几批 mini-batch 产生的嵌入。目标节点所在的网格称为局部网格,而局部负样本从同一网格中其他节点采样。这种采样方法主要用于区分同一区域内的道路片段。
-
全局负样本:从其他网格(即,非局部网格)中的嵌入中提取。由于这些样本距离较远,它们被用于学习区分来自不同区域的道路片段。
公式 (13) 和 (14):局部和全局负采样
-
局部负样本集合
\[\mathcal{N}_l(s_i) = \{z_j | z_j \in Q(s_i.\text{cell}), s_j \neq s_i\} \]- 其中,\(z_j\) 表示来自其他网格中的嵌入,\(Q(s_i.\text{cell})\) 是目标节点 \(s_i\) 所在网格中的嵌入队列。
-
全局负样本集合
\[\mathcal{N}_g(s_i) = \{\mathcal{R}(Q(c_k)) | c_k \in \mathcal{C}, c_k \neq s_i.\text{cell}\} \]- \(\mathcal{R}\) 是一种读出函数(例如平均聚合),用于生成全局负样本。
- \(\mathcal{C}\) 表示所有网格的集合。
4.5 Two-Level Loss Function
SARN 使用两种损失函数来实现多层次的对比学习:局部对比损失和全局对比损失。这种设计能够帮助模型学习到细粒度和粗粒度的空间特性。
1. 局部对比损失(Local Contrastive Loss)
局部对比损失 \(\mathcal{L}_l(s_i)\) 主要用来细化同一区域内的特征表示,类似于 InfoNCE 损失:
- 解释:
- \(z_i\) 和 \(z_i^{'}\) 分别是来自 \(G\) 和 \(G'\) 的嵌入。
- \(\Lambda(\cdot, \cdot)\) 表示两个嵌入向量的相似性(例如内积)。
- \(\tau\) 是温度参数。
2. 全局对比损失(Global Contrastive Loss)
全局对比损失 \(\mathcal{L}_g(s_i)\) 侧重于学习不同区域之间的差异:
- 解释:
- \(z_i^{+}\) 是聚合的全局嵌入(来自目标节点 \(s_i\) 所在网格的读取)。
- \(\mathcal{N}_g(s_i)\) 提供了从其他网格中提取的负样本。
3. 综合损失函数
最终的损失函数 \(\mathcal{L}_{\text{SARN}}\) 结合了局部和全局对比损失:
- 解释:
- \(\lambda\) 是一个权衡参数,用于调整局部和全局损失的影响。
- \(S^{*}\) 表示 mini-batch 中的道路片段集合。
总结
- 空间距离负采样:通过局部和全局负采样策略,模型能够更好地理解道路片段的细粒度和整体关系。
- 两级损失函数:局部和全局对比损失结合,确保模型能够同时学习到同一局部区域内的精细特征和不同区域间的区分特征。
- 权衡和优化:使用 \(\lambda\) 参数控制不同损失的影响,使得模型在学习过程中能够灵活适应不同任务需求。
这种设计使得 SARN 可以从不同尺度捕捉道路网络的复杂结构,提升嵌入的准确性和泛化能力。
How Can Large Language Models Understand Spatial-Temporal Data?
数据
框架
We tackle the data mismatch by proposing: 1) STG-Tokenizer: This spatial-temporal graph tokenizer transforms intricate graph data into concise tokens capturing both spatial and temporal relationships; 2) STG-Adapter: This minimalistic adapter, consisting of linear encoding and decoding layers, bridges the gap between tokenized data and LLM comprehension. By fine-tuning only a small set of parameters, it can effectively grasp the semantics of tokens generated by STG-Tokenizer, while preserving the original natural language understanding capabilities of LLMs.
根据图片中的内容,这里详细解释 STG-LLM 的各个公式,以及它的组件如何协同工作。
4.1 Spatial-Temporal Graph Tokenizer
STG-Tokenizer 的主要作用是将空间-时间图数据转换为简洁的token,以便长语言模型(LLM)能够理解。通过这种方式,空间-时间数据的复杂性被压缩成了更易理解的表示。
公式 (2):Token 生成
-
解释:
- \(T_g = \{T_g^1, T_g^2, ..., T_g^N\}\) 表示由 STG-Tokenizer 生成的 tokens,每个 token 代表一个节点。
- \(E_{idl}\) 和 \(E_{idw}\) 分别表示基于时间和基于星期的嵌入。这些嵌入信息会被连接(concatenate)到 \(T_g^i\) 上,以补充节点 token 的信息。
- \(\|\) 是连接操作符。
-
目的:通过这种设计,生成的 token 能够包含时间和星期的信息,从而让模型捕捉到与时空相关的复杂性。例如,用于捕捉不同时间段和工作日的交通模式差异。
4.2 Spatial-Temporal Graph Adapter
STG-Adapter 主要用于将 STG-Tokenizer 生成的 tokens 进行编码,使得 LLM 能够理解这些表示,并结合自然语言输入(如查询或提示)进行预测。
公式 (3):编码过程
- 解释:
- \(T_e\) 是由 STG-Tokenizer 生成的 tokens。
- \(W_1\) 和 \(b_1\) 分别是权重矩阵和偏置,用于线性变换。
- 通过线性编码层,确保 tokens 维度与 LLM 保持一致。
公式 (4):组合 tokens
-
解释:
- \(T_p\) 是通过自然语言提示生成的 tokens,例如天气信息、事故提示等。
- \(T_q\) 是由 STG-Tokenizer 生成的时空 tokens。
- \(\|\) 表示连接操作。
-
目的:将自然语言提示与时空 tokens 结合在一起,使得 LLM 能够同时理解这两种信息,进行更为复杂的空间-时间预测。
解码与预测
公式 (5):解码与预测公式
-
解释:
- \(\hat{X}_{t+1:t+P}\) 表示对未来 \(P\) 个时间步的预测值。
- \(H\) 是由 LLM 计算出的隐藏状态,即从组合的 tokens \(T\) 中学习到的信息。
- \(W_2\), \(W_3\) 是可训练的权重矩阵,\(b_2\), \(b_3\) 是偏置。
- 通过线性层和残差连接(\(T_e\)),确保模型关注到时空信息的原始结构,同时可以进行预测。
-
目的:结合 LLM 计算出的高维表示,生成最终的预测结果,确保模型能够利用多模态信息。
图 2:STG-LLM 框架总结
- STG-Tokenizer:将时空数据转换为 tokens,并与其他信息(如时间和星期嵌入)连接在一起。
- STG-Adapter:通过线性编码和解码层,使 LLM 能够理解这些 tokens,并结合自然语言提示进行综合分析。
- LLM:利用其强大的自然语言处理和理解能力,结合多模态信息,生成空间-时间预测。
例子:结合自然语言与时空数据
示例 1 中提到,如果有一条提示“预测从 10:55 到 11:50 这 170 个节点的历史交通数据...”,模型通过结合 tokens 生成预测。STG-Tokenizer 负责生成每个节点的嵌入,而 STG-Adapter 则将这些信息进行编码,使 LLM 能够理解和使用。
总结
- 时空图数据 token 化:通过 STG-Tokenizer,复杂的时空信息被压缩成易于理解的 token,结合时间和星期的嵌入,捕捉时空模式。
- LLM 的增强:STG-Adapter 保持了 LLM 的自然语言理解能力,同时使其能够理解时空 tokens,这样的设计使得模型可以在时空任务中更好地应用。
- 解码与预测:通过残差连接和线性层,结合 LLM 的隐含状态进行未来时刻的预测,确保能够捕捉到复杂的时空动态。
这种框架设计极大地提升了 LLM 在时空预测任务中的应用潜力,使得它能够在保持自然语言处理能力的基础上,同时处理时空数据的复杂性。
未输入流量数据
你的观察是正确的。STG-LLM 似乎并未将历史的流量数据直接作为输入,而是通过其他时空特征来进行流量预测。让我进一步解释这一点。
流量信息的输入与预测
-
输入信息的构成:
- 根据 STG-LLM 的设计,输入的主要信息来源于 STG-Tokenizer 和自然语言的 prompt。这意味着输入数据包括了:
- 时空节点的特征信息: 比如道路的地理位置、时间段(小时、星期等),这些特征能够帮助模型理解时空关系。
- 额外的提示信息: 通过 ( T_p ),例如天气、事故描述等,帮助 LLM 更好地理解当前的交通情况。
- 根据 STG-LLM 的设计,输入的主要信息来源于 STG-Tokenizer 和自然语言的 prompt。这意味着输入数据包括了:
-
流量数据的处理:
- 没有直接输入历史流量数据: 从公式和 STG-LLM 的整体架构来看,模型并未直接将历史的流量值作为输入。这意味着模型并不需要在输入阶段直接看到具体的流量数据,而是依赖其他相关特征来学习和预测流量。
-
模型的任务 - 直接预测未来的流量信息:
- 在 STG-LLM 的解码层(公式 5)中,我们看到模型会生成 未来 \(P\) 个时间段的流量预测 \(\hat{X}_{t+1:t+P}\)。
- 模型通过对时空特征(如位置、时间)和额外上下文的理解,来推断未来的交通流量。这是一种基于特征推理的方式,而不是依赖于直接输入的历史流量数据。
为什么不直接输入历史流量数据?
-
提升泛化能力:
- 通过仅依赖时空特征(如时间和地点)来进行预测,模型能够更好地理解和捕捉时空的内在规律。这种方式可以增强模型在各种情况下的泛化能力,不会因为单一数据样本的噪声影响而偏离。
- 如果模型能根据时间、位置、天气、事件等推测出未来流量,那么即使在没有历史流量数据的情况下,模型也能够做出合理的预测。
-
更好地结合 LLM 的能力:
- LLM 本身在理解时序数据和自然语言提示方面有很强的能力。在这种设计中,STG-Tokenizer 生成的 tokens 被视为一种上下文,LLM 结合这些上下文和语言提示,从中捕捉时空特性和趋势。
- 因此,STG-LLM 的设计是通过加强对时间、地点和其他补充信息的理解,来间接进行未来流量的预测。
总结
虽然流量数据本身没有直接作为输入,而是通过对时空特征和外部提示的理解来实现流量预测,但这种设计利用了 LLM 的推理能力,使得 STG-LLM 可以在不直接依赖历史流量数据的情况下,也能精准地预测未来的流量情况。这是一种基于特征的预测方式,能够帮助模型更好地适应不同的场景和任务。
关于最后时间一致性的问题
明白了,你的疑问是关于不同站点在相同的时间步(例如第 12 个时间步)可能对应不同的具体时间点,尤其是分钟数不一致的情况。这确实可能在一些场景下出现,比如传感器数据采集频率或更新时间不同导致的不同站点之间时间步的对齐问题。
为什么不同站点的分钟数可能不一样?
-
数据采集频率不同:
- 不同站点的数据采集设备可能设置了不同的频率。比如,站点 1 可能每 10 分钟采集一次,而站点 2 每 15 分钟采集一次。
- 在这种情况下,虽然站点 1 和站点 2 都有 12 个时间步,但第 12 个时间步对应的实际时间点(具体的小时和分钟)会不一样。站点 1 可能是晚上 6:50,而站点 2 可能是晚上 7:00。
-
数据对齐的时间偏差:
- 有时候,不同的站点可能不是同时开始采集数据。比如,站点 1 可能从上午 6:00 开始,而站点 2 从上午 6:05 开始。这意味着即便时间步数相同,实际对应的具体时间会有细微的偏差。
- 这种差异性会导致在最后一个时间步,站点 1 和站点 2 的分钟数不完全一致。
UrbanGPT: Spatio-Temporal Large Language Models
数据
Spatio-Temporal Zero-Shot Learning
在这里,“zero-shot”的意思是模型在没有接触过目标任务数据的情况下进行预测。具体来说,spatio-temporal zero-shot learning指的是模型在一种空间-时间数据场景中训练,但要在没有见过的其他场景中进行预测。
你的理解是对的,这可以包括以下两种情况:
-
跨不同任务类别的迁移:例如,模型在自行车的数据上进行了训练,但在出租车的数据上进行预测。这种情况下,模型需要在没有见过出租车数据的情况下推断其空间-时间模式。
-
跨区域的迁移:例如,模型在城市A的数据上训练,但用来预测城市B的数据。这要求模型能够在不同城市间迁移其知识,尽管城市B的空间-时间分布可能与城市A有差异。
这种zero-shot学习的核心挑战是让模型在新的场景下具备一定的泛化能力,而不需要额外的训练。
框架
To achieve this objective, we present the UrbanGPT, which seamlessly integrates a spatio-temporal dependency encoder with the instruction-tuning paradigm.
是的,正是这个意思!左边的 时空依赖编码器 通过对时间和空间的编码,将原始数据中的时空信息提取出来,然后将这些信息转化为右边 文本指令 中的内容,成为语言模型(LLMs)可以理解的文本提示。
具体过程如下:
- 左侧时空编码:左边通过编码器对时间和空间维度的数据进行多层卷积,提取出时空依赖特征(例如,数据在不同时间步和空间位置的变化模式)。
- 生成文本提示:这些提取的特征通过轻量级对齐模块,被嵌入到语言模型的嵌入空间,并转化为包含标记符(如
<ST_HIS>
和<ST_PRE>
)的文本提示。 - 文本提示在右侧使用:右侧通过文本指令微调将这些时空特征整合进语言模型。具体来说,时空信息被组织成一段描述性的文本,类似于“给定历史数据
<ST_HIS>
… 预测的目标<ST_PRE>
…”的形式。这些提示让模型理解当前的任务,并将时空依赖特征与预测目标对齐。
通过这种方法,左边提取的时空信息直接通过文本嵌入到右边的指令中,使得语言模型能够在时空信息的上下文下生成准确的预测。
为了展示这里的计算过程,我们可以分解这个模型的计算流程,从数据输入到训练过程依次说明。这里我会使用一个假设的输入数据来逐步说明模型是如何处理和学习的。
1. 数据输入:构建时空嵌入
假设我们的输入数据 $ \mathbf{X} $ 是一个包含多维时空特征的张量,包含时间和空间维度的数据。比如,假设输入数据是一个 3D 张量,维度为 $ T \times S \times d $,其中:
- $ T $:时间步长数,例如一个小时的间隔记录。
- $ S $:空间维度数,例如不同的地理区域。
- $ d $:特征维度,例如流量、温度、车辆数等。
例如:假设输入数据为
2. Spatio-Temporal Dependency Encoder:时空依赖编码器
时空依赖编码器将输入数据映射到一个嵌入空间,生成一个新的时空表示。
计算公式 (3):时空依赖编码器的主要结构
使用公式:
在这里:
- 初始化嵌入:将输入 $ \mathbf{X} $ 通过线性层得到初始嵌入 $ E^{(0)} $。
- 卷积操作:
- 使用卷积核 $ \mathbf{W}^{(l)}_k $ 和 $ \mathbf{W}^{(l)}_g $ 提取特征,这些卷积核用于时间和空间维度上的卷积操作。
- 经过卷积后的输出通过激活函数 $ \delta(\cdot) $ 控制信息流动。
- 加权求和:将卷积结果相加,再加入 $ E'^{(l)}_t $ 进行信息保留。
假设在第一层 $ l = 1 $,我们得到了时空嵌入 $ \Psi^{(1)} $,其中每个位置包含时间和空间上的依赖信息。
3. Multi-Level Correlation Injection Layer:多层相关性注入层
为了在不同层次中逐步加入依赖信息,我们使用公式 (4) 进行多层次的特征注入:
假设输入的上一层 $ S^{(l-1)} $ 是 0(初始层),那么通过这个公式我们得到 $ S^{(1)}_f $,其中包含了与前一层关联的特征表示。
4. Spatio-Temporal Instruction-Tuning
为了对接下来的语言模型微调做准备,将时空信息与语言信息对齐并生成可供语言模型使用的指令信息。
公式 (5):
在这里:
- $ H_{r,f} $ 是从时空嵌入中得到的高维表示。
- $ \Gamma_{r,f} $ 是特征表示,用于包含时空上下文信息。
- $ W_1, W_2, W_3 $:线性层的权重矩阵,通过这些权重可以把输入映射到预测的维度上。
假设 $ H_{r,f} $ 和 $ \Gamma_{r,f} $ 的输入是随机初始化的张量,通过这个公式我们可以得到预测值 $ \hat{Y}_{r,f} $。
5. 模型优化:训练损失函数
训练模型时使用复合损失函数。根据任务需求,对应使用分类损失 $ L_c $ 和回归损失 $ L_r $ 来优化不同的目标:
-
分类损失 $ L_c $:对于分类任务,使用交叉熵损失,公式如下:
\[L_c = -\frac{1}{N} \sum_{i=1}^{N} \left[ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right] \]假设真实标签 $ y $ 为 0 或 1,计算每个样本的预测概率与真实标签之间的差异。
-
回归损失 $ L_r $:对于连续值的预测任务,使用平均绝对误差损失:
\[L_r = \frac{1}{N} \sum_{i=1}^{N} |y_i - \hat{y}_i| \]在这里,计算每个样本的预测值与真实值之间的绝对误差。
6. 总损失函数的优化
综合损失为:
- $ L_{\text{LLMs}} $:语言模型的损失。
- $ L_r $:回归损失。
- $ L_c $:分类损失。
使用梯度下降或其他优化算法(如Adam优化器),调整模型的参数,以最小化总损失 $ L $,并提高模型的预测性能。
训练过程总结
- 数据预处理:准备好包含时空特征的数据。
- 时空依赖编码:使用卷积层逐步提取时空特征,并生成多层次的嵌入表示。
- 指令微调:将时空信息对齐到语言模型的嵌入空间。
- 预测生成:通过指令生成预测结果。
- 损失计算:根据任务类型计算分类损失和回归损失。
- 反向传播:通过总损失优化模型参数。
这种流程通过结合时空依赖编码和语言模型的指令微调,实现了对复杂时空场景的预测和泛化能力。
关于instruction部分
UrbanGPT生成这些提示的方式是通过将时空信息转换成一种结构化的文本输入,以便语言模型可以将其解读为指令或提示。具体来说,模型利用标记符(如<ST_HIS>
和<ST_PRE>
)来指示不同的内容部分,并提供明确的时间、空间和任务描述,以构建一个综合的时空提示。以下是一个生成和使用这些标记符的示例:
示例:使用<ST_HIS>
和<ST_PRE>
生成时空指令
假设我们要预测某一地区在未来12个时间步长内的出租车流量。我们已有历史数据,这些历史数据的时间范围是 "2023年1月1日 8:00 至 2023年1月1日 20:00",时间步长为30分钟。该地区的地理位置为纽约市布鲁克林区域,包含多个兴趣点(POI),例如商业区、住宅区和学校等。
生成指令的具体流程:
- 时间信息标记:包含历史数据的时间范围、步长、日期和具体时间。
- 空间信息标记:包含地理区域的描述,例如布鲁克林区、兴趣点(如学校、住宅区等)。
- 预测任务说明:明确模型的任务,例如预测未来的出租车流量。
使用这些信息,我们可以生成如下的文本提示:
<ST_start>
时间信息: 历史数据的记录时间为 "2023年1月1日,08:00 - 20:00",每30分钟记录一次。
空间信息: 此地区位于纽约市布鲁克林,包含兴趣点包括商业区、住宅区和教育设施。
<ST_HIS> 出租车流入: [91, 94, 100, 93, ...] 出租车流出: [96, 91, 108, 102, ...] <ST_HIS>
任务描述: 预测未来12个时间步长的出租车流入和流出情况。
<ST_PRE> 预测出租车流入: [...] 预测出租车流出: [...] <ST_end>
解释各部分的作用:
<ST_start>
和<ST_end>
标记:用于指示指令的开始和结束。- 时间和空间信息:为模型提供明确的时空背景,这部分内容使用自然语言表述,让模型理解数据的时间和地点。
<ST_HIS>
标记:表示历史数据部分,包含历史的出租车流入和流出记录。这部分帮助模型捕获时间维度上的变化趋势。<ST_PRE>
标记:指示预测结果部分,模型根据历史数据生成预测值,并将预测结果填入。
通过这种结构化的文本提示,UrbanGPT 可以将复杂的时空数据转换成模型可理解的文本形式,并利用指令微调来增强对时空数据的理解,从而在类似任务中实现准确预测。
完全正确!整个指令确实由三个主要部分的信息组成,分别是历史数据信息、辅助信息和特殊标记解释。这些部分共同作用,使得模型在理解和处理时空预测任务时具备更清晰的上下文。以下是每一部分的详细解读:
1. 历史数据信息
- 内容:这是核心的数据部分,包含了历史的流量数据,例如自行车的流入和流出量。
- 标记:使用特殊标记
<ST_HIS>
来包裹历史数据。例如:<ST_HIS> [12, 8, 9, ...] <ST_HIS> # 流入历史数据 <ST_HIS> [5, 12, 12, ...] <ST_HIS> # 流出历史数据
- 作用:这些历史数据直接告诉模型过去的流量情况,是模型进行未来流量预测的重要依据。
2. 辅助信息
-
包含 时间信息(temporal information)、空间信息(spatial information)和 任务描述(task description):
- 时间信息:提供数据记录的时间范围和采样间隔(例如,“2020年1月14日,12:00 到 2020年1月14日,17:30,每30分钟记录一次”)。帮助模型理解数据的时间背景。
- 空间信息:描述预测区域的地理位置和特征(例如,“位于斯塔滕岛的某一区域,半径1公里,包含教育、文化、商业和交通设施等”)。帮助模型捕捉空间依赖性。
- 任务描述:明确任务目标,例如“预测未来12个时间步的自行车流入和流出情况”。让模型理解指令的具体预测目标。
这些辅助信息以文本形式整合在指令中,提供了时空上下文,使模型能够理解数据的来源、背景和预测要求。
3. 特殊标记的含义解释
- 在指令的后部,通常会有一段文字说明特殊标记的作用。这是 标记解释 部分,用于帮助模型理解
<ST_HIS>
和<ST_PRE>
等标记的含义。 - 示例:这段文字可能会说明
<ST_HIS>
代表历史数据,<ST_PRE>
代表预测目标数据。这些标记的含义解释帮助模型正确区分不同类型的数据段落。To improve prediction accuracy, a spatio-temporal model is utilized to encode the historical bike data as tokens <ST_Start><ST_HIS><ST_HIS><ST_End>, where the first and the second tokens correspond to the representations of bike inflow and outflow.
指令结构总结
整个指令结构如下:
- 历史数据部分:包含历史的流入和流出数据,用
<ST_HIS>
标记包裹。 - 辅助信息部分:包含时间、空间和任务描述,以自然语言形式给出,帮助模型理解背景。
- 标记解释部分:说明
<ST_HIS>
和<ST_PRE>
等标记的作用,让模型能正确使用这些数据。
这种结构化指令不仅包含了原始数据,还为模型提供了上下文信息和标记解释,使模型能在理解数据背景的前提下生成预测。这种设计使 UrbanGPT 在时空预测任务中表现得更为出色。
Tiny Time Mixers (TTMs): Fast Pre-trained Models for Enhanced Zero/Few-Shot Forecasting of Multivariate Time Series
数据
在 TTM 模型的多变量时间序列数据中,“已知变量”和“外生变量”分别指的是以下内容:
-
已知变量(Target Variables):这些是模型需要预测的目标变量。例如,如果目标是预测未来的电力需求、天气或交通流量,那么这些变量就是目标变量。它们通常是预测任务的核心内容,因为模型的最终目的是生成这些变量的未来值。
-
外生变量(Exogenous Variables):这些变量不会被预测,但会影响目标变量的变化。外生变量可以进一步分为:
- 不可控变量:例如天气,这类变量在预测期间的未来值是已知的或者可以估计的。它们不可控但可能显著影响目标变量的波动。
- 可控变量:这类变量的未来值可以人为控制,以调整目标变量的行为。例如在销售预测中,可以通过折扣调整销量;在工业控制中,操作参数可以用于控制系统行为。
在 TTM 中,外生变量被认为是可用的输入数据,并且在模型预测时会被集成。外生变量的数据在预测期间已知,可以通过“外生变量混合器”模块(Exogenous Mixer Block)整合到模型的预测过程中,以提高预测精度。
是的,外生变量确实可以理解为一些辅助数据。它们并不是预测的目标,但它们对目标变量的变化有显著影响,因此可以帮助模型更好地捕捉目标变量的模式和趋势,提高预测精度。
在时间序列预测中,外生变量通常用于提供额外的上下文或条件信息,帮助模型理解目标变量在不同条件下的表现。例如:
- 天气:在电力需求或交通流量预测中,天气数据(温度、降雨量等)作为外生变量提供额外的参考,因为这些因素会影响需求或流量的波动。
- 节假日:在销售预测中,节假日作为外生变量帮助模型理解特殊时间段的需求变化。
- 经济指标:在金融预测中,通货膨胀率、利率等经济指标作为外生变量影响股票价格或市场需求。
在 TTM 模型中,这些外生变量通过“外生变量混合器”模块与目标变量进行融合,使得模型能够在预测时同时考虑这些辅助因素,生成更加准确和合理的预测结果。
框架
根据图片内容和 TTM 模型结构,以下是对输入数据形式、计算过程以及相关公式的详细解读。
输入数据形式
假设输入的多变量时间序列数据为 $ \mathbf{X} \in \mathbb{R}^{c \times sl} $,其中:
- ( c ) 表示通道数,即不同的变量数,例如温度、流量等。
- ( sl ) 表示时间序列的长度。
输入数据经过预处理后会被分成目标变量和外生变量两个类别:
- 目标变量(Target Variables):这是我们希望预测的核心变量,通常是模型输出的预测目标。
- 外生变量(Exogenous Variables):这些是预测任务中的辅助变量(如天气等),并不直接作为预测目标,但会影响预测结果。
公式解读和计算过程
公式 1:多层时间序列预测
假设我们预测未来的时间序列值为 $ \hat{Y} \in \mathbb{R}^{c' \times fl} $,其中:
- ( c' \leq c ) 表示预测通道的数量。
- ( fl ) 表示预测的时间步长。
公式
- 这里的 $ f $ 表示 TTM 模型的映射函数,即模型通过多层特征提取和混合得到的预测输出。
TTM Backbone 的多层次计算过程
TTM Backbone 由多层 TSMixer 块组成,每层的主要计算步骤如下:
-
输入数据标准化(Instance Normalization):
- 对输入的多变量时间序列进行标准化,确保每个通道的数据有零均值和单位方差,从而减少不同变量间的尺度影响。
-
Patching 和分块处理:
- 标准化后的数据被划分为不重叠的块(patches),每个块的大小为 ( pl )。假设划分后的数据为 $ X_p \in \mathbb{R}^{c \times n \times pl} $,其中 ( n ) 是块的数量。
-
分辨率前缀调优(Resolution Prefix Tuning):
- 对每个块前添加一个前缀,表示数据的分辨率。这些前缀帮助模型区分不同分辨率的数据,使其在不同时间步和时间尺度上进行建模。
- 分辨率前缀的公式为:\[X_h = \text{Concat}( \text{Resolution Prefix}, X_p ) \]
- 通过前缀调优增强模型对不同分辨率数据的理解。
-
TSMixer 块的处理:
- 每层包含多个 TSMixer 块,进行空间和时间上的混合。TSMixer 通过多层感知机(MLP)处理每个块内和块之间的依赖关系。
-
Patch Merge 和 Patch Partition:
- 在每一层,patch 的数量减少一半,而特征维度增加一倍,从而提取出更高层次的特征。
- 这种操作类似于卷积网络中的下采样,使模型能够逐层捕捉更大的时间窗口中的依赖性。
-
多分辨率预训练:
- 为了提高泛化能力,TTM 在多个分辨率上进行预训练(例如,小时、30分钟、15分钟的分辨率)。通过自适应分块处理,模型可以在多分辨率下学习丰富的特征。
公式 2:损失函数
在训练过程中,使用均方误差(MSE)损失来衡量预测结果和真实值的差异:
- 这里 $ Y $ 是真实的时间序列值,$ \hat{Y} $ 是模型的预测输出。
- 损失函数的目标是最小化预测值和真实值之间的平方误差,从而优化模型的预测精度。
Exogenous Mixer 的计算
在 Exogenous Mixer 模块中,外生变量与目标变量进行混合,以捕捉它们之间的相互依赖关系。该模块的步骤如下:
- 外生变量替换:用已知的未来外生变量值替换预测中的外生变量部分。
- 交叉关联计算:在时间轴上对目标变量和外生变量进行交叉混合,捕捉它们之间的时间滞后关系。
计算公式
假设目标变量和外生变量分别为 ( Y_{t} ) 和 ( E_{t} ),则 Exogenous Mixer 对它们进行跨通道和时间维度的混合,得到的公式为:
- 其中 $ g $ 表示 TSMixer 块的映射函数,用于跨时间和跨通道混合目标变量和外生变量。
总结
TTM 模型通过多层次的结构和复杂的混合模块(如 Exogenous Mixer 和 TSMixer 块)来提取时间序列数据中的复杂依赖关系,使用特征合并和自适应分块等方法实现了高效的多分辨率建模。通过对目标变量和外生变量的有效混合,TTM 能够实现精准的多变量时间序列预测。
块与块之间的关系
在 TTM(Multilevel Tiny Time Mixers)模型中,各个块之间具有多层次和逐步细化的关系。具体来说,模型的主结构包括多个 TSMixer 块,它们通过分层的方式处理输入数据,逐步提取时空特征。这些块之间的关系和相互作用如下:
1. 层级关系
TTM Backbone 的结构是一个 多层次架构,通常包含多个层次(如 3 层),每一层都有一组 TSMixer 块。这些层级之间的关系可以总结为:
- 低层级(浅层):处理更细粒度的时间序列特征,侧重于捕捉局部时间依赖。低层的 TSMixer 块通常作用于较小的时间窗口。
- 中层级:在低层级的基础上进一步抽象和合并特征。通过 Patch Merge 操作将多个低层的特征块合并为较大的块,从而提高时间窗口的覆盖范围。
- 高层级(深层):捕捉更大范围的时空依赖性,聚焦于长时间依赖关系。高层级的 TSMixer 块作用在更大的时间窗口上,整合了多个中层块的特征。
这种层级关系使得 TTM 模型能够逐层捕捉不同尺度的时间依赖性,从而在较长的时间跨度内有效建模。
2. 块内关系(TSMixer 块的内部操作)
在每一层的 TSMixer 块内部,存在 三种主要的混合操作,用于在块内和块之间进行信息融合:
- Intra-patch Mixer:在单个时间块内执行操作,处理每个时间步的内部依赖关系。这个混合层确保块内部的时间点之间可以交换信息。
- Inter-patch Mixer:在不同时间块之间进行操作,捕捉跨块的时间依赖关系。这一操作通过逐块更新和信息共享,使得模型能够感知较长时间跨度内的模式。
- Inter-channel Mixer(可选):如果数据是多变量的(如有多个通道),则启用该模块在通道之间进行混合,捕捉变量之间的相互依赖。
3. 层级之间的 Patch Merge 和 Patch Partition
TTM 的多层结构通过 Patch Merge 和 Patch Partition 操作连接不同层级。具体来说:
-
Patch Merge:在每一层中,将多个小的时间块合并成一个更大的块。这一操作通常会减少块的数量,同时增加每个块的特征维度。这种合并有助于在上层捕捉更大的时间窗口内的依赖关系。
- 举例来说,假设当前层中有 4 个块,每个块包含 4 个时间步,那么在 Patch Merge 后,可能会得到 2 个块,每个块包含 8 个时间步。
-
Patch Partition:在进入下一层之前,重新调整数据的形状,以适应下一个层次的 TSMixer 块的输入需求。通过将合并后的块重新划分,模型可以保持在较大时间窗口下的依赖建模能力。
4. 跨层关系:自适应分块和 Resolution Prefix Tuning
-
自适应分块(Adaptive Patching):随着层数的加深,块的大小逐渐增加,从而涵盖更长的时间跨度。这种自适应分块机制在每一层中灵活调整块的尺寸,以适应不同分辨率的数据特性。自适应分块确保模型可以在不同时间尺度上学习,从而在处理多分辨率数据时更具鲁棒性。
-
分辨率前缀调优(Resolution Prefix Tuning):每个块在输入到 TTM Backbone 时,都会添加一个分辨率前缀标记。这种标记为模型提供了时间分辨率的提示,使其在跨层次操作时可以识别不同的时间步长。这种跨层的分辨率前缀调优使模型能够在高分辨率和低分辨率数据之间切换,从而在同一个网络中处理多种时间分辨率的数据。
5. 最后的 Exogenous Mixer
TTM 模型在最后的阶段使用 Exogenous Mixer 将外生变量与目标变量进行混合。这个模块的作用是:
- 在跨时间步长和跨通道上整合外生变量的影响,使得目标变量的预测能够考虑外生因素的影响。
- Exogenous Mixer 会取代预测中的外生变量部分,用真实的外生变量值进行混合,并通过 TSMixer 进行跨时间和跨通道的特征提取。
总结
TTM 模型的块与块之间关系总结如下:
- 逐层特征提取:低层、中层、高层分别捕捉细粒度到粗粒度的时间依赖关系。
- 块间和块内的混合操作:TSMixer 块内使用 Intra-patch、Inter-patch 和 Inter-channel 混合操作捕捉时间和通道的依赖。
- 自适应分块与 Patch Merge:在跨层过程中逐渐增大块的大小,减少块数量,以捕捉更长时间范围的依赖。
- 跨层分辨率管理:通过分辨率前缀调优和自适应分块,使模型能够处理多种分辨率的数据。
- 外生变量整合:通过 Exogenous Mixer 在最后阶段将外生变量融入预测中,以增强模型的预测效果。
这种多层次的块结构设计,使得 TTM 模型能够在复杂的多分辨率时间序列数据中有效捕捉不同时间尺度和变量之间的依赖关系。
预训练和微调之间的关系
在 TTM 模型的架构中,预训练(Pretrain) 和 微调(Finetune) 之间的关系是一个两阶段的学习流程,用于增强模型在复杂时间序列预测任务上的表现。它们之间的关系和区别可以总结如下:
1. 预训练阶段(Pretrain Workflow)
-
输入数据:预训练阶段使用来自多分辨率的时间序列数据(如小时级、30 分钟、15 分钟等)进行训练。这些数据是单变量的(univariate),从公开的 Monash 数据集等资源中获取,共包含大约 244M 个样本。
-
数据处理和结构:
- 通过 Instance Normalization 对输入数据进行标准化,使每个通道的均值为零、标准差为一。
- 数据经过 Patching 操作被分割成小块,这些小块用于提取局部时间依赖特征。
-
TTM Backbone 和 Decoder:
- TTM Backbone:这是多层次的核心模块,包含多个 TSMixer 块,逐层提取时间序列特征。在预训练阶段,这个模块独立处理每个通道(channel-independent),以学习通道内的时间依赖性。
- TTM Decoder:解码器部分在预训练阶段也是通道独立的,用于生成单变量的预测输出。
-
预测头(Forecast Linear Head):最后输出预测的时间序列,通过 MSE 损失进行优化。
-
参数数量:预训练阶段共有大约 1M 个可学习参数。
2. 微调阶段(Finetune Workflow)
-
输入数据:微调阶段使用目标数据集,这些数据是多变量时间序列数据(multivariate),并且每个变量的分辨率可能不同。这些数据包含目标变量和外生变量。
-
数据处理和结构:
- 同样进行 Instance Normalization,使得数据标准化。
- 数据经过 Patching 处理,保留局部的时间特征,以增强对目标任务的适应性。
-
TTM Backbone(冻结)和 Decoder(通道混合):
- TTM Backbone:在微调阶段,TTM Backbone 是冻结的(freeze),也就是说它的参数不会更新。这是因为在预训练阶段已经学习到通用的时间序列模式,因此在微调时无需再次调整。
- TTM Decoder:在微调阶段,TTM Decoder 开启了 通道混合(channel mixing),可以在不同通道之间传递信息,捕捉变量间的相互依赖关系。
-
外生变量混合器(Exogenous Mixer):在需要时,可以启用 Exogenous Mixer 模块,将已知的外生变量信息与目标变量混合,以提高预测的准确性。
-
预测头:同样通过预测头输出多变量预测结果,并进行误差优化。
-
参数数量:微调阶段包含 0.1-0.3M 个可学习参数,主要用于调整解码器和外生变量混合器。
预训练与微调的关系
-
知识迁移:预训练阶段学习到时间序列的通用模式,包括周期性和季节性趋势。这些知识通过参数转移到微调阶段,帮助模型在少量目标数据上进行快速调整。
-
多分辨率建模:预训练阶段在多种分辨率上进行训练,帮助模型适应不同时间尺度的数据。这种多分辨率特性在微调阶段保持,使模型能够处理目标数据集中的多分辨率特性。
-
通道独立与通道混合:
- 预训练阶段的 通道独立 设置使模型专注于时间序列的自身模式,而不关注变量间的关系。
- 微调阶段通过 通道混合 捕捉多变量时间序列中的交互关系,从而提高在复杂多变量预测任务中的表现。
-
冻结与微调:TTM Backbone 在微调阶段被冻结,说明预训练学到的时序特征具有很好的泛化性,微调时只需调整解码器和外生变量混合器即可满足特定任务需求。
总结
- 预训练阶段:学习通用的时间序列特征,通过单变量的多分辨率数据训练 TTM Backbone,使其具备处理多分辨率时序数据的能力。
- 微调阶段:在特定的目标数据上进行少量参数调整,专注于通道间的交互(多变量特征)和外生变量的混合,从而实现特定任务的准确预测。
这种两阶段流程确保 TTM 模型既能在广泛的时间序列数据上学习到通用特征,又能在特定任务上快速适应并生成准确的预测。
分辨率 Resolution Prefix Tuning
在这里,分辨率指的是时间序列数据的时间粒度,也就是数据记录的时间间隔。例如,分辨率可以是小时级、天级、月级等。在时间序列预测中,不同分辨率的数据会捕捉不同尺度的趋势和变化模式。
分辨率的示例
假设我们有一个交通流量预测任务,记录的交通流量数据可能包括以下几种分辨率:
- 小时级分辨率:每小时记录一次交通流量数据,例如 8:00, 9:00, 10:00 等。小时级数据可以捕捉一天中高峰期和非高峰期的变化。
- 天级分辨率:每天记录一次交通流量数据,例如 2023年1月1日, 2023年1月2日 等。天级数据可以帮助模型捕捉每天流量的波动,例如工作日和周末的差异。
- 月级分辨率:每月记录一次交通流量数据,例如 2023年1月, 2023年2月 等。月级数据则能显示更长期的趋势,例如不同季节之间的差异。
在这些例子中,分辨率就是时间间隔的不同。
分辨率前缀调优的作用
是的,在 TTM 模型中,跨层关系确实包含了分辨率前缀调优(Resolution Prefix Tuning)。这个前缀的作用是帮助模型在不同层级之间传递分辨率信息,使得模型可以在多层结构中更好地适应不同的时间尺度。具体来说,Resolution Prefix Tuning 提供了一种机制,让模型在跨层操作时始终能够识别和保持数据的分辨率信息,从而在不同时间尺度上进行合理的特征提取和聚合。
Resolution Prefix Tuning 如何在跨层关系中发挥作用
-
时间分辨率标记:
- Resolution Prefix Tuning 在每个时间块(patch)前添加一个前缀,指示当前数据的时间分辨率(如 1 小时、1 天等)。
- 这个前缀标记将数据的分辨率信息嵌入到模型的输入中,使得模型在每一层都可以清楚地知道当前处理的数据是基于什么时间尺度的。
-
跨层传递分辨率信息:
- 在每一层的 TSMixer 块中,Resolution Prefix 会与时间块的数据一起传递,使得模型可以在不同的层级识别到分辨率信息。
- 这种分辨率前缀在跨层传递过程中保持不变,从而确保无论是经过 Patch Merge 还是 Patch Partition 操作,模型都能保持对分辨率的理解。
-
跨层级的分辨率适应:
- 通过在不同层次上结合分辨率前缀信息,模型能够在从低层到高层的过程中适应不同时间尺度的变化。例如,低层处理更细粒度的分辨率(如 1 小时),高层处理更粗粒度的分辨率(如 1 天)。
- 前缀的存在使得模型在每一层级的特征提取过程中,能够根据时间分辨率自适应地选择合适的特征表示方式,从而捕捉到不同时间尺度上的依赖性。
总结
在 TTM 模型的跨层关系中,Resolution Prefix Tuning 的作用是:
- 保持分辨率信息的连续性:通过跨层传递前缀,确保模型在每一层都能识别并处理特定分辨率的数据。
- 跨层适应不同时间尺度:在多层结构中,前缀帮助模型在不同时间尺度上进行特征提取,从而在模型的整个层级结构中捕捉细粒度到粗粒度的时间依赖。
- 增强泛化能力:通过分辨率前缀调优,模型可以适应多分辨率数据,从而在各种不同时间尺度的数据上获得更好的泛化效果。
因此,Resolution Prefix Tuning 是 TTM 模型中跨层关系的一部分,为模型提供了一种机制,使其能够在处理不同层级的数据时,始终保留分辨率的敏感性,从而在多层次时间序列预测中取得更好的表现。
分层的实现
是的,TTM模型的层级关系主要是通过 Patch Merge 和 Patch Partition 操作来实现的。这两个操作帮助模型在不同层级之间逐步调整时间块(patch)的大小,从而捕捉不同尺度的时间依赖关系。
Patch Merge 和 Patch Partition 如何构建层级关系
-
Patch Merge(块合并):
- 在 TTM 的每一层中,Patch Merge 操作将多个较小的时间块合并为更大的块。
- 这种合并通常会减少块的数量(降低时间分辨率)并增加块的特征维度,从而使得每个块能够包含更长时间范围的信息。
- 随着层级的加深,Patch Merge 操作让模型可以在更大时间跨度内学习依赖关系,从而捕捉到更长期的趋势和模式。
示例:假设在第一层中,每个时间块包含 4 个时间步,通过 Patch Merge,将 2 个块合并成 1 个新的块,这样新的块将包含 8 个时间步的信息。这样,随着层数加深,模型可以逐步从细粒度的短时间依赖性扩展到更大时间跨度的依赖。
-
Patch Partition(块划分):
- Patch Partition 操作发生在进入下一层之前,主要目的是将合并后的大块重新划分,使其适应下一个层级的输入需求。
- 通过这种重新划分,模型能够在不失去前一层学到的长时间依赖信息的情况下继续进行细粒度的特征提取。
示例:如果在某一层中,每个块包含 8 个时间步,经过 Patch Partition 操作后,可以将这些块划分成新的更小的时间块,再输入到下一层的 TSMixer 中进行处理。这样可以确保模型在不同层级的细粒度和粗粒度信息都能得到充分的建模。
层级关系的作用
通过交替使用 Patch Merge 和 Patch Partition 操作,TTM 模型能够实现不同层级的时间依赖性捕捉:
- 浅层:使用较小的时间块,捕捉细粒度的、局部的时间依赖关系。
- 中层:合并部分时间块后,捕捉更长时间范围的依赖关系。
- 深层:通过进一步的 Patch Merge,捕捉长时间跨度的趋势和全局依赖。
这种层级结构使得 TTM 模型可以从短期模式逐渐扩展到长期趋势,达到更精细和全面的时间序列建模效果。
TPLLM: A Traffic Prediction Framework Based on Pretrained Large Language Models
数据
框架
在这里,我们整理 TPLLM 模型的模块和公式,以便更清晰地了解其结构和计算过程。
TPLLM 模块结构
TPLLM 主要包括以下模块:
-
输入嵌入模块(Input Embedding Module)
- 该模块由两个嵌入层组成:
- Sequence Embedding Layer:使用 CNN 处理时序交通数据,提取时间依赖模式。
- Graph Embedding Layer:使用 GCN 处理道路网络的邻接矩阵,提取空间依赖模式。
- 该模块由两个嵌入层组成:
-
预训练 LLM 的微调(Fine-tuning of Pretrained LLM)
- 使用 LoRA(Low-Rank Adaptation)方法对预训练的 Transformer 结构中的每个块进行微调,以在较低的训练成本下实现良好的预测性能。
-
线性层输出(Linear Layer Output)
- 微调后的 LLM 通过一个线性层输出预测结果。
-
损失函数(Loss Function)
- 使用 L1 损失(即 Mean Absolute Error, MAE)来应对传感器数据中的异常值。
公式解读
1. Graph Embedding 公式
Graph Embedding Layer 使用 GCN 计算空间依赖。公式如下:
-
邻接矩阵加单位矩阵:
\[\hat{A} = A + I \]其中 ( A ) 是原始邻接矩阵,( I ) 是单位矩阵。
-
GCN 计算图嵌入:
\[G_E^F(X) = \text{ReLU}(\tilde{D}^{-\frac{1}{2}} \hat{A} \tilde{D}^{-\frac{1}{2}} XW + b) \]其中 ( \tilde{D} ) 是度矩阵,( W ) 是可学习权重矩阵,( b ) 是偏置项。
2. Sequence Embedding 公式
Sequence Embedding Layer 使用 CNN 计算时序依赖:
- 序列嵌入计算:\[S_E^F(X) = \text{Conv1d}_F(X) \]其中 ( \text{Conv1d}_F ) 是 1D 卷积操作,提取时间序列特征。
3. 嵌入融合和输入映射
在得到图嵌入和序列嵌入后,将二者进行融合并通过线性映射调整到与 LLM 兼容的形状:
-
融合后的嵌入:
\[M = \text{Linear}_D(\text{LN}(\text{ReLU}(G_E^F(X) + S_E^F(X)))) \]其中 ( \text{LN} ) 表示层归一化(Layer Normalization),( \text{Linear}_D ) 是一个线性层,将维度调整到 ( D )。
-
最终嵌入形式:
\[\text{Emb}(X) = \{ m_{i,j} | 0 \leq i < N, 0 \leq j < D \} \]
4. LoRA 微调
LoRA 是一种有效的参数调整方法,通过低秩矩阵分解调整 LLM 模型的参数。假设 Query 和 Key 的维度为 ( d \times k ),LoRA 使用以下公式进行调整:
-
LoRA 调整:
\[h = W_0 h_0 + \frac{\alpha}{r} B C h_0 \]其中 ( W_0 ) 是预训练的权重矩阵,( B ) 和 ( C ) 是低秩矩阵,( \alpha ) 控制学习速率,( r ) 是低秩矩阵的秩。
-
经过 LoRA 微调的 LLM 表示为:
\[H = \text{LLM}(\text{Emb}(X)) \]
5. 输出线性层
最终的输出通过线性层进行变换,确保与所需的输出形状匹配:
- 输出计算:\[Y = \text{ReLU}(\text{Linear}_T(H)) \]其中 ( \text{Linear}_T ) 将输出映射到目标维度 ( T' )。
6. 损失函数
采用 L1 损失,即 MAE 来衡量预测值与真实值的差异:
- 损失函数定义:\[\text{Loss}(y_i, \hat{y}_i) = |y_i - \hat{y}_i| \]
总结
TPLLM 模型的架构中,Graph Embedding Layer 和 Sequence Embedding Layer 分别提取空间和时间特征,并通过融合嵌入层与 LLM 的结构进行关联。LoRA 微调方法帮助预训练的 LLM 高效适应时空预测任务,而输出通过线性层映射到最终的预测结果。使用 MAE 损失函数来优化模型,使其能有效地处理交通预测任务中的异常值问题。
UniTime: A Language-Empowered Unified Model for Cross-Domain Time Series Forecasting
数据
框架
从图片的内容中可以看出,UniTime 模型通过多个模块和公式来实现对跨领域时间序列数据的端到端学习。以下是各模块和公式的详细解读:
模型结构概述
UniTime 模型包括三个主要部分:
- 时间序列标记器(Time Series Tokenizer):用于预处理时间序列信号,将原始时间序列数据转换为时间序列标记(tokens)。
- Language-TS Transformer:结合了语言模型(如 GPT2)和时间序列特征的 Transformer,用于对不同领域的数据进行分类识别,并对时间序列和文本模式进行联合学习。
- 解码器(Decoder):生成预测结果,用于长时间预测,并避免了传统迭代预测中误差积累的问题。
模块和公式
1. 时间序列标记器(Time Series Tokenizer)
该模块分为两个子模块:
-
时间序列分块(Time Series Patching):通过分块(patching)将原始的时间序列数据聚合为时间序列标记,减少计算量并捕获局部语义信息。公式表示为:
\[x_{r,i}^{L_t} = \{x_{r,i,1}, x_{r,i,2}, ..., x_{r,i,L_t}\} \in \mathbb{R}^{L_t} \]其中,$ x_{r,i}^{L_t} $ 表示时间序列的分块数据。
-
Masking 和 Gated Fusion:生成掩码向量 ( m_{r,i}^{L_t} \in {0,1}^{L_t} ),用来控制时间步的掩码比例。然后通过线性投影将数据映射到隐藏空间。再使用门控融合操作(Gated Fusion)来融合掩码信息和时间序列标记,公式如下:
\[Z_{r,i}^{N_t} = \text{Gate} \odot Z_{r,i}^{N_t} + (1 - \text{Gate}) \odot M_{r,i}^{N_t} \]\[\text{Gate} = \sigma(Z_{r,i}^{N_t} W_{g1} + M_{r,i}^{N_t} W_{g2} + b_g) \]其中,$ \sigma $ 是 sigmoid 激活函数,$ W_{g1}, W_{g2} $ 和 $ b_g $ 是可学习参数。
2. Language-TS Transformer
-
作用:用于联合学习文本描述(领域指令)和时间序列标记。通过使用预训练的语言模型(如 GPT2)作为 Transformer 的基础结构,来对时间序列和语言指令进行跨模态的联合学习,解决领域混淆问题。
-
输入处理:将领域指令和时间序列标记连接成一个序列并输入 Transformer。输入表示为:
\[H_{r,i}^{I_r + N_r} = \left[ E_{r,i}^{I_r}; Z_{r,i}^{N_r} \right] + W_{\text{pos}} \]其中,$ W_{\text{pos}} $ 是位置嵌入,用于维持时间和文本数据的顺序信息。
-
Transformer 层计算:通过多层自注意力机制来处理输入数据。注意力机制定义为:
\[\text{Attention}(H_{r,i}^{l-1}) = \text{softmax} \left( \frac{Q^l {K^l}^T}{\sqrt{d_k}} + C \right) V^l \]其中,$ Q^l, K^l, V^l $ 分别是查询、键和值矩阵,$ d_k $ 是键的维度,$ C $ 是因果掩码矩阵,用于保持时间序列的因果性。
3. 解码器(Decoder)
解码器直接生成长期预测结果,避免迭代误差积累。由于 Transformer 的输出具有不同长度的标记序列,因此使用填充标记(Padding Token)以确保序列长度一致。
-
填充处理和轻量级 Transformer:填充后的序列长度固定为 $ R $,并通过一个轻量级的 Transformer 处理,公式如下:
\[H_{r,i}^R = \text{LightTrans}(\text{Pad}(H_{r,i}^{I_r + N_r})) \]- 其中,$ \text{Pad}$ 操作是填充,$ \text{LightTrans} $ 是轻量级 Transformer,用于处理填充后的序列。
-
输出预测生成:将轻量级 Transformer 的输出通过线性层生成最终的预测结果:
\[\hat{x}_{r,i}^{O} = \text{Linear}(\text{Flatten}(H_{r,i}^R)) \]其中,$ O $ 表示最大预测长度,通过将序列展平后通过线性层得到预测输出。
4. 损失函数和训练目标
使用均方误差(MSE)作为训练损失函数,用于衡量预测结果和真实值之间的差异。损失函数定义为:
其中,$ c_r $ 表示通道数,$ T_r $ 是预测时间步数,$ L_r $ 是输入时间步数。
总结
- Time Series Tokenizer 预处理时间序列数据,通过分块、掩码和融合操作,将时间序列数据转换为适合 Transformer 处理的标记。
- Language-TS Transformer 使用预训练语言模型对跨领域指令和时间序列数据进行联合学习,通过注意力机制提取时间和文本模式。
- Decoder 生成最终的预测结果,避免传统迭代方法中的误差积累。
UniTime 模型通过多种方法来实现跨领域时间序列数据的高效建模和预测,处理不同领域和数据模式的挑战。
mask机制
在 UniTime 模型中,掩码机制和注意力机制的作用如下:
-
掩码机制:
- 目的:掩码机制主要用于处理重构损失,帮助模型在训练过程中更好地学习历史数据的结构。通过对部分时间步进行掩码操作,模型被迫根据可见的数据推测缺失的部分,从而增强其对时间序列数据的理解和泛化能力。
- 预测时的掩码处理:在实际预测阶段,模型通常不会使用掩码,因为预测的目标是根据过去的时间序列来推断未来的值。在这种情况下,所有的输入数据都是已知的,因此不需要掩码操作。
-
Transformer 的注意力机制:
- 在 UniTime 模型中,Transformer 用于不同时间序列之间的注意力计算。具体来说,它的设计目的是能够捕捉不同时间步长的依赖关系和模式,从而更好地对未来的数据进行预测。
- 跨域注意力:由于该模型可以在不同领域(如气象、金融等)之间进行通用预测,因此注意力机制能够帮助模型在处理跨领域数据时,自动识别和关注特定领域中的重要模式。
这种设计使得 UniTime 模型能够更有效地进行时序数据的重构和预测,并且能够在不同领域的时间序列数据上实现良好的性能。
gate和mask的使用,增强数据的泛化性能
这条公式描述了 门控融合(Gated Fusion) 操作,用于在时间序列数据和掩码之间进行信息融合。它的主要目的是控制哪些信息需要被保留或忽略,以便模型能够更好地从带有掩码的时间序列数据中提取有效的特征。
公式解读
公式包含两部分:
-
融合公式:
\[Z_{r,i}^{N_t} = \text{Gate} \odot Z_{r,i}^{N_t} + (1 - \text{Gate}) \odot M_{r,i}^{N_t} \]- 这里的 $ Z_{r,i}^{N_t} $ 是未经掩码的时间序列数据。
- $ M_{r,i}^{N_t} $ 是带有掩码的时间序列数据。
- $ \odot $ 表示逐元素乘积。
- Gate 控制每个位置的信息流动,如果 Gate 值接近 1,则保留时间序列信息 $ Z_{r,i}^{N_t} $;如果接近 0,则使用掩码数据 $ M_{r,i}^{N_t} $ 来替换。
-
Gate 的计算:
\[\text{Gate} = \sigma(Z_{r,i}^{N_t} W_{g1} + M_{r,i}^{N_t} W_{g2} + b_g) \]- 这里 $ W_{g1} $ 和 $ W_{g2} $ 是可学习的权重矩阵,$ b_g $ 是偏置。
- $ \sigma $ 是 sigmoid 函数,将 Gate 的值限制在 0 和 1 之间。
- Gate 的值由原始时间序列数据 $ Z_{r,i}^{N_t} $ 和带掩码的时间序列数据$ M_{r,i}^{N_t} $ 共同决定。这使得模型能够基于数据特征动态地调整信息的权重。
Gate 和 Mask 的作用
- Mask:在模型的训练过程中,掩码 $ M_{r,i}^{N_t} $ 通常用于阻止模型过度依赖某些位置的具体值,从而提高模型的泛化能力。掩码通过隐藏部分时间步的信息,让模型学会利用可见的信息推测缺失的部分。
- Gate:门控机制则用于动态地选择哪些信息应该保留或忽略。通过与掩码相结合,Gate 控制了掩码与原始数据之间的权重,使得模型在不同的时间步上可以有选择地使用掩码信息或者原始信息。
总结
这条公式实现了一种自适应的信息融合,在带掩码的时间序列数据上引入门控机制,控制模型从原始时间序列中提取的特征。这样设计可以增强模型对关键时间步的关注,同时减少对不重要信息的依赖,从而提高模型在跨领域时间序列预测中的泛化能力。
Timer: Generative Pre-trained Transformers Are Large Time Series Models
数据
框架
这里是 UniTime 模型的 训练策略、模型设计 及 自回归生成预训练 的解读:
1. 训练策略(Training Strategy)
由于时间序列数据的异质性(如振幅、频率、平稳性等),将它们统一为固定上下文长度的输入不容易。模型采用了一种 单一序列(S3)格式,将多个数据集的时间序列转换成具有固定上下文长度的单一序列样本。这种策略有助于在跨不同数据集和领域的预训练中保持时间序列的模式一致性。具体步骤如下:
- 标准化与合并:对不同的时间序列进行标准化处理,将它们合并成一个单变量序列池。
- 窗口采样:从单变量序列池中使用滑动窗口采样,以获取统一上下文长度的单一序列(S3)样本。
- 生成目标:预训练阶段采用自回归生成目标,模型通过学习生成序列的下一个时间步来预测未来值。
2. 模型设计(Model Design)
UniTime 采用了 decoder-only Transformer(仅解码器 Transformer),类似 GPT 这样的自回归生成模型。这种设计使得模型能够基于历史数据逐步生成未来值,同时保留了时间序列的因果性。模型通过对历史数据使用 因果掩码(causal masking) 确保序列的生成顺序,防止未来信息泄露。
- 编码与解码:输入时间序列的编码表示为 $ s_i $,通过 Transformer 模块的自注意力机制,生成预测 $\hat{s}_{i+1} $。
3. 公式解读
公式 (2) - 时间序列分段
每个时间序列样本被分为长度为 $ S $ 的片段:
这一步将时间序列划分为多个连续片段,使得模型可以更有效地捕捉局部时间依赖性。
公式 (3) - 解码器 Transformer 层
在解码器中,每个时间片段 $ s_i $ 经过嵌入层和时间戳嵌入(TE)后,输入到 Transformer 块中:
其中,\(W_e\)是嵌入矩阵,\(\textit{TE}_i\) 是时间戳嵌入,\(\text{TrmBlock}\) 表示 Transformer 层。
公式 (4) - 生成目标(自回归生成)
通过自回归方式,模型预测每个片段的下一个时间步,并计算均方误差损失:
这个目标确保每个时间片段的预测逐步生成后续时间步,避免了误差积累问题。
4. 自回归生成与多步预测
自回归生成方式使得模型能够处理不固定的上下文长度,并在多步预测中具有更好的泛化能力。与传统多步预测的误差累积不同,自回归预训练的 UniTime 模型在大规模数据上表现出色,能够与直接多步预测模型媲美。
TI-MAE: SELF-SUPERVISED MASKED TIME SERIES AUTOENCODERS
数据
框架
这里展示了 Ti-MAE(Time-series Masked Autoencoder) 模型的结构。Ti-MAE 模型主要包括两个部分:编码器(Encoder)和解码器(Decoder),这两个模块通过掩码机制对时间序列数据进行重构。
模块解读
1. 编码器(Encoder)
编码器的任务是从带有掩码的输入时间序列中提取特征。编码器模块包括以下几个步骤:
- 输入嵌入(Input Embedding):对输入时间序列进行嵌入,通过一维卷积层来提取时间步之间的局部特征。
- 位置编码(Positional Encoding):为了引入时间步的顺序信息,加入了固定的正弦位置编码。这种编码方式确保了模型能够理解序列中不同位置的相对顺序。
- 随机掩码(Random Masking):在输入嵌入后,对时间序列的部分时间步进行随机掩码,具体来说,将一定比例的时间步数据置为掩码。这种掩码机制确保模型在训练过程中能够学习到基于不完整信息进行重构的能力。
- Transformer Blocks:包含多层 Transformer 编码器块,每一层包含多头自注意力(Multi-Head Self-Attention)、前馈网络(Feed-Forward Network)和层归一化(LayerNorm)等。这些块仅作用在可见的(未被掩码的)时间步上,以减少计算成本。
编码输出:编码器将处理过的可见时间步嵌入转换为特征表示,传递给解码器。
2. 解码器(Decoder)
解码器的任务是根据编码器生成的特征和被掩码的位置重构原始时间序列。解码器模块包括以下几个步骤:
- 解码器输入嵌入(Decoder Input Embedding):解码器接收编码器输出的可见嵌入,并为掩码的位置填充随机初始化的掩码嵌入,以形成完整的序列输入。
- 位置编码:再次加入位置编码,确保解码器能够识别原始序列中的位置信息,帮助更好地重构时间步。
- Transformer Blocks:解码器也包含多层 Transformer 块,与编码器类似,但其规模更小。解码器基于完整序列进行操作,包括原始可见的和填充掩码的时间步。
- 投影层(Projection Layer):解码器最后一层是一个线性投影层,将重构的嵌入映射回原始时间序列的值。模型在所有时间步上输出重构的时间步值。
损失函数
Ti-MAE 的训练目标是最小化重构损失,具体来说,使用均方误差(MSE)来比较原始时间序列和重构序列之间的差异。损失仅计算在掩码时间步上,以鼓励模型通过上下文信息来准确预测被掩盖的值。
主要特性和优势
- 高掩码率:与语言或视觉掩码编码器相比,Ti-MAE 适合高掩码率(例如 75%),以充分利用时间序列的局部特性。
- 轻量化解码器:由于解码器仅用于重构被掩码的部分,因此设计得比编码器更小,从而降低计算复杂度。
- 无任务特定嵌入:模型不依赖特定任务的嵌入设计,避免了对数据集的强依赖,适用于多种时间序列任务。
训练与预测一致性
在训练时,Ti-MAE 利用掩码学习在信息不完整的情况下重构序列;在预测阶段,解码器可以直接生成未来的值,这种一致性有助于模型在真实预测任务中保持稳健的表现。
与autoencoder的相似性
是的,Ti-MAE 的设计确实受到了自编码器(Autoencoder)的启发,它的结构和思路在很多方面都和自编码器类似,但有所改进和专门针对时间序列的适配。
类似点
-
编码-解码结构:Ti-MAE 使用了典型的编码器-解码器(Encoder-Decoder)结构。编码器负责将输入时间序列映射到一个低维的特征空间中,而解码器则尝试从编码器输出的特征中重构原始序列。这和自编码器的基本架构一致。
-
数据压缩和特征提取:编码器的作用类似于自编码器中的编码部分,即学习时间序列数据的压缩表示并提取其特征。通过随机掩码(masking),Ti-MAE 强化了编码器在不完整数据下的特征提取能力。
-
重构目标:Ti-MAE 和自编码器一样,都以最小化重构损失为目标。具体来说,使用掩码来选择部分时间步的数据,模型学习根据部分信息重构丢失的时间步,从而鼓励模型捕捉全局和局部的时间依赖关系。
不同点
-
随机掩码机制:与传统自编码器相比,Ti-MAE 引入了高比例的随机掩码。这种掩码设计类似于视觉或语言模型中的 Masked Autoencoder(MAE),而不是让模型重构整个输入。通过随机掩盖大量时间步的数据,模型可以学到如何利用邻近的时间步信息填补空缺,从而增强模型的泛化能力。
-
轻量化解码器:在 Ti-MAE 中,解码器的结构通常比编码器更小、更轻量化。这样做的目的是减少计算复杂度,因为解码器主要用于重构掩码区域,不需要处理完整的数据。这一点也不同于传统自编码器,传统自编码器的解码器通常和编码器结构对称。
-
适应高掩码率的设计:在语言和视觉任务中,掩码率通常较低(例如,BERT 的掩码率为 15%)。而 Ti-MAE 针对时间序列特性,能够处理较高的掩码率(如 75%),这是因为时间序列数据通常具有较强的局部连续性,模型可以更好地利用这种特性进行推测。
-
训练和推理的一致性:在训练过程中,Ti-MAE 利用掩码机制训练模型对缺失信息的重构能力。在推理过程中,模型可以直接生成未来时间步的数据,而不依赖于掩码,这种设计使得训练和预测阶段更加一致。这一点与许多自编码器的设计不同,自编码器通常只用于数据压缩或特征提取,而不直接用于生成未来数据。
总结
Ti-MAE 借鉴了自编码器的思想,通过编码-解码结构和重构损失来学习特征表示。然而,它通过引入高掩码率、轻量化解码器以及专门针对时间序列设计的掩码重构策略,使得模型在处理时间序列数据时更具优势。这种设计能够让模型从部分信息中学习全局和局部模式,从而增强了泛化能力和对未来时间步的预测能力。
TIME-LLM: TIME SERIES FORECASTING BY REPROGRAMMING LARGE LANGUAGE MODELS
数据
框架
模型框架解析
1. 时间序列数据的预处理
如模型框架图中的步骤①和②所示,输入的时间序列数据首先通过 RevIN 进行归一化处理,随后被切分成不同的 patch,并映射到隐藏空间。时间序列数据和自然语言文本数据在表达方式上存在显著差异,两者属于不同的模态。时间序列既不能直接编辑,也不能无损地用自然语言描述,因此,直接引导(prompting)LLM 理解时间序列面临巨大挑战。为了克服这一问题,需要将时序输入特征对齐到自然语言文本域。
2. 不同模态对齐
对齐不同模态的一个常见方法是 cross-attention,如图中的步骤③所示。通过将时序输入特征作为 Query,所有词的 embedding 作为 Key 和 Value,进行 cross-attention 操作,实现两者的对齐。然而,LLM 的词汇表通常非常大,直接将时序特征对齐到所有词上会导致效率低下,并且也不是所有词都与时间序列有语义对齐的关系。
为了解决这个问题,研究人员对词汇表进行了线性组合以获取文本原型。这些文本原型的数量远小于原始词汇量,并且可以组合来表示时间序列数据的变化特征,例如「短暂上升」或「缓慢下降」。
3. 提示作为前缀(Prompt-as-Prefix)
为了充分激活 LLM 在特定时序任务上的能力,这项工作提出了提示做前缀(Prompt-as-Prefix, PaP)的范式。这是一种简单且有效的方法。最近的研究表明,其他数据模态(例如图像)可以无缝地集成到提示的前缀中,从而基于这些输入进行有效的推理。受此启发,研究人员提出了一个新的思路:将时间序列数据集的一些先验信息,以自然语言的方式作为前缀提示,与对齐后的时序特征拼接后喂给 LLM,从而提升预测效果。
4. 两种提示方法
上图展示了两种提示方法:
-
Patch-as-Prefix:在这种方法中,语言模型被提示用自然语言预测时间序列中的后续值。然而,这种方法有一些约束:
- 语言模型在无外部工具辅助下处理高精度数字时通常表现出较低的敏感性,这给长期预测任务的精确处理带来了重大挑战;
- 对于不同的语言模型,需要复杂的定制化后处理,因为它们在不同的语料库上预训练,并且可能在生成高精度数字时采用不同的分词类型。这会导致预测结果以不同的自然语言格式表示,例如 [‘0’, ‘.’, ‘6’, ‘1’] 和 [‘0’, ‘.’, ‘61’],表示0.61。
-
Prompt-as-Prefix:这种方法可以有效规避上述问题。在实践中,研究人员确定了构建有效提示的三个关键组件:
- 数据集上下文:为 LLM 提供关于输入时间序列的基本背景信息,有助于模型理解特定领域的数据特征;
- 任务指令:指示模型完成不同的下游任务;
- 统计描述:例如趋势、时延等特征,帮助 LLM 更好地理解时序数据的特性。
5. 输出投影
在执行输出投影时,将补丁和前缀提示的嵌入通过冻结的 LLM,如图示中的步骤完成,通过丢弃前缀部分并提取输出表示,将其进行展平和线性投影,以获得最终的预测结果。
Model Reprogramming是什么
是的,在“模型重新编程”中,大型预训练模型通常是完全冻结的。也就是说,大模型的参数不会在训练过程中发生变化,保持“frozen”状态。这种方法的特点是:
-
参数冻结:大模型在重新编程过程中保持参数不变,这避免了大量参数更新所需的计算资源和内存消耗。冻结参数也使得模型适用于低资源设置,适合资源有限的环境。
-
轻量级适配层:重新编程的关键是引入少量新参数或轻量级的适配模块(如 LoRA、Adapter、提示嵌入等),这些模块通常比微调整个模型所需的参数少得多。它们在冻结的主模型基础上添加,用于特定任务的数据适配。比如,可以在注意力层或最后一层添加小型模块来处理特定任务的输入。
-
跨模态适配:通过将 NLP 预训练模型适配到时间序列或其他数据模态,重新编程能够有效地迁移已有的语言知识到新任务上。尽管主模型的参数被冻结,通过适配层的设计,模型可以在新任务中获得良好的表现。
-
高效性和灵活性:由于不需要更新大模型的所有参数,重新编程方法更加高效,可以在计算资源有限的情况下实现快速部署。此外,通过不同的适配模块组合,重新编程允许灵活调整模型以适应各种任务需求。
总结
模型重新编程(reprogramming)的核心思想是,通过在冻结的预训练模型上添加轻量级适配模块来处理新任务,而不改变主模型的参数。这样既能利用大型预训练模型的丰富知识,又避免了大规模微调的开销,非常适合处理新领域或模态的数据。
你说得对,从图示来看,这个模型重新编程的策略似乎确实是采用了Adapter和提示嵌入(Prompt Embedding),而不是 LoRA。让我们更具体地看看这两种方法在重新编程过程中的作用:
1. Adapter
- Adapter是一种在冻结大模型参数的前提下添加的小型模块,通常插入在模型的各层之间(例如,Transformer 层之间)。这些模块包含少量的可训练参数,用于捕捉任务特定的特征。
- 在模型重新编程中,Adapter模块帮助预训练的模型适应特定任务,而不需要修改原有模型的主干参数。它们在特定任务的输入数据上进行微小调整,从而在保持大模型知识的同时,为新任务提供足够的适配性。
- 优点:Adapter模块非常轻量,能够高效地完成跨任务的迁移。这种结构允许模型在任务间快速切换,只需训练和插入适当的 Adapter 模块。
2. 提示嵌入(Prompt Embedding)
- 提示嵌入(Prompt Embedding)是一种直接在模型输入中嵌入特定任务的提示信息的方式,用来引导大模型理解任务的语境。
- 在重新编程方法中,提示嵌入通常用于提供任务的上下文或领域信息。例如,对于时间序列任务,提示可以嵌入关于时间步长、特征维度、任务类型(预测、分类等)的信息,以帮助模型理解数据的结构。
- 优点:提示嵌入可以在不改变模型架构的情况下,提供有关任务的直接指引。它相当于为模型提供了“任务说明”,使得模型可以根据这些提示调整输出,且不需要重新训练或微调大模型的参数。
总结
在这种重新编程方法中,通过Adapter模块和提示嵌入,可以在冻结大模型的基础上,利用轻量的参数扩展和任务提示来适应新的时间序列任务。这种方法的优点是能够在最大程度上保留预训练语言模型的知识,同时在目标任务上取得良好的效果。相比于 LoRA,这种组合更适合在参数完全冻结的情况下实现高效的任务适配。
Transferable Graph Structure Learning for Graph-based Traffic Forecasting Across Cities
数据
好的,我将补充关于 $ \mathbf{X}_S $ 的详细信息,并重新整合内容:
在交通预测的跨城市迁移学习框架中,通过对交通数据的图结构建模和对不同城市间信息的迁移,可以实现对数据较少的目标城市的有效预测。以下是核心概念和公式的详细解析:
定义1:图结构的交通数据
交通数据被表示为一个图结构数据集 $ \mathcal{D} = (\mathcal{V}, \mathbf{X}, \mathbf{A}) $,其中:
- $ \mathcal{V} $:节点集合,通常代表传感器或监测点(例如交通摄像头或交通流量监测设备)。
- $ \mathbf{X} \in \mathbb{R}^{|\mathcal{V}| \times T} $:时序数据矩阵,包含每个节点在 ( T ) 个时间步的观测数据(例如车流量、交通速度等)。矩阵的行表示不同的节点数,列表示时间步长 ( T )。
- $ \mathbf{A} \in {0,1}^{|\mathcal{V}| \times |\mathcal{V}|} $:邻接矩阵,表示节点之间的依赖关系。值为 1 表示两个节点之间有直接连接,0 表示无连接。
在这个图结构中,单个节点 $ v $ 的时序数据可以表示为向量 $ \mathbf{x}_v \in \mathbb{R}^T $。
定义2:用于交通预测的迁移学习
在跨城市的迁移学习任务中,数据源分为源城市和目标城市的数据集:
- 源城市的交通数据 $ \mathcal{D}_S = (\mathcal{V}_S, \mathbf{X}_S, \mathbf{A}_S) $:
- $ \mathbf{X}_S $:源城市的时序数据矩阵,包含在多个时间步 ( T_S ) 中对所有节点的观测。具体而言,( \mathbf{X}_S ) 中的每一行代表源城市中一个传感器(节点)在不同时间步的观测数据。
- 由于源城市拥有更充足的数据和更长的时间观测序列 ( T_S ),因此 ( T_S \gg T_T )(目标城市的时间步长)。
- 目标城市的交通数据 $ \mathcal{D}_T = (\mathcal{V}_T, \mathbf{X}_T, \mathbf{A}_T) $:
- $ \mathbf{X}_T $:目标城市的时序数据矩阵,时间步长相对较短,仅有 ( T_T ) 个时间步。
目标是利用源城市丰富的时序数据 $ \mathbf{X}S$ 来构建一个迁移模型$ f\theta $,使其在目标城市的交通预测上具备良好性能。预测公式如下:
- 其中,( k_0 ) 表示预测的时间窗口,( k_1 ) 表示模型输入的时间窗口。
损失函数
为了优化模型的预测效果,损失函数定义为:
其中 $ \mathcal{L}_{\text{err}} $ 是误差度量(例如均方误差或绝对误差),用于衡量模型预测值和真实值之间的差异。
定义3:用于交通预测的可迁移结构学习
为了更好地适应目标城市的特性,定义3引入了可迁移结构学习的概念,不仅训练预测模型 ( f_\theta ),还联合学习一个结构生成器 ( f_\phi ),用于生成更适合目标城市的邻接矩阵。
具体定义如下:
- 目标:训练一个结构生成器 $f_\phi $ 和预测模型 $ f_\theta $,在目标城市生成自适应的邻接矩阵 $ \hat{\mathbf{A}}_S(\phi) $ 和 $ \hat{\mathbf{A}}_T(\phi) $,以优化模型的泛化能力。
公式如下:
这种方法利用了源城市丰富的数据 $ \mathbf{X}_S $ 和自适应生成的结构信息 $ \hat{\mathbf{A}}_T(\phi) $,在目标城市的预测任务中获得更好的表现。
优势
- 联合优化:通过联合训练 $f_\phi $ 和 $ f_\theta $,模型能够在目标城市生成更为合适的结构,从而提升迁移预测效果。
- 自适应结构生成:通过生成器 $ f_\phi $ 来创建自适应的邻接矩阵,避免了仅使用预定义结构带来的噪声和适配性问题。
总结
通过以上定义和公式的整合,这一跨城市交通预测框架的核心在于:
- 图结构表示交通数据:在图结构中捕捉交通网络的拓扑信息和时序动态。
- 迁移学习模型:通过源城市丰富的时序数据 $ \mathbf{X}_S $ 和邻接结构 $ \mathbf{A}_S $,优化在目标城市的预测性能。
- 联合结构学习:通过联合优化生成器 $ f_\phi $ 和预测模型 $ f_\theta $,动态生成适用于目标城市的结构,进一步提升跨城市的泛化能力。
这种方法为跨城市的交通预测提供了一个系统框架,借助源城市的数据和结构信息,帮助目标城市在数据稀少的情况下实现高效的预测。
框架
TransGTR 模型:从训练到预测的完整流程
TransGTR 是一种跨城市的可迁移图结构学习框架,旨在通过源城市丰富的数据来改善目标城市的交通预测效果。其框架包括三个主要组件:
- 节点特征网络(Node Feature Network)
- 结构生成器(Structure Generator)
- 预测模型(Forecasting Model)
以下是 TransGTR 模型从训练到预测的完整流程。
1. 模型组件
1.1 节点特征网络 \(f_{\theta_{nf}}\)
节点特征网络负责从源城市的长时间序列特征和目标城市的短时间序列特征中学习城市无关的节点特征,以使这些特征能够在不同城市之间共享。
- 输入:长时间序列 \(x \in \mathbb{R}^{L \times P}\) 和短时间序列 \(x' \in \mathbb{R}^{L_{\text{short}} \times P}\)。
- 损失函数:通过知识蒸馏最小化长短时间序列特征之间的距离。
其中:
-
\(x_{\text{enc}} = f_{\theta_{nf}, S}(x)\) 是长时间序列的编码特征。
-
\(x_{\text{enc}}' = f_{\theta_{nf}}(x')\) 是短时间序列的编码特征。
-
\(\| \cdot \|_2\) 表示 \(L_2\) 距离。
-
优化目标:最小化掩码自编码损失和特征对齐损失的组合。
1.2 结构生成器 \(f_{\phi}\)
结构生成器使用节点特征网络生成的特征来构造源城市和目标城市的图结构:
通过结构生成器 \(f_{\phi}\),将节点特征转换为图结构:
在训练过程中,通过空间特征正则化 \(L_{\text{reg}}\) 最小化源城市和目标城市空间特征的分布差异:
其中:
- \(S_{S, m}\) 和 \(S_{T, m}\) 分别表示源城市和目标城市在第 \(m\) 层提取的空间特征。
- \(d(\cdot)\) 表示特征距离度量函数。
时间去耦正则化
为了减少时间动态信息带来的空间特征分布差异,设计了去耦模块:
其中,\(H_m\) 是对应的时间特征,\(S_m\) 的非动态部分用于正则化。
1.3 预测模型 \(f_{\theta}\)
预测模型使用生成的图结构 \(\hat{A}(\phi)\) 对输入的时间序列数据进行多步预测。
- 输入:时间序列数据 \(S_0 = [X^{t-k_1+1}, \dots, X^t]\) 和图结构 \(\hat{A}(\phi)\)。
- 模型结构:预测模型通常包含多层时空模块。
对于第 \(m\) 层:
- 时间特征提取(Temporal Layer):
- 空间特征提取(Spatial Layer):
- 输出预测:经过 \(M\) 层堆叠的时空模块后,最终特征 \(S_M\) 通过回归器得到未来 \(k_0\) 个时间步的预测值:
2. 训练目标
TransGTR 的联合优化目标为:
其中:
- \(L_S\) 表示在源数据上计算的预测误差。
- \(\lambda_r\) 是用于平衡预测误差和正则化项的超参数。
3. 总结
TransGTR 通过联合学习源城市和目标城市的图结构,能够在数据稀缺的目标城市实现更好的交通预测效果。其核心是通过节点特征网络、结构生成器和预测模型的协同作用,在跨城市的情况下实现图结构的有效迁移。
您的观察是正确的,这里确实可以视为真正的监督学习部分。前面的部分(如节点特征网络和结构生成器)主要是通过自监督或无监督的方法,学习城市无关的特征表示以及跨城市的图结构。这种方法通过对齐和正则化来生成一个可以迁移的基础结构,便于在目标城市上应用。
在预测模型部分,真正的监督学习才发挥作用。这部分利用先前学习到的图结构 \(\hat{A}(\phi)\) 和时间序列数据 \(S_0\),通过多层的时空模块来进行多步预测。这个过程需要通过带有标签的训练数据,通过最小化预测误差(如MSE损失等)来优化模型参数。简单来说:
-
前面的部分是准备阶段:主要关注如何生成跨城市迁移的图结构和节点特征,增强模型的泛化能力。这里使用的是无监督或自监督的方式,比如通过最小化节点特征距离或图结构正则化。
-
预测模型才是最终的监督学习任务:使用准备好的图结构和特征进行真正的时间序列预测,并使用目标值进行训练,从而优化模型的预测性能。
这种分阶段的设计能够帮助模型在新城市数据不足的情况下依然取得较好的预测效果,因为关键的图结构和节点特征已经在源城市数据上得到了有效的学习和迁移。
TimeSiam: A Pre-Training Framework for Siamese Time-Series Modeling
数据
框架
用的是第三种注意力机制,curr作query
TimeSiam 模型框架解析
1. 模型概述
TimeSiam 是一个基于孪生网络的框架,旨在捕获时间上相隔较远的子序列之间的关系。主要模块包括:
- 孪生子序列采样:从同一时间序列中构造两个具有时间间隔的子序列,分别为过去子序列和当前子序列。
- 孪生建模:通过引入可学习的谱系嵌入,增强模型对时间依赖关系的学习能力。
2. 预训练过程
TimeSiam 的预训练过程通过一个简单的掩码增强策略,来构建过去到当前的重构任务。
2.1 孪生子序列采样
TimeSiam 通过随机采样生成孪生子序列对。公式如下:
其中,( x^{\text{past}} ) 和 ( x^{\text{curr}} ) 分别代表过去和当前的子序列。掩码增强策略有助于模型学习子序列间的关系并提高泛化能力。
2.2 孪生建模
TimeSiam 引入了可学习的谱系嵌入(lineage embeddings),用于增强模型对不同时间间隔的子序列对的区分能力。给定过去子序列 ( x^{\text{past}} ) 和当前子序列 ( \tilde{x}^{\text{curr}} ),其嵌入表示如下:
其中,( \oplus ) 表示将嵌入加上对应的谱系嵌入。
2.3 编码与重构
孪生编码器对掩码增强后的孪生子序列对进行编码,并使用交叉注意力机制来重构当前序列。具体编码过程如下:
重构过程中使用交叉注意力层和自注意力层来生成最终的重构特征 ( h_d ):
重构损失函数为:
3. 微调过程
在微调阶段,TimeSiam 可以在不同的输入设置下增强模型的时间依赖性学习能力。
3.1 固定输入-多谱系嵌入(Fixed-Input-Multiple-Lineages)
在固定输入设置中,对每个输入序列分配一个谱系嵌入,从而增强对不同时间关系的学习。
3.2 扩展输入-多谱系嵌入(Extended-Input-Multiple-Lineages)
在扩展输入设置中,输入序列的长度增加,TimeSiam 通过多个谱系嵌入来保留时间顺序的信息。结合多个子序列的表示,最终表示如下:
其中,( h_{e,i} ) 是每个子序列的嵌入表示。
4. 总结
TimeSiam 通过预训练阶段的孪生子序列建模和微调阶段的谱系嵌入机制,有效地增强了时间序列的时间依赖性学习能力。模型能够更好地适应具有不同时间关系的输入,特别适用于长时间依赖的时间序列任务。
pretrain完以后,它是怎么作预测的?
是的,您的理解是正确的!在 TimeSiam 框架中,前面的部分(包括 Siamese 编码器和谱系嵌入)确实主要用于学习时间序列的编码表示。这些编码表示关注捕捉时间序列中远距离时间点之间的时间依赖关系和时序模式。这部分通过预训练的 Siamese 编码器和不同的谱系嵌入,使模型能够获得更丰富和多样化的时间表示。
在 微调(Fine-tuning) 阶段,模型将已经学习到的这些编码表示作为输入,交由一个自回归 MLP(多层感知器)网络或者其他时间序列预测网络来完成实际的预测任务。这个 MLP 网络主要用于生成下一步或多步的预测,方法是:
-
输入编码表示:将来自 Siamese 编码器的表示输入到 MLP 中,这些表示已经通过不同的谱系嵌入和预训练阶段捕捉了足够的时间相关性。
-
自回归预测:MLP 网络利用这些编码表示,逐步生成未来时间步的预测值。自回归结构意味着每一个时间步的输出会作为下一个时间步的输入,从而实现序列化的多步预测。
-
微调模型:通过微调阶段,MLP 会调整参数以适应具体的下游预测任务,例如交通预测、电力负载预测等。微调的损失函数通常是一个回归损失,例如均方误差(MSE),用于衡量预测值和真实值的差异。
总结来说:
- 前面部分(Siamese 编码器和谱系嵌入)主要用于编码时间序列特征,捕捉长期和多样化的时间依赖。
- 后面部分(自回归 MLP 网络)则用于在编码表示的基础上完成具体的预测任务。
间隔的定义
在 TimeSiam 中,引入了可学习的谱系嵌入(lineage embeddings),以增强模型对不同时间间隔的子序列对的区分能力。这个设计的目的是帮助模型更好地识别并利用时间序列中不同时间点之间的关系,尤其是当这些时间点相距较远时。
什么是谱系嵌入?
谱系嵌入是一组可学习的向量,用来表示时间间隔的特征。在 TimeSiam 中,不同的时间间隔(即过去和当前子序列之间的距离)对应于不同的谱系嵌入。这些嵌入向量帮助模型在时间序列的编码过程中捕捉到时间差异的信息。
具体操作
-
时间间隔定义:假设我们有两个子序列——过去的子序列 ( x^{\text{past}} ) 和当前的子序列 ( \tilde{x}^{\text{curr}} )。这两个子序列之间的时间间隔可以定义为 ( d ),表示它们在时间上的相对距离。
-
嵌入选择:TimeSiam 为不同的时间间隔 ( d ) 定义了多个谱系嵌入向量 ( e_i^{\text{lineage}} ),并通过一个映射函数 ( \text{LineageMatching}(d) ) 来为时间间隔 ( d ) 选择对应的谱系嵌入向量。
-
嵌入表示:
- 对于过去的子序列 ( x^{\text{past}} ),将其编码表示与对应的谱系嵌入 ( e_i^{\text{lineage}} ) 相加,以形成时间上带有距离信息的表示 ( z^{\text{past}} ):\[z^{\text{past}} = \text{Embed}(x^{\text{past}}) \oplus e_i^{\text{lineage}} \]
- 对于当前子序列 ( \tilde{x}^{\text{curr}} ),使用专门表示当前时间步的谱系嵌入 ( e_0^{\text{lineage}} ),得到当前子序列的嵌入表示 ( z^{\text{curr}} ):\[z^{\text{curr}} = \text{Embed}(\tilde{x}^{\text{curr}}) \oplus e_0^{\text{lineage}} \]
- 对于过去的子序列 ( x^{\text{past}} ),将其编码表示与对应的谱系嵌入 ( e_i^{\text{lineage}} ) 相加,以形成时间上带有距离信息的表示 ( z^{\text{past}} ):
为什么需要谱系嵌入?
谱系嵌入通过引入不同时间间隔的特征,使模型能够在编码阶段区分不同的时间间隔对,从而更好地捕捉到不同时间跨度之间的关系。这种设计在处理具有长时间依赖性的序列数据(如时间序列)时尤为重要,因为它能够提供一种动态机制来表示时间间隔信息,而不是简单地视为没有时间差异的对比对。
总结
谱系嵌入提供了一种灵活的方式,将时间间隔的信息融入到模型的编码表示中,使 TimeSiam 在对时间上相距较远的子序列对进行编码时,能够更好地捕捉和区分它们的关系。这对于增强时间相关表示学习的效果具有重要意义。
在 TimeSiam 中:
-
( e_i^{\text{lineage}} ) 表示过去的子序列与当前子序列之间的特定时间间隔 ( d = i )。**
- 例如,如果过去的子序列 ( x^{\text{past}} ) 和当前子序列 ( x^{\text{curr}} ) 之间的时间间隔是 ( d = 3 ),那么模型将会使用谱系嵌入 ( e_3^{\text{lineage}} ) 来表示这种距离关系。
- 这个嵌入向量 ( e_i^{\text{lineage}} ) 捕捉了特定时间间隔的信息,从而帮助模型理解不同时间距离下的子序列关联。
-
( e_0^{\text{lineage}} $ 是专门用于当前子序列的嵌入向量,表示没有时间间隔的情况(即 $ d = 0 $)。
- 它被用作当前子序列 $ x^{\text{curr}} $ 的嵌入,帮助模型识别当前子序列的独立特征,不考虑与过去的任何距离关系。
总结
- $ e_i^{\text{lineage}} $ :用于不同时间间隔 $ d = i $ 的过去子序列,与当前子序列之间的距离。
- $ e_0^{\text{lineage}} $ :用于当前子序列的嵌入,表示没有间隔的情况。
这种设计让 TimeSiam 能够更灵活地表示时间距离对子序列关系的影响。
UNITS: A Unified Multi-Task Time Series Model
数据
框架
以下是 UniTS 模型的结构和关键公式的整理。
1. UniTS 模型概述
UniTS 是一个用于多任务的统一时序模型,设计目的是通过统一的 token 格式来处理来自不同域和任务的数据。模型引入了三种不同的 token 类型:样本 token、提示 token 和任务 token,分别用于提供时序数据、引导模型的任务执行以及描述任务目标。
Token 介绍
- 样本 Token ($ z_x $):用于表示时序数据,将数据分割成不重叠的 patch,再投影到嵌入空间以获得样本 token。
- 提示 Token ($ z_p $):为多任务场景中的每个任务定义特定的提示 token。
- 任务 Token:分为预测任务的 GEN (生成) token 和分类任务的 CLS token,提供任务相关的上下文。
2. UniTS 的主要模块
2.1 时间和变量自注意力
UniTS 使用一种双向自注意力机制,用于处理时间维度和变量维度的数据,以此适应不同的变量数量和时序长度。
2.2 DyLinear 模块
为了处理不同时间长度的变化,DyLinear 模块利用双线性插值方法,动态调整可学习权重:
其中,$\text{Interp} $ 是双线性插值操作。
2.3 Gating 模块
为了减轻多域和多任务数据集带来的干扰,每一层后添加 Gating 模块,以稳定隐空间的特征表示。
2.4 生成塔和预测塔
- GEN 塔:用于生成时序数据样本。
- CLS 塔:用于分类任务的处理,帮助对不同的分类任务进行预测。
3. UniTS 训练
3.1 统一的掩码重构预训练
在预训练阶段,模型使用 MSE 损失进行重构预训练,包含 GEN 和 CLS token 的作用,以学习生成和预测任务的通用特征。预训练损失为:
其中,$L_{\text{MSE}} $ 是用于重构全样本 $ x $ 的均方误差损失函数。
3.2 多任务训练
模型在多任务场景中使用两种训练模式:
- 预训练模型微调 (UNIT-TS-PMT):在冻结预训练模型权重后,对预测和生成任务进行微调。
- 监督学习 (UNIT-TS-SUP):从头开始训练,用于监督多任务学习。
多任务训练的总损失函数定义为:
其中,$ L_i $ 是每个任务的损失,\(\lambda_i\) 是对应的权重,$ I $ 表示 batch 的数量。
两种任务
是的,UniTS 模型的两种 loss 代表了模型在生成任务和预测任务中的双重目标:
-
生成任务(Generative Tasks):如图所示的“Forecasting”任务,生成目标是预测时间序列未来的趋势。模型采用 \(\text{GEN}\) 令牌和 \(\text{Sample}\) 令牌来引导模型生成未来的时间序列。生成任务的 loss 使用均方误差(MSE)来衡量预测值和真实值之间的差异。
-
预测任务(Predictive Tasks):例如“Classification”任务,模型使用 \(\text{CLS}\) 令牌和类嵌入,通过计算输入序列与已知类别之间的距离,进行分类或异常检测。这类任务通常采用交叉熵(Cross-Entropy)或特定的分类损失来优化。
因此,这两个 loss 共同作用,使得 UniTS 能够同时在生成任务和预测任务中表现良好,增强了模型的多任务处理能力。
DyLinear模块和双线性插值的作用
DyLinear 是一个用于应对时间序列长度变化的动态线性层。其核心在于使用双线性插值来动态调整模型的权重,从而适应不同的时间长度。具体公式为:
这里:
- $ z_t \in \mathbb{R}^{l_{\text{in}} \times d} $:输入时间步的嵌入表示。
- $W_{\text{Interp}} \in \mathbb{R}^{l_{\text{out}} \times d} $:通过双线性插值得到的权重矩阵。
- \(\text{Interp}(w)\):双线性插值函数,将权重 $ w $ 从形状$ w_{\text{in}} \times w_{\text{out}} $ 动态调整到 $ l_{\text{out}} \times l_{\text{in}} $。
双线性插值的优势在于可以灵活调整权重矩阵的维度,使其适应不同长度的时间序列输入。这种插值方法对于时间序列数据尤其适用,因为在不同采样率或时间段的序列中,可以保持输入和输出之间的时序相关性。这种设计有助于在多任务处理和跨数据集的迁移学习中提升模型的适应能力。
双线性插值的示例
好的,我们用一个具体的数字例子来说明 DyLinear 模块中的双线性插值操作。假设我们有以下条件:
- 初始权重矩阵 $ W $ 的大小为 $ 4 \times 2 $。
- 输入序列 $ z_t $ 的大小为 $ 3 \times 2 $。
- 我们的目标是生成一个输出大小为 $ 5 \times 2 $ 的特征。
步骤 1:初始权重矩阵和输入序列
我们先定义一个简单的初始权重矩阵 $ W $ 和输入序列 $ z_t $。
假设:
这个矩阵的大小是 $ 4 \times 2 $。
假设我们的输入序列 $ z_t $ 为:
这个矩阵的大小是 $ 3 \times 2 $。
步骤 2:双线性插值
现在,我们希望通过双线性插值将权重矩阵 $W $ 调整到大小为 $5 \times 2 $,以适应目标输出的需求。双线性插值的步骤如下:
- 时间维度插值:我们需要将原始的 4 个时间步扩展到 5 个时间步。
- 特征维度保持不变:特征维度大小为 2,不变。
插值过程
在时间维度上,我们将 $ W $ 从 4 行插值到 5 行。假设我们使用线性插值的方法,新的矩阵 $ W_{\text{Interp}} $ 可以表示为:
\( W_{\text{Interp}} = \begin{bmatrix} 1 & 2 \\ 2 & 3 \\ 4 & 5 \\ 6 & 7 \\ 7 & 8 \end{bmatrix} \)
这里的插值方法简单来说是在两个相邻值之间插入一个新的值。例如,原来第一行和第二行是 \([1, 2]\) 和 \([3, 4]\),插值之后,我们在中间插入 \([2, 3]\) 作为新的第二行。
步骤 3:计算 DyLinear 输出
插值完成后,我们可以将输入序列 $ z_t $ 与插值后的权重矩阵$ W_{\text{Interp}} $ 相乘,得到输出序列。具体计算如下:
\( \text{DyLinear}(z_t, W_{\text{Interp}}) = W_{\text{Interp}} \cdot z_t \)
计算过程
每一行的结果为:
- 第一个输出:$ [1, 2] \cdot [1, 0.5] = 1 \times 1 + 2 \times 0.5 = 2 $
- 第二个输出:$ [2, 3] \cdot [2, 1.5] = 2 \times 2 + 3 \times 1.5 = 6.5 $
- 依此类推,完成整个计算。
通过这个例子,我们展示了如何利用双线性插值来改变权重的大小,使得权重可以适应不同长度的输入序列和输出序列。这种方法使得模型更具泛化性,能够在处理不同长度的时间序列时保持一致的性能。