TCN时间卷积网络

TCN时间卷积网络

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

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

Introduction

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

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

Temporal Convolutional Networks

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

sequence modeling

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

causal convolutions

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

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

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

dilated convolutions

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

residual connections

一个残差块包含了一个指向transformation操作的分支F,他的输出和原始输入相加: o = A c t i v a t i o n ( x + F ( x ) ) o=Activation(x+F(x)) 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也能够更好的控制模型的内存大小并应用到多个领域。
  3. stable gradients:
    不像循环结构,TCN具有一个和序列时间方向不同的bp路径,因此TCN可以避免梯度爆炸梯度消失等问题,而这是RNN的主要问题之一。
  4. low memory requirement for training:
    尤其对于长序列,LSTM和GRU需要使用大量的内存来存储中间结果,然而在TCN中滤波器是共享的,bp路径只和网络的深度有关系。因此我们发现RNN通常内存占用要比TCN多几倍。
  5. 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表现可能会比较差。
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值