论文链接:[2409.18479] CycleNet: Enhancing Time Series Forecasting through Modeling Periodic Patterns

我们来看一下CycleNet的关键代码:

class RecurrentCycle(torch.nn.Module):
    def __init__(self, cycle_len, channel_size):
        super(RecurrentCycle, self).__init__()
        self.cycle_len = cycle_len
        self.channel_size = channel_size
        self.data = torch.nn.Parameter(torch.zeros(cycle_len, channel_size), requires_grad=True)

    def forward(self, index, length):
        gather_index = (index.view(-1, 1) + torch.arange(length, device=index.device).view(1, -1)) % self.cycle_len    
        return self.data[gather_index]

其中,self.data即作者文章提到的Q,也就是说作者假设所有样本共享一个周期模式。

我们简单想一想,工业时序数据集是不可能出现所有样本都是完美的具有一样周期的波(就算你对数据预处理,也无法保证每一个样本具有相同的周期模式)。其次,要从一个随机参数拟合出所有样本共享的周期模式的难度可想而知。

以下呈现CycleNet和Dlinear工业负载时序数据上的预测结果:

CycleNet预测结果

DLinear预测结果

可以看出,CycleNet给出了非常糟糕的预测结果,这让我大跌眼镜,究其原因,是在这个负载数据集中,每个样本的周期是不一致的,而且每个样本不是完美的正弦波,以至于Q学到的几乎是噪声,从而预测的差也合理。

CycleNet严苛的假设让它在工业时序数据集上实现可靠预测几乎不可能。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐