TCN时间卷积网络

简介: 翻译:《Sequence Modeling Benchmarks and Temporal Convolutional Networks 》

TCN时间卷积网络

参考使用的benchmark:
https://github.com/locuslab/TCN

包含多种分类、预测样例,基于pytorch环境。

Introduction

通常序列模型问题都是使用循环神经网络解决的,然而最近一些结果发现卷积神经网络在序列问题上可以实现超过循环神经网络的结果。一般在研究的时候都会把循环神经网络作为一个序列模型任务的起始点,但是现在我们要选择卷积神经网络。于是就产生了一个问题:卷积序列模型的成功是否和特定的应用领域有关,序列处理和循环网络之间的关联是否可以重新考虑。

论文作者通过在一系列序列模型任务上进行对卷积结构和循环结构的比较解决了这一问题。这些任务包括音乐模型、语言模型和合成测试等。作者使用时序卷积模型TCN和LSTMs GRU等模型进行比较,结果显示TCN模型超过了这些循环神经网络结构。这也证明了卷积结构最近在音频处理上的成果不代表其只适用于该领域。

Temporal Convolutional Networks

我们从一个卷积序列预测的一般架构开始。这个模型被称为时间卷积网络,这个概念指的不是一个架构,而是一种类型的架构。TCN网络的特性包括:1. 卷积中的关系是因果关系,意味着不存在从未来到过去的信息。2. 这个架构可以用任意长的序列作为输入并映射到相同长度的输出上,就像RNN一样。此外,作者强调了如何构建一个长且有效的历史大小,使用残差层和空洞卷积的技术。

sequence modeling

在定义网络结构之前,我们先解释一下序列模型任务。假设我们被给定了一个输入序列并且想要预测对应的结果。核心的制约是,预测一个输出的时候,我们只能使用这个时间之前的观察。一个序列模型网络通常指的是能产生以下映射的一个函数:$$\hat{y}_0,...,\hat{y}_T=f(x_0,...,x_T)$$
目标是找到一个网络最小化真实输出和预测之间的损失,其中输入序列和输出都遵循某个分布。这个形式包括了多种设置,比如自回归预测,目标输出是将输入平移一步得到的。而这种不适合机器翻译或者序列-序列预测,因为输入的序列中包含了“未来”状态。

causal convolutions

TCN是基于两个原则的:网络产生和输入一样长的输出,不存在从未来到现在的信息。为了实现这一点,TCN使用了1维全卷积网络架构,每个隐藏层和输入层长度都一样,并加入了padding来保持后续层的长度。

简单来说:TCN=1D FCN + causal convolutions

这个设计的主要缺点是为了实现长而有效的历史记录,我们需要一个特别深的网络或者非常大的滤波器,在这个模型刚提出来的时候以上两点都不能实现,因此接下来的部分会介绍帮助TCN模型达成这两个点的技巧。

dilated convolutions

一个简单的因果卷积只能够回顾和网络深度呈线性关系的大小的历史。这使得上述的因果卷积在序列任务上遇到挑战,尤其在要求比较长的历史记录的时候。
作者的解决办法,使用了具有扩大感受野能力的空洞卷积。对于一个1维的序列,和一个滤波器,空洞卷积在序列中每个元素s上的操作可以定义为:$$F(s)=(x*_df)(s)=\sum^{k-1}_{i=0}f(i)*x_{s=d*i}$$
d在这里是空洞因子,k是滤波器大小,s-d*i指示了过去的方向。具体不讲了空洞卷积也算是个常识。这就给了我们两个方法来提高感受野:1. 选择较大的核,2. 提供空洞因子。一个这样一层对应的有效历史是(k-1)d长,当使用空洞卷积时,这个d可以随着网络的深度指数型增长。

residual connections

一个残差块包含了一个指向transformation操作的分支F,他的输出和原始输入相加:$$o=Activation(x+F(x))$$

这句话意思理解了但是翻译不出来-this effectively allows layers to learn modifications to the identity mapping rather than entire transformation, which has repeatedly been shown to benefit very deep networks. 大致意思就是加上输入后对学习的过程有帮助。

TCN的感受野由网络深度n核核大小k和空洞因子d,对更深和更大的TCN来说稳定性是十分重要的。比如,在预测结果依赖于2的12次方大小的历史和一个高维输入序列时,需要一个12层的网络。并且每一层都有用来提取特征的多个滤波器。在TCN中输入和输出大小不一样,所以我们用了 1x1卷积使得它们具有相同的大小。

Discussion

我们列出了我们的TCN在序列模型上应用的一些优点和缺点。
以下部分是优点

  1. parallelism:
    不像RNN对后面时间戳的预测需要等前面的步骤都完成,CNN可以平行地进行,因为每一层用的是一样的滤波器。因此一个长序列可以当作一个整体进行处理,而不是像在RNN中一样按顺序进行。
  2. flexible receptive field size:
    一个TCN能够用多种方法改变它的感受野大小,比如:堆叠更多的空洞卷积层,使用更大的空洞因子,提高滤波器大小。因此TCN也能够更好的控制模型的内存大小并应用到多个领域。
    1. stable gradients:
      不像循环结构,TCN具有一个和序列时间方向不同的bp路径,因此TCN可以避免梯度爆炸梯度消失等问题,而这是RNN的主要问题之一。
    2. low memory requirement for training:
      尤其对于长序列,LSTM和GRU需要使用大量的内存来存储中间结果,然而在TCN中滤波器是共享的,bp路径只和网络的深度有关系。因此我们发现RNN通常内存占用要比TCN多几倍。
    3. variable length inputs:
      像RNN可以用变长序列作为输入,TCN也可以将任意长序列作为属于通过滑动1D卷积核。这意味着TCN可以取代RNN用来处理任意长度的有序数据。

以下部分是缺点

  1. data storage during evaluation:
    在验证或测试阶段,RNNs只需要保证隐藏层状态和一个当前输入来产生一个预测,换句话说只需要一个对历史的总结,而实际的观察到的序列是可以忽略的。相反的,TCN需要放入所有的序列,因此可能需要更多的内存。
  2. potential parameter change for a transfer of domain:
    不同的领域对模型的历史的量有不同的要求,因此模型在对内存要求不一致的不同领域转换时,TCN表现可能会比较差。
相关文章
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】32. 卷积神经网络之稠密连接网络(DenseNet)介绍及其Pytorch实现
【从零开始学习深度学习】32. 卷积神经网络之稠密连接网络(DenseNet)介绍及其Pytorch实现
|
22天前
|
机器学习/深度学习 人工智能 算法
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
海洋生物识别系统。以Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经网络算法,通过对22种常见的海洋生物('蛤蜊', '珊瑚', '螃蟹', '海豚', '鳗鱼', '水母', '龙虾', '海蛞蝓', '章鱼', '水獭', '企鹅', '河豚', '魔鬼鱼', '海胆', '海马', '海豹', '鲨鱼', '虾', '鱿鱼', '海星', '海龟', '鲸鱼')数据集进行训练,得到一个识别精度较高的模型文件,然后使用Django开发一个Web网页平台操作界面,实现用户上传一张海洋生物图片识别其名称。
113 7
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
|
15天前
|
机器学习/深度学习 人工智能 算法
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
乐器识别系统。使用Python为主要编程语言,基于人工智能框架库TensorFlow搭建ResNet50卷积神经网络算法,通过对30种乐器('迪吉里杜管', '铃鼓', '木琴', '手风琴', '阿尔卑斯号角', '风笛', '班卓琴', '邦戈鼓', '卡萨巴', '响板', '单簧管', '古钢琴', '手风琴(六角形)', '鼓', '扬琴', '长笛', '刮瓜', '吉他', '口琴', '竖琴', '沙槌', '陶笛', '钢琴', '萨克斯管', '锡塔尔琴', '钢鼓', '长号', '小号', '大号', '小提琴')的图像数据集进行训练,得到一个训练精度较高的模型,并将其
27 0
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
|
1月前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络(CNN)的工作原理深度解析
【6月更文挑战第14天】本文深度解析卷积神经网络(CNN)的工作原理。CNN由输入层、卷积层、激活函数、池化层、全连接层和输出层构成。卷积层通过滤波器提取特征,激活函数增加非线性,池化层降低维度。全连接层整合特征,输出层根据任务产生预测。CNN通过特征提取、整合、反向传播和优化进行学习。尽管存在计算量大、参数多等问题,但随着技术发展,CNN在计算机视觉领域的潜力将持续增长。
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】31. 卷积神经网络之残差网络(ResNet)介绍及其Pytorch实现
【从零开始学习深度学习】31. 卷积神经网络之残差网络(ResNet)介绍及其Pytorch实现
|
6天前
|
机器学习/深度学习 数据采集 算法
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
41 19
|
6天前
|
机器学习/深度学习 编解码
深度之眼(二十八)——神经网络基础知识(三)-卷积神经网络
深度之眼(二十八)——神经网络基础知识(三)-卷积神经网络
28 14
|
1天前
|
机器学习/深度学习 PyTorch 算法框架/工具
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
图神经网络是一类用于处理图结构数据的神经网络。与传统的深度学习模型(如卷积神经网络CNN和循环神经网络RNN)不同,
15 9
|
22天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
170 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
23天前
|
机器学习/深度学习 人工智能 算法
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
球类识别系统,本系统使用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集 '美式足球', '棒球', '篮球', '台球', '保龄球', '板球', '足球', '高尔夫球', '曲棍球', '冰球', '橄榄球', '羽毛球', '乒乓球', '网球', '排球'等15种常见的球类图像作为数据集,然后进行训练,最终得到一个识别精度较高的模型文件。再使用Django开发Web网页端可视化界面平台,实现用户上传一张球类图片识别其名称。
113 7
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow

相关实验场景

更多