Lag-Llama: Towards Foundation Models for Time Series Forecasting
摘要
本文提出Lag-Llama,在大量时间序列数据上练习的通用单变量概率时间序列预测模子。模子在分布外泛化能力上取得较好效果。模子使用平滑破坏幂律(smoothly broken power-laws)。
先容
目前任务重要集中于在相同域的数据上练习模子。当前已有的大规模通用模子在大规模差别数据上进行练习,展现出了极强的泛化能力。
本文练习了一个Transformer模子,使用大量时序数据进行练习并在未见过的数据集上进行测试。文章在Monash时序堆栈上练习了Lag-Llama。
本文贡献:
- 提出了Lag-Llama,一个单变量概率时序预测模子。
- 在时序语料数据集上练习了LagLlama,而且Lag-Llama在未见过的数据集上进行零样本测试时,展现出了优于Baseline的效果。确定了一个“稳固”的制度。
- 将零样本测试性能的经验缩放定律拟合为模子大小的函数,答应潜在推断和预测模子外的泛化。
相关工作
本文与Time-LLM等的差别点在于,Lag-Llama使用了滞后特性。
本文与TimeGPT-1的差别点在于,TimeGPT-1使用了在不确定量化时使用了共形预测,而本文直接进行概率预测。
扩展模子和数据集大小被证明可以带来明显的迁移学习能力和新任务上出色的小样本学习能力。
在量化练习根本模子所需资源时,神经缩放定律可以通过模子大小、练习集大小、计算资源等来实验预测神经网络性能。而本文接纳了平滑破坏幂律来推断网络的非线性缩放举动。
概率时序预测
假定有练习数据集 D t r a i n = { x 1 : T i i } i = 1 D \mathcal{D}_{train}=\{x^i_{1:T^i}\}^D_{i=1} Dtrain={x1:Tii}i=1D,此中拥有 D D D个时间序列,每个时间序列中包罗 T i T^i Ti个时间步,模子实验预测将来 P ≥ 1 P\ge1 P≥1个步的数据,因此须要将来的数据 D t e s t = { x T i + 1 T i + P i } \mathcal{D}_{test}=\{x^i_{T^i+1\:T^i+P}\} Dtest={xTi+1Ti+Pi}或者留出数据集(held-out)进行回测。数据中除了有序号 t t t外,另有一个时间日期;别的数据中另有一个与 x t i x_t^i xti相关的协方差 c t i c^i_t cti并进行向量化。
在单变量概率时序预测问题中,盼望可以或许在给定可观测过去和协变量的一维序列情况下,建模 P P P个将来值的复杂团结分布。
p χ ( x t + 1 : t + P i ∣ x 1 : t i , c 1 : t + P i ) p_\chi(x^i_{t+1:t+P}|x^i_{1:t},c^i_{1:t+P}) pχ(xt+1:t+Pi∣x1:ti,c1:t+Pi)
本文从完整的时间序列中选择大小为 C ≥ 1 C\ge 1 C≥1的固定上下文窗口进行子采样而且在给定协变量情况下学习将来 P P P步的未知分布:
p χ ( x C + 1 : C + P i ∣ x 1 : C i , c 1 : C − 1 + P i ) p_\chi(x^i_{C+1:C+P}|x^i_{1:C},c^i_{1:C-1+P}) pχ(xC+1:C+Pi∣x1:Ci,c1:C−1+Pi)
因此可以通过自回归模子创建一个概率的链式规则:
p χ ( x C + 1 : C + P i ∣ x 1 : C i , c 1 : C − 1 + P i ; θ ) = Π t = C + 1 C + P p χ ( x t i ∣ x 1 : t − 1 i , c 1 : t − 1 i ; θ ) p_\chi(x^i_{C+1:C+P}|x^i_{1:C},c^i_{1:C-1+P};\theta)=\Pi^{C+P}_{t=C+1}\ p_\chi(x^i_{t}|x^i_{1:t-1},c^i_{1:t-1};\theta) pχ(xC+1:C+Pi∣x1:Ci,c1:C−1+Pi;θ)=Πt=C+1C+P pχ(xti∣x1:t−1i,c1:t−1i;θ)
Lag-Llama
本文设定下的重要挑衅:
- 本文模子仅限于单变量建模,由于对于时间序列分组而获得的多变量维度对每个数据集是差别的。
- 本文须要从每个数据集中进行采样,以便从全部数据集中学习表现,而不会从任何一个数据集中不成比例的采样。
由于使用Transformer架构,须要向量化输入,但时间序列频率差别。因此须要对单变量数据以可以或许表现数据频率的方法进行向量化。本文提出了一种通用方法用于向量化给定特定频率的的时间序列。
滞后特性
模子中所需的滞后协变量是通过目标值的的滞后特性,包括季度、月、周、天、小时和二级频率构建的。给定排序的滞后系数聚集 L = { 1 , … , L } \mathcal{L}=\{1,\dots,L\} L={1,…,L},可以特定时候的滞后运算 x t → c t ∈ R [ L ] x_t\rightarrow c_t\in\mathbb{R}^{[\mathcal{L}]} xt→ct∈R[L],此中 c t c_t ct中的每一条都由 c t [ j ] = x t − L [ j ] c_t[j]=x_{t-\mathcal{L}[j]} ct[j]=xt−L[j]给出。因此,要为肯定时间窗口 x 1 : C x_{1:C} x1:C创建滞后特性,须要对 L L L个历史点 x − L + 1 : C x_{-L+1:C} x−L+1:C进行采样。
一种向量化单变量序列的方法是使用潜在的重叠部门或具有肯定大小和步长的片段,但是这种方法会导致向量中因果混淆。
滞后系数直接对应于数据各种大概的季节性,而且可以或许保留日期时间指数因果结构。通过依赖滞后特性,可以在练习期间使用掩码解码器,在推理时使用自回归采样。但一个缺点是在推理时须要一个 L L L或更大的上下文窗口。
Lag-Llama结构
Lag-Llama基于Llama结构,而且通过RMS归一化整合了预归一化而且在每个Attention层的Q和K增加了旋转位置编码。以上是 M M M个Decoder层的模子结构。
一个长度为 x − L + 1 : C i x^i_{-L+1:C} x−L+1:Ci的单变量序列以及其协变量通过滞后算子被向量化为一个长度为 C C C的向量 x 1 : C i \text{x}^i_{1:C} x1:Ci。然后序列被输入到一个MLP中映射到隐藏维度,从Transformer层输出后,模子使用Distribution Head来预测所选分布的参数。最后利用对数值进行求loss。
在推断时,给定长度为 L L L的时间序列,可以构建一个特性向量并输入模子获得下一个时间步的分布。通过如许的操纵,可以或许获得预测分布,通过拼接来初始化序列从而获得更远的滞后向量。
分布头的选择
分布头用于映射模子特性到参数的概率分布上。用差别表现能力的分布头来输出参数的概率分布。
值缩放
该模子中最大的挑衅是怎样处理差别数目级的数据。
通过计算均匀值 μ i = ∑ t = − L C x t i / ( C + L ) \mu^i=\sum^C_{t=-L}x^i_t/(C+L) μi=∑t=−LCxti/(C+L)和方差 σ i \sigma^i σi,从而来计算归一化后的值。同时,将 s i g n ( μ i ) l o g ( 1 + ∣ μ i ∣ ) sign(\mu^i)log(1+|\mu^i|) sign(μi)log(1+∣μi∣)和 l o g ( σ i ) log(\sigma^i) log(σi)作为时间独立的协变量。
数据增强
为了防止过拟合,使用了时间序列增强技能Freq-Mix和Freq-Mask,概率为0.5,增强率为0.1。为制止样本过多/过少,接纳分层抽样并接纳总时间步进行加权。
实验
数据集
使用Monash Time Series Repository及来自差别范畴的数据进行练习,使用M4 Weekly和Traffic数据集进行测试。此中测试数据集在练习时是不可见的并用来测试OOD性能。
模子练习
Batch_size 100,学习率 1e-3,50轮早停,每个epoch由100个窗口构成。早停由留出数据集的均匀loss决定。
评估
使用CRPS(一连分级概率分数)按照分布进行评估:
C R P S ( F , x ) = ∫ R ( F ( y ) − I { x ≤ y } ) 2 d y CRPS(F,x)=\int_\mathbb{R}(F(y)-\mathbf{I}\{x\le y\})^2dy CRPS(F,x)=∫R(F(y)−I{x≤y})2dy
实验效果
零样本性能
全部Baseline都是独立进行监督学习,然后再对应的测试集上进行测试。Lag-Llama和Lag-Transformer是在时序语料上进行练习,然后再两个测试数据集上进行测试。
窗口大小设置
随着窗口大小增加,Lag-Llama在两个数据集上实现了更好的零样本性能。
模子参数目
测试了在差别模子参数目下Lag-Llama的性能,可以发现在 1 0 6 10^6 106个参数以后效果根本稳固。
缩放定律
拟合缩放定律大概可以实现进一步的外推。
Broken Neural Scaling Law:
y = a + ( b x − c 0 ) Π i = 1 n ( 1 + ( x d i ) 1 / f i ) − c i ∗ f i y=a+(bx^{-c_0})\Pi^n_{i=1}(1+(\frac{x}{d_i})^{1/f_i})^{-c_i*f_i} y=a+(bx−c0)Πi=1n(1+(dix)1/fi)−ci∗fi
此中, x x x是性能相关数(模子参数目、计算量、练习数据集大小、模子输入大小等), y y y是评价指标。其他参数都是拟合的。
同时本文没有选择break数目,而是使用n阶最小二乘法来拟合85%的数据,然后选择使随后5%数据的RMSE最小化的n
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |