TCN时间卷积网络——解决LSTM的并发问题

TCN是指时间卷积网络,一种新型的可以用来解决时间序列预测的算法。在这一两年中已有多篇论文提出,但是普遍认为下篇论文是TCN的开端。

论文名称:

An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling

作者:Shaojie Bai 1 J. Zico Kolter 2 Vladlen Koltun 3

自从TCN提出后引起了巨大反响,有人认为

时间卷积网络(TCN)将取代RNN成为NLP或者时序预测领域的王者。

William Vorhies给出的原因如下:

RNN耗时太长,由于网络一次只读取、解析输入文本中的一个单词(或字符),深度神经网络必须等前一个单词处理完,才能进行下一个单词的处理。这意味着 RNN 不能像 CNN 那样进行大规模并行处理。

并且TCN的实际结果也要优于RNN算法。

所以本教程未来几次更新将集中介绍TCN的算法含义与代码解读。

2

什么是TCN?

TCN中涉及到了最简单的CNN和RNN,此处暂不赘述。还涉及到了一维卷积,扩张卷积,因果卷积,残差卷积的跳层连接等其他知识点。为了能够更准确的了解,我们将结合论文逐步介绍每个部分。

一维卷积

以下图为例:图中的输入的数据维度为8,过滤器的维度为5。那么卷积后输出的数据维度为8−5+1=4

如果过滤器数量为1,输入数据的channel数量变为,即输入数据维度为8×32。这里channel的概念相当于自然语言处理中的embedding,而该输入数据代表8个单词,其中每个单词的词向量维度大小为32。在这种情况下,过滤器的维度由5变为5×32,最终输出的数据维度仍为4。

如果过滤器数量为n,那么输出的数据维度就变为4×n。

其实可以看出模型基本上与二维卷积相同,非常容易理解。

扩张卷积

扩张卷积与普通的卷积相比,除了卷积核的大小以外,还有一个扩张率(dilation rate)参数,主要用来表示扩张的大小。

扩张卷积与普通卷积的相同点在于,卷积核的大小是一样的,神经网络中的参数数量不变。

两者区别区别在于扩张卷积具有更大的感受野。感受野是卷积核在图像上看到的大小,例如3×3卷积核的感受野大小为9。

例如下图是普通卷积,卷积核的感受野为3×3=9。

例如下图是扩张卷积,卷积核的感受野为7×7=49

下次更新将介绍因果卷积,残差卷积的跳层连接,并结合论文讲解TCN。

TCN

上次初步介绍了TCN,时间卷积网络,一种新型的可以用来解决时间序列预测的算法。TCN中涉及到了一维卷积,扩张卷积,因果卷积,残差卷积的跳层连接等其他知识点。

每天三分钟之Pytorch编程-5:RNN的新对手TCN(1)

上次也介绍了一维卷积和扩张卷积。

需要补充的是扩张卷积的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。

下面来介绍因果卷积,残差卷积的跳层连接

因果卷积

因果卷积的理解可以认为是:不管是自然语言处理领域中的预测还是时序预测,都要求对时刻t 的预测yt只能通过t时刻之前的输入x1到xt-1来判别。这种思想有点类似于马尔科夫链。

残差卷积的跳层连接

微软的残差网络 ResNet 就是经典的跳层连接(skip-connection),如下图所示。

上一层的特征图 x 直接与卷积后的 F(x)对齐加和,变为 F(x)+x (特征图数量不够可用 0 特征补齐,特征图大小不一可用带步长卷积做下采样)。

这样在每层特征图中添加上一层的特征信息,可使网络更深,加快反馈与收敛。

但是 ResNet 也有明显的缺陷:无法证明把每一层特征图硬连接到下一层都是有用的;并且实验证明把 ResNet 变深,不如把 ResNet 变宽, 即到了一定深度,加深网络已经无法使 ResNet 准确度提升了(还不如把网络层像 Inception 那样变宽)。

全卷积网络

时间卷积网络也用到了全卷积网络,全卷积网络(FCN)是在下篇论文中提出的:

论文 : Fully Convolutional Networks for Semantic Segmentation

FCN与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类不同,FCN可以接受任意尺寸的输入,采用卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到与输入相同的尺寸,再进行预测。

TCN时间卷积网络

下面将介绍时间卷积网络中的一维卷积,扩张卷积,因果卷积,残差卷积的跳 层连接是如何体现的,以及之间的关联。

(a)图为空洞系数 d=1, 2, 4、卷积核大小 k=3 的扩张卷积,感受野能覆盖输入序列中的所有值。

上式即为扩张卷积的计算公式,d为扩展系数。

(b)为 TCN 残差块,当残差输入和输出有不同的维度,会往其中添加一个 1x1 的卷积。

(c)为 残差连接的示例,蓝线为残差函数中的卷积核,绿线为恒等映射。

TCN 的卷积层结合了扩张卷积因果卷积两种结构。使用因果卷积的目的是为了保证前面时间步的预测不会使用未来的信息,因为时间步 t 的输出只会根据 t-1 及之前时间步上的卷积运算得出。

可以看出,TCN的卷积和普通的一维卷积非常类似,只不过最大的不同是用了扩张卷积,随着层数越多,卷积窗口越大,卷积窗口中的空孔会越多。

值得一提的是在 TCN 的残差模块内(即图b)有两层扩张卷积和 ReLU 非线性函数,且卷积核的权重都经过了权重归一化。此外TCN 在残差模块内的每个空洞卷积后都添加了 Dropout 以实现正则化。

论文中跳层连接时直接将下层的特征图跳层连接到上层,这样的话对应的通道数channel不一致,所以不能直接做加和操作,于是,为了两个层加和时特征图数量,即通道数数量相同,作者通过用1×1卷积进行元素合并来保证两个张量的形状相同。

总结来讲,时间卷积网络是:

同时用到一维因果卷积和扩张卷积作为标准卷积层,并将每两个这样的卷积层与恒等映射可以封装为一个残差模块(包含了relu函数)。再由残差模块堆叠起深度网络,并在最后几层使用全卷积层代替全连接层。

由于TCN涉及内容较多,所以本次更新简要介绍整体框架,下次将着重对其中部分细节解释,并开始详解代码。

原文地址:https://www.cnblogs.com/bonelee/p/11376294.html

时间: 2024-08-01 04:00:11

TCN时间卷积网络——解决LSTM的并发问题的相关文章

卷积网络训练太慢?Yann LeCun:已解决CIFAR-10,目标 ImageNet

卷积网络训练太慢?Yann LeCun:已解决CIFAR-10,目标 ImageNet Kaggle近期举办了一场 关于CIFAR-10数据集的竞赛,该数据集包含有6万个32*32的彩色图像,共分为10种类型,由 Alex Krizhevsky, Vinod Nair和 Geoffrey Hinton收集而来. 很多竞赛选手使用了卷积网络来完成这场竞赛,其中一些在该分类任务中靠着超乎人类能力的表现而得分.在本系列的博客中,我们将会分别采访三位选手和卷积网络之父.Facebook人工智能实验室主任

深度卷积网络CNN与图像语义分割

转载请注明出处: http://xiahouzuoxin.github.io/notes/ 级别1:DL快速上手 级别2:从Caffe着手实践 级别3:读paper,网络Train起来 级别3:Demo跑起来 读一些源码玩玩 熟悉Caffe接口,写Demo这是硬功夫 分析各层Layer输出特征 级别4:何不自己搭个CNN玩玩 级别5:加速吧,GPU编程 关于语义分割的一些其它工作 说好的要笔耕不缀,这开始一边实习一边找工作,还摊上了自己的一点私事困扰,这几个月的东西都没来得及总结一下.这就来记录

理解LSTM网络--Understanding LSTM Networks(翻译一篇colah's blog)

colah的一篇讲解LSTM比较好的文章,翻译过来一起学习,原文地址:http://colah.github.io/posts/2015-08-Understanding-LSTMs/ ,Posted on August 27, 2015. Recurrent Neural  Networks 人类思维具有连贯性.当你看这篇文章时,根据你对前面词语的理解,你可以明白当前词语的意义.即是由前面的内容可以帮助理解后续的内容,体现了思维的连续性. 传统的神经网络(RNN之前的网络)在解决任务时,不能做

深度卷积网络

深度卷积网络 涉及问题: 1.每个图如何卷积: (1)一个图如何变成几个? (2)卷积核如何选择? 2.节点之间如何连接? 3.S2-C3如何进行分配? 4.16-120全连接如何连接? 5.最后output输出什么形式? ①各个层解释: 我们先要明确一点:每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,然后每个Feature Map有多个神经元. C1层是一个卷积层(为什么是卷积?卷积运算一个重要的特点就是,通过卷积运算,可以使原信号特征增强

全卷积网络 FCN 详解

背景 CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体,在2015年之前还是一个世界难题.神经网络大神Jonathan Long发表了<Fully Convolutional Networks for Semantic Segmentation>在图像语义分割挖了一个坑,于是无穷无尽的人往坑里面跳. 全卷积网络 Fully Convolutional Networks CNN 与 FCN 通常CNN网络在卷积层之后会接上若干个全连接层, 将卷积层产生的特征图(feature m

基于图卷积网络的图深度学习

基于图卷积网络的图深度学习 先简单回顾一下,深度学习到底干成功了哪些事情! 深度学习近些年在语音识别,图片识别,自然语音处理等领域可谓是屡建奇功.ImageNet:是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库,并且被业界熟知. 我们先回顾一下,没有大数据支撑的欧式深度学习技术.对于一个字母"Z"的识别,我们通常是建立一个2D网格(点阵),如果将其中的点连接起来,定义这样的连接方式所形成的就是"Z".然后是用其他字母来测试,这个模型的正确性. 传统

解决数据库高并发

解决数据库高并发的常见方案: 1) 缓存式的 Web 应用程序架构: 在 Web 层和 DB(数据库)层之间加一层 cache 层,主要目的:减少数据库读取负担,提高数 据读取速度.cache 存取的媒介是内存,可以考虑采用分布式的 cache 层,这样更容易破除内存容量 的限制,同时增加了灵活性. 2) 增加 Redis 缓存数据库: 把经常访问到的数据而且不需要经常变化的数据放在缓存中. 主要针对于数据与用户无直接关联,写少读多的数据,使用缓存来减少数据库的压力. 第一获取数据从数据库中提取

语义分割--全卷积网络FCN详解

语义分割--全卷积网络FCN详解 1.FCN概述 CNN做图像分类甚至做目标检测的效果已经被证明并广泛应用,图像语义分割本质上也可以认为是稠密的目标识别(需要预测每个像素点的类别). 传统的基于CNN的语义分割方法是:将像素周围一个小区域(如25*25)作为CNN输入,做训练和预测.这样做有3个问题: - 像素区域的大小如何确定 - 存储及计算量非常大 - 像素区域的大小限制了感受野的大小,从而只能提取一些局部特征 为什么需要FCN? 我们分类使用的网络通常会在最后连接几层全连接层,它会将原来二

一文带你了解卷积网络中的几何学

文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 原标题 | An Easy Guide to Gauge Equivariant Convolutional Networks 作者 | Michael Kissner 译者 | AI小山(工程师).Mr-UC(中国科学院大学) 几何深度学习是个很令人兴奋的新领域,但是它的数学运算逐渐转移到代数拓朴和理论物理的范围. 在Cohen等人的论文<规范等变卷积网络和二十面体CNN>中,这种现象尤其明显.