cnn-lstm网络处理时序(卷积的应用)

本文回顾了ShaojieBai、J.ZicoKolter和VladlenKoltun撰写的论文:AnEmpiricalEvaluationofGenericConvolutionalandRecurrentNetworksforSequenceModeling。在TCN之前,我们经常将LSTM和GRU等RNN关联到新的序列建模任务中。然而,论文表明TCN(时间卷积网络)可以有效地处理序列建模任务,甚至优于其他模型。作者还证明了TCN比LST

大家好,又见面了,我是你们的朋友全栈君。

本文回顾了 Shaojie Bai、J. Zico Kolter 和 Vladlen Koltun 撰写的论文:An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling。

在 TCN 之前,我们经常将 LSTM 和 GRU 等 RNN 关联到新的序列建模任务中。 然而,论文表明 TCN(时间卷积网络)可以有效地处理序列建模任务,甚至优于其他模型。 作者还证明了 TCN 比 LSTM 保持更多的扩展记忆。

我们通过以下主题讨论 TCN 的架构:

  1. 序列建模
  2. 因果卷积 Causal Convolutions
  3. 空洞卷积 Dilated Convolutions
  4. 残差连接 Residual Connections
  5. 优点和缺点
  6. 性能比较

序列建模

虽然这篇论文不是第一个使用术语 TCN 的论文,但它的强调了可以是使用卷积来处理序列数据的一系列架构。

所以,让我们定义序列建模任务。

给定一个输入序列:

cnn-lstm网络处理时序(卷积的应用)

,我们希望每次预测相应的输出:

cnn-lstm网络处理时序(卷积的应用)

所以,论文中的一个序列建模网络是一个函数 f,它将一个 T+1 个元素的向量映射到另一个 T+1 个元素的向量:

cnn-lstm网络处理时序(卷积的应用)

有一个约束(因果约束):当预测时间 t <= T 的输出时,我们只能使用来自相同时间点和更早时间点的输入,例如:

cnn-lstm网络处理时序(卷积的应用)

我们不能使用比 t 更晚的时间点的输入:

cnn-lstm网络处理时序(卷积的应用)

上述序列建模的目标是找到一个网络模型 f 来最小化标签输出和预测之间的损失:

cnn-lstm网络处理时序(卷积的应用)

这种设置比一般的seq2seq模型(例如可以使用整个序列来执行预测的机器翻译)受到更多限制。

因此,TCN 是因果关系(没有从未来到过去的信息泄漏)并且可以将任何序列映射到相同长度的输出序列。

此外,它可以在残差连接的帮助下使用非常深的网络,并且可以在空洞卷积的帮助下查看很远的过去进行预测。

我们将一一讨论上述特征(casual、dilated、residual)。

因果卷积

TCN 使用 1D FCN(一维全卷积网络)架构。

cnn-lstm网络处理时序(卷积的应用)

每个隐藏层的长度与输入层的长度相同,并使用零填充以确保后续层具有相同的长度。

对于时间 t 的输出,因果卷积(具有因果约束的卷积)使用时间 t 和前一层更早时间的输入(参见上图底部的蓝线连接)。

因果卷积并不是一个新想法,但该论文结合了非常深的网络以允许长期有效的历史。

空洞卷积

译者注:Dilated Convolutions的中文翻译有很多个,例如 扩张卷积、膨胀卷积等。这里我是用我最常用称谓:空洞卷积。

如果我们回顾连续的时间步长,我们只能回顾网络中的层数。

为了克服这个问题,他们采用了空洞卷积,从距离 t 的每 d 步处获取输入:

cnn-lstm网络处理时序(卷积的应用)

其中 k 是内核大小。

因果卷积和空洞卷积的思想起源于 WaveNet 论文,其架构与 TCN 非常相似。

cnn-lstm网络处理时序(卷积的应用)

空洞卷积让网络回溯到 (k-1)d 个时间步长,使每层数的感受野呈指数级增长。

TCN 论文的作者说可以随着网络的深度呈指数增长:

cnn-lstm网络处理时序(卷积的应用)

其中 i 表示网络的第 i 级(我从 0 开始)。

为方便起见,下图是上面两张的同一张图。 第一个隐藏层上的空洞卷积每两步应用一次,其中 i=1。

cnn-lstm网络处理时序(卷积的应用)

空洞卷积通过特定排列确保某些过滤器在有效历史中命中每个输入,并允许使用深度网络获得较长的有效历史。

可以沿着从顶部到底部的蓝线查看它们到达底部的所有输入,这意味着输出的预测(以时间 T 为例)使用有效历史数据中的所有输入。

残差链接

残差块(最初来自ResNet)允许每一层学习对身份映射的修改,并在非常深的网络中工作得很好。

cnn-lstm网络处理时序(卷积的应用)

残差连接对于保证长期有效的使用历史非常重要。例如,如果一个预测依赖于2的12次方历史长度,我们需要12层来处理这么大的接受域。

下图为基线TCN的残差块。

cnn-lstm网络处理时序(卷积的应用)

每个残差块有两层空洞因果卷积、权重的归一化、ReLU 激活和 dropout。

如果输入通道的数量与扩张因果卷积的输出通道数量(第二个扩张卷积的过滤器数量)不同,则有一个可选的 1×1 卷积。

它是为了确保残差连接(卷积输出和输入的元素相加)有效。

cnn-lstm网络处理时序(卷积的应用)

优点和缺点

总结上面的架构

TCN = 1D FCN + 空洞因果卷积,这是一个非常简单且易于理解的结构,而不是其他序列模型(如 LSTM)。

除了简单之外,与 RNN(LSTM 和 GRU)相比,使用 TCN 还具有以下优势:

与 RNN 不同,TCN 可以利用并行性,因为它们可以并行执行卷积。

我们可以通过层数、扩张因子和过滤器大小来调整感受野大小,这使我们能够针对不同的领域要求控制模型的内存大小。

与 RNN 不同,梯度不是在时间方向上,而是在网络深度方向上,这会产生很大的不同,尤其是当输入长度很长时。因此,TCN 中的梯度更稳定(也归功于残差连接)。

内存需求低于 LSTM 和 GRU,因为每一层只有一个过滤器。换句话说,过滤器的总数取决于层数(而不是输入长度)。

但是TCN也有两个明显的缺点:

在评估期间,TCN 接收原始序列直至所需的历史长度,而 RNN 可以丢弃固定长度的块(输入的一部分),因为它消耗它们并仅保留隐藏状态形式的摘要。 因此,在评估过程中,TCN 可能需要比 RNN 更多的数据存储。

领域的迁移可能不适用于 TCN,尤其是当从一个需要短历史的域转移到另一个需要长历史的域时。

性能比较

作者使用各种序列建模任务比较了 LSTM、GRU、RNN 和 TCN 的性能:

cnn-lstm网络处理时序(卷积的应用)

如您所见,TCN 在大多数任务中的表现都优于其他模型。

一个有趣的实验是Copy memory任务(表格第四行),它检查模型在不同时间长度内保留信息的能力。

cnn-lstm网络处理时序(卷积的应用)

TCN 在复制记忆任务上实现了 100% 的准确率,而 LSTM 和 GRU 随着时间长度 T 的增长退化为随机猜测。 考虑到具有TCN直接使用卷积结构,这可能是显而易见的。

总体而言,TCN 的性能优于 LSTM。 作者的对TCN的信心体现在论文的以下引用中:

递归网络在序列建模中的优势可能在很大程度上是能够保留历史的信息。 直到最近,在引入空洞卷积和残差连接等架构元素之前,卷积架构确实更弱。 但我们的结果表明,有了这些元素简单的卷积架构在不同的时间序列建模任务中比 LSTM 等递归架构更有效。 由于 TCN 具有相当的清晰度和简单性,我们得出结论,卷积网络应该被视为一个自然的起点和一个强大的时间序列建模工具包。

本文的源代码:https://github.com/locuslab/TCN

本文作者:Naoki

An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling论文:arxiv:1803.01271

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129256.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月13日 下午7:40
下一篇 2022年4月13日 下午7:40


相关推荐

  • 数据库课程实践—仓库管理系统(附代码下载)

    数据库课程实践—仓库管理系统(附代码下载)数据库课程实践-仓库管理系统桌面应用程序数据库:SQLServer2008r2IDE:VS2010完成功能:(1)产品入库管理,可以填写入库单,确认产品入库;(2)产品出库管理,可以填写出库单,确认出库;(3)借出管理,凭借条借出,然后能够还库;(4)仓库库存设置,设置库存的初始值,更改库存的上下限值;(5)可以进行盘库,按货物分类,仓库分类和按货号和仓库查找;

    2022年5月12日
    41
  • Linux搭建eureka集群,基于dns搭建eureka集群[通俗易懂]

    Linux搭建eureka集群,基于dns搭建eureka集群[通俗易懂]eureka集群方案:1.通常我们部署的eureka节点多于两个,根据实际需求,只需要将相邻节点进行相互注册(eureka节点形成环状),就达到了高可用性集群,任何一个eureka节点挂掉不会受到影响。2.可能会有初学者和我一样,一开始的时候没有完全理解eureka集群的原理,直接把每个eureka节点的url写进配置文件,期望所有的eureka节点进行相互注册。实际上,节点间进行信息同步的时候,…

    2022年5月3日
    120
  • windows 设置脚本IP

    windows 设置脚本IP

    2022年1月5日
    48
  • 中文版Geneve02

    中文版Geneve02中文版 Geneve02 译者声明 本文是 Geneve02 http tools ietf org html draft gross geneve 02 的中文版 译者经过与各位 Geneve 原作者邮件沟通 Geneve 作者之一的 JesseGross 认为对 Geneve 的中文翻译版本 适用于 http trustee ietf org license info 中 section3 c ii

    2026年3月18日
    2
  • PHP采集程序原理分析篇

    PHP采集程序原理分析篇由于需要 要写一个简单的 PHP 采集程序 照例是到网上找了一堆教程 然后照猫画虎 可是发现网上的教程全是似是而非 没有一个真正能用的 苦想了几天 终于弄明白了里面的道理 在这里写出来 请高手指正 采集程序的思路很简单 无非就是先打一个页面 一般都是列表页 取得里面全部链接的地址 然后打开逐条链接 寻找我们感兴趣的东西 如果找到 就把它入库或别的处理 下面以一个很简单的例子来说说 首先确定一个

    2026年3月17日
    2
  • Hunyuan-MT Pro开发者实操:修改app.py定制专属翻译UI流程

    Hunyuan-MT Pro开发者实操:修改app.py定制专属翻译UI流程

    2026年3月16日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号