扩散模型是目前生成式AI中的最核心模块,在Sora、DALL-E、Imagen等生成式AI大模型中都取得了广泛的应用。与此同时,扩散模型也被越来越多的应用到了时间序列中。这篇文章给大家介绍了扩散模型的基本思路,以及几篇扩散模型用于时间序列的典型工作,带你理解扩散模型在时间序列中的应用原理。
扩散模型建模思路
生成模型的核心是,能够从随机简单分布中采样一个点,并通过一系列变换将这个点映射到目标空间的图像或样本上。扩散模型的做法是,在采样的样本点上,不断的去噪声,经过多个去除噪声的步骤,生成最终的数据。这个过程很像雕塑的过程,最开始从高斯分布采样的噪声就是最开始的原材料,去噪声的过程就是不断在这个材料上凿掉多余部分的过程。
上面所说的就是逆向过程,即从一个噪声中逐渐去掉噪声,得到图像。这个过程是一个迭代的过程,要经历T次的去噪,一点点从原始采样点中把噪声去掉。在每个步骤中,输入上一个步骤生成的结果,并且需要预测噪声,再用输入减去噪声,得到当前时间步的输出。
这里就需要训练一个预测当前步骤噪声的模块(去噪模块),这个模块输入当前的步骤t,以及当前步骤的输入,预测噪声是什么。这个预测噪声的模块,是通过正向过程进行的,和VAE中的Encoder部分比较像。在正向过程中,输入一个图像,每个步骤采样一个噪声,将噪声加到原始图像上,得到生成的结果。然后再以生成的结果和当前步骤t的embedding为输入,预测生成的噪声,以此达到训练去噪模块的作用。
扩散模型在时间序列中的应用
TimeGrad: Autoregressive Denoising Diffusion Models for Multivariate Probabilistic Time Series Forecasting(2021)
TimeGrad是最早使用扩散模型做时间序列预测的方法之一。在基础的扩散模型基础上,TimeGrad给每个时间步的去噪模块额外输入了一个hidden state,这个hidden state是使用RNN模型对历史序列、外部变量进行编码得到的,以此指导扩散模型生成序列的过程。整体的逻辑如下图所示。
在去噪模块的网络结构上,主要采用了卷积网络,输入包括上一个步骤的输出序列和RNN输出的hidden state经过上采样生成的结果,二者分别过卷积后相加,用于噪声预测。
CSDI: Conditional Score-based Diffusion Models for Probabilistic Time Series Imputation(2021)
这篇文章使用扩散模型建模时间序列填充任务,整体建模方式和TimeGrad比较像。如下图所示,最开始时间序列是有缺失值的,首先对其填充上噪声,然后使用扩散模型逐渐预测噪声实现去噪,经过多个步骤后最终得到填充结果。
整个模型的核心也是扩散模型训练去噪模块。核心是训练噪声预测网络,每个步骤输入当前的步骤embedding、历史的观测结果以及上一个时刻的输出,预测噪声结果。
网络结构上使用Transformer,包括时间维度上的Transformer和变量维度的Transformer两个部分。
DSPD & CSPD: Modeling Temporal>本文提出的方法相比TimeGrad上升了一个层次,是通过扩散模型直接建模生成时间序列的函数本身。这里假设每一个观测点都是从一个函数中生成的,然后直接建模这个函数的分布,而不是建模时间序列中数据点的分布。因此,文中将扩散模型中添加的独立噪声改成随时间变化的噪声,并训练扩散模型中的去噪模块实现对函数的去噪。
TDSTF: Transformer-based Diffusion probabilistic model for Sparse Time series Forecasting(2023)
这篇文章将扩散模型应用到ICU中的关键信号提取。文中的核心一方面是对于稀疏不规则的医疗时序数据的处理,使用value、feature、time三元组表示序列中的每个点,对确实值部分使用mask。另一方面是基于Transformer和扩散模型的预测方法。整体的扩散模型过程如图,跟图像的生成模型原理是类似的,根据历史的时间序列训练去噪模型,然后在前向传播中逐渐从初始噪声序列中减掉噪声。
具体的扩散模型中噪声预测的部分采用的是Transformer结构。每个时间点由mask以及三元组组成,输入到Transformer中,作为去噪模块预测噪声。详细结构包括3层Transformer,每个Transformer包括2层Encoder和2层Decoder网络,Decoder的输出使用残差网络连接,并输入到卷积Decoder生成噪声预测结果。
本文转载自,作者: