使用Flow forecast进行时间序列预测和分类的迁移学习介绍

2020-12-24 10:48:59 浏览数 (1)

ImageNet首次发表于2009年,在接下来的四年里,它成为了大多数计算机视觉模型的基础。到目前为止,无论您是在训练一个模型来检测肺炎还是对汽车模型进行分类,您都可能从在ImageNet或其他大型(和一般图像)数据集上预先训练的模型开始。

最近的一些论文,如ELMO和BERT(2018)利用转移学习来有效地提高几个NLP任务的表现。这些模型创建了有效的与上下文相关的单词表示。然后,这些表示可以用于各种任务,如回答问题、命名实体识别等。

此外,在宏观层面上,转移学习为所有数据有限的领域的进展铺平了道路。通过帮助数据有限的研究小组和公司有效利用这种技术,它帮助了深度学习的大众化。因此,能够在时间序列领域(其中有许多有限时间历史的事件)中利用迁移学习是至关重要的。

时间序列

目前,时间序列的迁移学习还没有模式,也没有可去的地方。而且,对这一课题的研究相对较少。Fawaz el的一篇论文(https://arxiv.org/pdf/1811.01533.pdf)。他讨论了时间序列分类的迁移学习。他们的结论是:

这些实验表明,迁移学习可以改善或降低模型预测,但是取决于用于迁移的数据集。

由此我们了解到,对于时间序列,源数据集和目标数据集之间的相似性在许多方面比CV或NLP更为重要。然后,作者选择发展一种技术,形成时间序列表示,以寻找最相似的时间序列用于迁移。虽然这是一个有趣的初步探索,但它仍然有许多未解的问题。那么多变量时间序列的情况又如何呢?(作者只关注单一变量)一个不同的架构会帮助促进不同时间序列之间的转移吗?同样地,一些其他的文章探索了有限的案例,在这些案例中迁移可以在时间序列领域有效,但是没有一个用于迁移学习的一般框架,特别是在多元情况下。

迁移学习在其他领域如何工作

在深入探讨关于时间序列预测的迁移学习的挑战之前,让我们先看看它在其他领域是如何工作的。在计算机视觉迁移学习中,一般采用分层模式进行模型学习;具体地说,模型中“早期”的层学习更多的一般模式(例如形状、轮廓、边缘),而后期的层学习更多的具体任务特征(猫的胡须或汽车前灯的形状)。在ImageNet上进行预先训练后,这种能力甚至成功地使用转移学习来帮助进行医学诊断和分期。

这在NLP中也普遍适用,但是,它需要一个不同的架构。具体来说,BERT和ELMO等模型为从序列到序列域的迁移学习铺平了道路。特别是transformer的架构在迁移学习方面发挥了良好的作用。同样的道理也适用于序列问题,比如时间序列。

时间序列预测的具体挑战

时间序列预测有几个特定的核心挑战。最大的一个问题是,对于时间序列,很难找到一个有用的层次结构或一组可以泛化到不同问题的中间表示。我们确实有一些组成部分,人们传统上将时间序列分解为季节性,趋势和余数。然而,开发一个有效学习中间解耦表示的模型仍然是难以捉摸的。“Reconstruction and Regression Loss for Time-Series Transfer Learning”的作者探索创建一个专门的损失函数,帮助促进正迁移通过解耦过程。他们建议在使用特定时间序列模型进行预测之前,先使用初始模型(与重建损失一起)提取一般特征。尽管本文仅限于单变量时间序列预测用例,但该技术似乎有助于提高性能。

第二个挑战是多元时间序列预测,许多问题的特征时间序列数量不同。例如,对于COVID-19,我们可能有流动性数据(3个特征),新感染(1个特征),天气(3个特征)共7个特征。然而,对于像流感预测这样的东西,我们可能只有新感染病例和总共四个特征的天气数据(例如,没有为流感收集移动数据)。在我们的实验中,我们通常发现使用一个模型特定的初始“embedding_layer”很有帮助,然后使用可转移的中间层。

如何使用Flow forecast进行迁移学习

Flow forecast是一个开源的系列深度学习框架(https://github.com/AIStream-Peelout/flow-forecast)

为了方便时间序列预测的迁移学习,Flow forecast有几个特点,使预训练和利用预训练的时间序列模型变得容易。在模型参数部分,您可以使用一个名为excluded_layers的参数。这意味着,当您加载一个预先训练好的模型时,这些层的权重将不会被加载,而会被实例化为fresh(如果它们存在于新模型中)。

代码语言:javascript复制
"excluded_layers":["embedding_layer.weight", "embedding_lay.bias", "dense_shape.weight", "dense_shape.bias"]

这使得在多个层可能不存在或与形状不匹配的情况下,可以很容易地利用模型的权重。看看这个笔记本的例子(https://colab.research.google.com/drive/169NO9B_il-E34Kdos1hxunuDFuD6rjuW#scrollTo=dx-tmLRain2Z)。

其次,通过Flow forecast,我们可以很容易地跟踪训练前的数据集。这意味着您可以轻松地跟踪您的模型所训练的其他时间序列数据的完整历史。这可以帮助找到最好的训练前数据集。

最后,Flow forecast正在努力增加额外的特性,例如使它容易使用不同的学习率和选择性冻结不同的层,以及设计自动编码器模块,以找到最相似的时间数据集。我们认为简单的迁移学习是我们框架中最优先考虑的一类特性。

在研究中发现了什么

到目前为止,我们发现广义转移学习对于像COVID-19预测这样的小数据集是有用的。我们还没有在大数据集上对其进行足够广泛的测试,因此无法就此得出结论。我们还相信,在将元数据纳入预测时,迁移学习是非常有效的。例如,模型需要查看许多不同类型的元数据和时态数据,以学习如何有效地合并它们。我们还可以设计了一种转移学习协议,我们首先扫描以找到最佳的静态超参数。然后,在对非静态参数(如批大小、学习率等)进行最后的超参数扫描之前,我们使用这些参数对模型进行预训练(如预测长度、层数)。

总结

时间序列的迁移学习取得了一定的进展,但还没有得到广泛的应用。这可能是由于特征数量、中间表示的有用性和季节性差异(例如更多的负迁移)方面的问题造成的。但是像Flow forecast这种框架的出现,为我们提供更多易于使用的模块,以便在时域成功地利用转移学习变得简单。我们相信迁移学习将在时间序列中发挥更大的作用。

作者:Isaac Godfried

deephub翻译组译

原文地址:https://towardsdatascience.com/transfer-learning-for-time-series-forecasting-51f023bc159c

0 人点赞