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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • python基础知识点汇总

    python基础知识点汇总本文包括python基本知识:简单数据结构,数据结构类型(可变:列表,字典,集合,不可变:数值类型,字符串,元组),分支循环和控制流程,类和函数,文件处理和异常等等。(1)简单数据结构标识符第一个字符必须是字母表中字母或下划线_。 标识符的其他的部分由字母、数字和下划线组成。 标识符对大小写敏感。python中数字有四种类型:整数、布尔型、浮点数和复数。int(整数),如1,只有一种整数类型int,表示为长整型,没有python2中的Long。 bool(…

    2022年10月16日
  • 如何查看redis内存使用情况

    如何查看redis内存使用情况

    2021年10月16日
  • Java经典算法(二)

    Java经典算法(二)【程序10】题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n!=k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。解题代码:importjava.util.Scanner;publicclassTe

  • Pycharm 恢复到默认设置

    Pycharm 恢复到默认设置有时候我们想将软件的主题配色、插件等配置初始化,可是会发现卸载并重新安装Pycharm后,软件会默认使用卸载前的个性化设置。解决方案如下:点击Pycharm的“文件”菜单,里面有一个“管理IDE设置”的选项,然后点击“恢复默认设置”。……

  • 虚拟ip地址是如何实现的_虚拟服务器ip地址

    虚拟ip地址是如何实现的_虚拟服务器ip地址ARP是地址分析协议,其作用简单,将ip地址转换为MAC地址,使用于数据链路层。每个主机都有一个ARP高速缓存,存储同一网络中的IP地址与MAC地址之间的对应关系,当以太网中的主机发送数据时,首先要从该缓存中查询与目标IP相对应的MAC地址,并将数据发送到该MAC地址。该系统将自动维护此缓存。ARP高速缓存可以在Linux下使用arp命令。例如,物理机器A(IP为172.25.0.1)和物理机器B…

    2022年10月12日
  • 搭建hadoop集群的三种方式_hadoop集群部署

    搭建hadoop集群的三种方式_hadoop集群部署Hadoop集群搭建(超级超级详细)

    2022年10月28日

发表回复

您的电子邮箱地址不会被公开。

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