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(如果它们存在于新模型中)。

"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翻译组译

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

  1. 时间序列预测新范式——基于迁移学习的AdaRNN方法

    本文转载自知乎王晋东不在家的<小王爱迁移>系列之十五:自动选择源域的迁移学习方法 源地址为:<小王爱迁移>系列之32:时间序列预测新范式--基于迁移学习的AdaRNN方法 - ...

  2. 做时间序列预测有必要用深度学习吗?事实证明,梯度提升回归树媲美甚至超越多个DNN模型...

    来源:机器之心 本文约2600字,建议阅读9分钟 在时间序列预测任务上,你不妨试试简单的机器学习方法. 在深度学习方法应用广泛的今天,所有领域是不是非它不可呢?其实未必,在时间序列预测任务上,简单的机 ...

  3. 做时间序列预测有必要用深度学习吗?梯度提升回归树媲美甚至超越多个DNN模型...

    ©作者 | 杜伟.陈萍 来源 | 机器之心 在深度学习方法应用广泛的今天,所有领域是不是非它不可呢?其实未必,在时间序列预测任务上,简单的机器学习方法能够媲美甚至超越很多 DNN 模型. 过去几年,时 ...

  4. 宠物狗图片分类之迁移学习代码笔记

    五月两场 | NVIDIA DLI 深度学习入门课程 5月19日/5月26日一天密集式学习  快速带你入门阅读全文> 正文共3152个字,预计阅读时间8分钟. 本文主要是总结之前零零散散抽出时间 ...

  5. 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(1)

    import glob import os.path import numpy as np import tensorflow as tf from tensorflow.python.platfor ...

  6. 做时间序列预测没必要深度学习!GBDT性能超DNN

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 在深度学习方法应用广泛的今天,所有领域是不是非它不可呢?其实未必,在时 ...

  7. 【时间序列预测】股价预测零售预测

    股价预测.零售时间序列预测 1.什么是时间序列预测 时间序列(time series)是一组按照时间发生先后顺序进行排列的数据 时间序列(time series forecaing,简称时序预测.预估 ...

  8. matlab动态神经网络进行时间序列预测分析

    matlab动态神经网络进行时间序列预测分析 时间序列预测问题分类 有y,无x,即y(t)=f(y(t−1),y(t−2),...)y(t)=f(y(t−1),y(t−2),...)y(t)=f(y( ...

  9. 基于深度学习的时间序列预测

    # 技术黑板报 # 第十一期 推荐阅读时长:15min 前言 时间序列建模历来是学术和工业界的关键领域,比如用于气候建模.生物科学和医学等主题应用,零售业的商业决策和金融等.虽然传统的统计方法侧重于从 ...

最新文章

  1. 节后招人平均工资9000上热搜,为什么有些人去哪里都值钱?
  2. DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网...
  3. Property ngOnInit does not exist on type VisibleFocusDirective
  4. XSLT的处理模型(1)
  5. win32_bios 的对象编辑器无法保存对象_技能编辑器设计文档
  6. Java排序:冒泡排序
  7. log4j容器初始化探究
  8. 20160801java学习重点:函数
  9. UML之教学管理系统——4、Rational Rose画活动图
  10. 【IoT】创业:产品生产之老化测试
  11. TP服务器密码修改,tplink路由器怎么改密码?
  12. 弹窗动画PopupWindow
  13. Qt Creator 的下载与安装
  14. 安卓开发——升级compileSdkVersion、targetSdkVersion、buildToolsVersion、support包到最新(28)问题解决
  15. Servlet.service() for servlet jsp threw exception
  16. 软件测试课程设计——智云云盘
  17. 产业区块链一周动态丨江西将出台区块链五年计划,数字货币试点引发A股躁动...
  18. Adobe登陆出现Access denied解决方法
  19. 【服务器数据恢复】服务器断电导致RAID报错的数据恢复案例
  20. float单精度浮点和double双精度浮点

热门文章

  1. centos 6 安装 net-speeder
  2. 深度!全球机器人产业趋势及特征分析
  3. Sereja and Swaps
  4. Android Studio出现APP闪退问题(My Application keeps stopping)
  5. COBOL中的基本语法(转)
  6. 适用于程序员的钢琴、五线谱入门教程
  7. pythonexcel操作总结_python中常见关于Excel表格读写操作
  8. Dango Web 开发指南 学习笔记 3
  9. Shiro的简单入门(一)
  10. 数据库管理工具哪个好?强力推荐Navicat Premium 16 mac中文版