今天跟大家聊聊一个近期相对冷门的研究点: Decoder中的预测时间步依赖问题 。
目前主流的时间序列预测模型,Decoder一般采用一个简单的MLP网络,输入Encoder的表征,映射到预测结果。但是,这种建模方法并没有考虑到各个预测时间步之间的关系,可能导致在预测阶段不满足时间序列的平滑性。
在更早的深度学习时间序列预测工作中,一般会将上一个时刻的预测结果或者真实结作为下一个时刻的输入,自回归的逐步进行预测。这种建模方法,可以建立起各个预测时间步之间的关系,但同时也会引入诸如误差累积、训练和预测阶段不一致等问题。
今天这篇文章,就带大家了解一些Decoder这种考虑预测结果依赖的建模方法,并介绍2篇近期的工作,针对预测时间步依赖问题进行优化。
Decoder中的预测时间步依赖
在Decoder中考虑预测时间步依赖的建模方法中,可以分成2种类型,分别是Free Running和Teacher Forcing。
Free Running:Free Running在训练阶段输入真实值,在预测阶段由于无法获取到真实值,就输入上一个时刻的预测值代替。这种方法的问题在于,训练和预测存在不一致问题。为了解决这个问题,一些方法在训练阶段以一定比例输入预测值,一定比例输入真实值,缩小训练和预测的gap。或者使用一个权重,对预测值和真实值加权,或者加入噪声。
Teacher Forcing:另一种是在训练阶段输入上一个时刻侧预测值。这种方法在训练阶段和预测阶段是一致的,但是问题在于会存在误差累积问题。预测结果随着时间步的增长越来越不准确,引入预测结果会逐步累积误差,使模型效果变差。
引入辅助模型缓解误差累积
为了缓解Teacher Forcing方法的误差累积问题, Reinforced Decoder: Towards Training Recurrent Neural Networks for Time Series Forecasting(2024) 提出引入一个辅助模型库,用辅助模型库的预测结果,代替原来Teacher Forcing中正在训练模型的预测结果。通过这种方式,每个时间步的预测结果由外部模型产生,避免一直引入目标模型,随着时间步的增长,误差逐渐累积的问题。
具体实现方法上,文中引入一个model pool,这个model pool内都是一些训练好的时间序列预测模型,使用这个model pool中模型的预测结果作为输入,而非正在训练的模型本身,这样就可以正在训练模型引入上一个时刻预测结果带来的误差累积问题。同时为了进一步提升效果,文中采用了一个强化学习的方法,每个时刻从model pool中选择最合适的预测结果作为输入,以预测效果为reward进行强化学习网络的训练,以此实现让目标模型效果最优的预测结果的选择。
直接解码中引入差分辅助loss
相比于依赖上一个时刻的预估结果的递归解码方法,直接解码方法,即直接使用一个MLP将Encoder表征映射到预测结果,目前应用更加广泛,并且十分简洁高效。那么,能否在这种建模方法中,让模型建立起Decoder各个时间步之间的依赖呢?
TDT Loss Takes It All: Integrating Temporal Dependencies among Targets into Non-Autoregressive Time Series Forecasting(2024) 中就提出了这样一种建模方法。整体实现非常简单,在原始的base模型基础上引入了一个损失函数度量预测结果之间的关系。文中引入的这个度量是差分结果,比如一阶差分结果,就是t时刻的预测结果减去t-1时刻的预测结果。这个度量的是相邻两个预测窗口值之间的大小关系。文中通过计算这个预测值的差分结果,和真实值的差分结果之间的误差,巧妙的将变量间的关系引入到模型的优化目标中,实现了在Non-autogressive的基础预估框架下,考虑了预测结果之间的关系。同时,文中采用了动态权重,控制原始模型优化loss和新增loss之间的权重。
本文转载自,作者: