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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JQuery的Ajax跨域请求的

    JQuery的Ajax跨域请求的

    2022年2月2日
    38
  • idea 2021.03.02 激活码(最新序列号破解)

    idea 2021.03.02 激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    437
  • DB9串口定义及含义(全)

    DB9串口定义及含义(全)RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。  它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。DB25的串口

    2022年4月8日
    522
  • gtest初识_tests strength

    gtest初识_tests strengthgtest初识总结本文以结合gtestgithub内容进行学习gtest。gtestgithub地址gtest编译g++xx.cppxx.h-lgtest-lpthread-omaingtest编写创建测试的一个简易的步骤:1.使用TEST()宏来定义和命名测试函数,这些是不返回值的普通C++函数。2.在此函数中,与要包含的任何有效C++语句一起使用各种g…

    2022年9月29日
    0
  • python学生管理系统代码_用python写学生管理系统

    python学生管理系统代码_用python写学生管理系统这几天开始接触了python语言,这语言相对c语言简洁了不少,语言真是一通百通,学起来还是比较轻松,在熟悉了基本语法,列表(序列),元组以及字典之后写了一个最基础简单的的学生管理系统能完成的功能有:学生管理系统 v1.0 1.添加学生的信息 2.删除学生的信息 3.修改学生的信息 4.查询学生的信息 5.遍历所有学生的信息 6.退出系统学生信息中,

    2022年9月20日
    0
  • Tomcatserverhttps协议配置简单介绍[通俗易懂]

    Tomcatserverhttps协议配置简单介绍

    2022年2月2日
    50

发表回复

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

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