本文来源公众号“kaggle竞赛宝典”,仅用于学术分享,侵权删,干货满满。
原文链接:最新时间序列统一大模型,秒杀各类时序任务
作者:Fareise
最新时间序列统一大模型UniTS,秒杀各类时序任务!
今天给大家介绍一下哈佛和MIT最近联合发表的最新时间序列大模型工作,构建了一个统一的时间序列模型,能够处理各类时间序列任务,在38种不同的时间序列任务中,有27个都取得了最优效果。
论文标题:UniTS: Building a Unified Time Series Model
下载地址:https://arxiv.org/pdf/2403.00131v1.pdf
1 时间序列统一建模挑战
时间序列统一建模包括很多挑战,主要有数据差异和任务差异2个方面。
- 数据差异:不同于NLP、CV等数据,不同领域的数据遵循相同的规律,时间序列数据在不同领域可能存在很大的差别,包括时序上的规律、周期性等等,异构的多源数据联合建模难度较大,并且不同类型数据的序列长度、变量数量也不一样,给统一建模带来很大难度;
- 任务差异:时间序列包括分类、预测、填充、异常检测等多种类型的任务,而每种任务的目标差异很大,比如回归任务和分类任务的差异,预测和填充的差异等等,如何让一个模型能适配多种类型任务是一个难题。
为了解决上述问题,搭建统一时间序列模型,本文提出了UniTS方法。核心是通过prompt的方式将各类任务进行统一,并通过时间维度和变量维度self-attention搭建对输入数据格式不敏感的统一模型,能够处理不同的数据类型。
2 统一序列输入
UniTS中为了统一各种类型的任务,实现一个模型统一处理,将原始的时间序列数据转换成了3种类型的token,分别是sequence token、prompt token、task token。
- Sequence Token:sequence token对应原始的时间序列,使用不重叠的窗口将原始序列划分成patch,每个patch通过MLP映射,得到sequence token的embedding;
- Prompt Token:prompt token类似于NLP中的soft prompt思路,生成几个可学习的prompt embedding,拼接到上述sequence token,主要用来根据任务特性来吸收序列中的上下文信息,每个任务有其特征的prompt embedding,这样对于同一条数据,针对不同的任务的prompt不同,对应的提取上下文的信息也不同;
- Task Token:task token用于实现不同任务的统一,包括mask token和cls token,前者用来统一时间序列预测、时间序列填充,mask的部分生成的结果是预测结果,cls token用来做时间序列分类相关的任务。
3 统一模型结构
下面介绍UniTS的统一模型结构,主要包括序列和变量维度的attention、卷积、Gate、DyLinear三个部分。
- 序列和变量维度的attention:时间序列使用patch序列的self-attention实现,变量维度会将时间维度attention中的Query和Key做pooling后,做一个变量维度整体的self-attention;
- 卷积网络:对于输入的序列,使用一个3维卷积提取局部信息;
- Gate网络:由于不同数据集的分布差异,文中使用一个gate网络对输入特征做场景个性化缩放,使用上一层输入过一个sigmoid生成缩放因子,乘到本层输出中;
- Dynamic MLP:由于不同数据输入的长度不一样,传统的attention后面接的MLP网络输入长度不一样,MLP的权重尺寸会变化。为了解决这个问题,文中采用了DyLinear,其思路是对原始的MLP权重,根据输入向量长度的大小做双线性插值,生成和输入维度匹配的MLP权重;
4 模型训练
训练包括预训练阶段和finetune阶段。在预训练阶段,采用的是reconstruction任务,对时间序列的数据进行部分mask,然后进行还原;在finetune阶段,随机采样各类任务的数据进行多任务联合finetune,分类任务使用交叉熵损失,预测任务使用MSE。
5 实验结果
文中在各类数据集上进行了实验,使用统一模型的效果对比各个任务上的SOTA模型,以及GPT4TS等其他类型的统一模型效果,在38个任务上有27个任务都取得了最优效果。
THE END!
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。