在家浑浑噩噩了几个月这样很颓。最近,用了三天认真的分析了一篇AAAI的会议论文和具体实现情况,这篇论文发表在今年的会议接受,作者来自于中山大学,浙江大学和西交利物浦,论文题目叫Towards Better Forecasting by Fusing Near and Distant Future Visions(强烈推荐国产镜像,基本秒开),代码,代码基于pytorch框架编写。
介绍:多元时间序列在日常生活中有着非常重要的作用,比如交通流量预测,用电耗能预测(楼主在做,希望可以大家相互交流),价格预测等。时间序列预测表示如下:
,通过过去T时间的数据,进行分析建立一个函数预测未来某个时刻的情况,根据采样时间(以min为记录一次)可能是下一分钟,下第三分钟等等。
创新点1:作者并未像传统预测论文一样,不仅考虑目标时刻t+H,同时也考虑了未来目标时刻的上时刻t+H-i,和未来目标时刻的下时刻t+H+i。作者指出之前未有方法考虑目标时刻与其之前之后的几个时刻的关系,而作者希望利用这个信息,进一步提高对主任务(t+H)预测精度。同时这几个任务作者是同时预测的,是一个多任务学习框架。
作者理解:某个事情发展,前后的信息特别重要,通过此可以大大提高精度,但是这个t+h-i和t+h+i的信息也是未知的,作者并未指出这两个信息分支任务的预测精度,若是分支任务预测精度很低,那么其提供的信息还有用吗?
创新点2:
作者利用 Construal Level Theory 理论,指出在预测较远的历史时刻时候,人们基于抽象的特征,在预测较近时刻的时候往往基于一些具体的特征。
模型:
模型:作者自己也指出,模型较为复杂(实际相当复杂,需要结合代码才能真正理解)。模型一共有4个部分,CNN:构建抽象特征,Shared LSTM:提取不同时刻的联系和时间特征,Main LSTM:进行主任务(t+h+i时刻)的预测任务,AR:自回归,增加鲁棒性,已经在多篇会议论文中介绍了,对提高预测精度有较大的影响。
CNN:
作者并未直接将数据运用到LSTM,其先通过几个卷积进行抽象特征提取。时间步长为P,一共有n个特征,先构造t+h-2时刻的抽象特征,然后再此时刻上构建t+h-1,t+h,t+h+1,t+h+2时刻的特征,最后变成统一的时间步长p,特征m的形式,基本是LSTM的标准输入。代码中,一共进行了10次卷积,每两次进行保存一个时刻的特征。
Shared+Main LSTM:
对于主任务(t+h时刻),此时shared lstm的h和c(LSTM 的状态,具体可看LSTM的介绍),会注入到Main LSTM。作者指出该LSTM隐藏着几个任务的关系,因此将他的信息引进来,即实现之前描述的考虑不同时刻之前的信息,提高预测精度。
AR:作者这里有一个小技巧:多考虑时间较近的时刻数据,少考虑时刻较远的数据。
作者指出这样做的原因是:通常,近未来值的尺度对最近过去值的尺度很敏感,而远未来值的尺度对最近和更远过去值的尺度都很敏感,所以采用了t-qsar+1表示更远。
实验1:作者通过与传统的LSTnet,VAR,LSTM,AECRNN 进行比较,凸显自己的模型。一共用了三个数据集(作者github提供,感兴趣可下载),预测未来t+3,t+6,t+9时刻,绝大多数情形下都比基础模型优秀。
实验2:
时间复杂性分析,虽然模型复杂但是训练时间短。不过感觉有作弊嫌疑,这个取决于模型需要需要的参数。
实验3 Ablation Study:将模型这四个模块,分别去掉,然后依次训练,比较结果。感觉是一种,较好的证明每个模块作用的实验方法,也很好用,对于模型的鲁棒性和性能分析实验介绍也容易描述。做这个实验的,好像都是用扇形图,强烈推荐。
第一次在知乎进行论文讲解的文章,码了1400字+,存在对文章理解的不充分和缺陷。不过感觉这篇文章挺扯的,近几年AI泡沫挺大,各种和各样的文章层出不穷,不过发在顶会上的论文,有些idea和试验方法确实很棒。不过时间序列预测普遍存在延迟现象,至今还未有大佬解决这个问题。东部末9研一硕士,研究方向时间(空)序列预测,在这个方向上,大家相互交流呀。