深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))


文章目录

  • 前言
  • 第一课 论文导读
    • 序列建模
      • 序列建模的发展历史
    • 序列建模技术总览
      • 序列建模与循环神经网络(RNN)
      • 序列建模与循环神经网络(LSTM)
      • 序列建模与循环神经网络(Seq2Seq)
      • 序列建模与卷积神经网络(CNN)
      • 序列建模与卷积神经网络(FairSEQ)
      • 序列建模与注意力机制
      • 序列建模与注意力机制(transformer)
    • 前期知识储备
  • 第二课 论文精读
    • 论文结构
    • 传统算法模型
      • RNN加速方案
      • 层叠卷积结构Hierarchical CNN Structure
    • 论文提出的模型
    • 卷积与时间卷积Convolution&Temporal Convolution
      • 全卷积与因果卷积
        • 全卷积
        • 因果卷积
        • 空洞卷积
        • 高速路网络与残差连接Highway Network&Residual Connection
      • 小结
        • TCN的优点
    • 实验和结果
      • 实验设置
      • 实验结果
    • 讨论和总结
      • 创新点
      • 总结
  • 相关论文

前言 An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling
卷积和循环神经网络在序列建模中的经验性结论
作者:Shaojie Bai
单位:Carnegie Mellon University
发表时间:Arxiv2018
在线LaTeX公式编辑器
别人的讲解
序列建模广泛存在于自然语言处理、语音识别和计算机视觉等领域,这种任务通常需要将输入序列转换为输出序列,例如将输入的英文语句转换为输出的中文语句。从实践经验上来说,我们一般都将循环神经网络视为序列建模的默认配置。甚至 Ian Goodfellow 在《深度学习》一书中使用“序列建模:循环和递归网络”作为章节名,这些都表明序列建模与循环架构有非常紧密的联系。
本来TCN被认为是替代RNN的一种新序列模型,但是几个月后BERT的出现,导致了TCN模型没落了。
第一课 论文导读 序列建模 序列建模广泛存在于自然语言处理、语音识别和计算机视觉等领域,这种任务通常需要将输入序列转换为输出序列,例如将输入的英文语句转换为输出的中文语句。从实践经验上来说,我们一般都将循环神经网络视为序列建模的默认配置。甚至Ian Goodfellow在《深度学习》一书中使用“序列建模:循环和递归网络"作为章节名,这些都表明序列建模与循环架构有非常紧密的联系。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

序列建模是将一个输入或观测序列映射到一个输出或标记序列,李航在《统计学习方法》
中也将其称为标注问题。他表明标注问题是分类问题的推广,是更复杂的结构预测问题的简单形式。序列建模的目的在于学习一个模型,从而能对观测序列给出标记序列作为预测,即最大化概率 P ( y 1 , y 2 , . … , y n ∣ x 1 , x 2 , … , x n ) P(y_1,y_2,.…,y_n|x_1,x_2,…,x_n) P(y1?,y2?,.…,yn?∣x1?,x2?,…,xn?)。在传统机器学习方法中,序列建模常用的方法有隐马尔可夫模型和条件随机场等,近年来,循环神经网络等深度方法凭借强大的表征能力在序列建模问题上有非常突出的表现。
序列建模的一般性形式化表述可以看做:任意满足因果约束的映射函数 f : X T + 1 → y T + 1 f:X^{T+1}\rightarrow y^{T+1} f:XT+1→yT+1,它仅依赖于 x 1 , x 2 , … , x t ? 1 x_1,x_2,…,x_{t-1} x1?,x2?,…,xt?1?(t时刻之前的x来预测)而不使用 x t + 1 , x t + 2 , … , x n x_{t+1},x_{t+2},…,x_n xt+1?,xt+2?,…,xn?的信息来预测 y t y_t yt?。
由此可见:序列建模天然地就是一种循环的结构
序列建模的发展历史
FairSEQ实际上就是Facebook出品的基于CNN的seq2seq。
Fair=Facebook AI Research
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

序列建模技术总览 简单介绍以RNN、CNN、Transformer为代表的序列建模方法
序列建模与循环神经网络(RNN)
和序列建模的一般化形式类似,循环神经网络的基本形式也是 s ( t ) = f ( s ( t ? 1 ) ) ; θ ) s^{(t)}=f(s^{(t-1)}); \theta) s(t)=f(s(t?1)); θ),其中, s ( t ) s^{(t)} s(t)可视为系统在第t步的状态,因此后一步的系统状态会取决于前一步的系统状态。我们注意到每一个系统状态的计算都会使用相同的函数与参数(f和θ是不变的),这样循环地向后计算就能构建一个循环系统。
若我们具体考虑循环网络每一个时间步都存在输入,且使用变量h表示循环网络的隐藏状态,那么我们就可以将一般的循环神经网络抽象为以下表达式:
h ( t ) = f ( h ( t ? 1 ) , x ( t ) ; θ ) h^{(t)}=f(h^{(t-1)},x^{(t)}; \theta) h(t)=f(h(t?1),x(t); θ)
这也就是RNN的基本形式。
序列建模与循环神经网络(LSTM)
长短时记忆网络(LSTM)
LSTM的关键是引入了一组记忆单元,允许网络可以学习何时遗忘历史信息,何时用新信息更新记忆单元。在时刻t时,记忆单元 c t c_t ct?记录了到当前时刻为止的所有历史信息,并受三个门控制:输入门 i t i_t it?,遗忘门ft和输出门 o t o_t ot?,三个门的元素的值在[0,1]之间。其中最为核心的就是贯穿整个网络的记忆,也就是细胞的状态,用来记录目前为止的所有历史信息。
LSTM引入了门控机制以遗忘或保留特定的信息而加强模型对长期依赖关系的捕捉,同时也大大缓解了梯度爆炸或梯度消失的问题。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

序列建模与循环神经网络(Seq2Seq)
序列-序列框架(Sequence2Sequence)
举例来说,考虑一个机器翻译的任务,给定句子对,我们的目标是给定输入句子X,通过Encoder-Decoder模型来翻译出目标句子Y。X和Y分别由各自的单词序列构成,即 X = { x 1 , x 2 , x 3 , x 4 } , Y = { y 1 , y 2 , y 3 } X=\{x_1,x_2,x_3,x_4\},Y=\{y_1,y_2,y_3\} X={x1?,x2?,x3?,x4?},Y={y1?,y2?,y3?}。
首先,Encoder对输入语句X进行编码,将其变换为中间语义向量C。随后,Decoder根据中间状态向量C和已经生成的历史信息 y 1 , y 2 … , y i ? 1 y_1,y_2…,y_{i-1} y1?,y2?…,yi?1?去生成下一时刻的单词 y i y_i yi?。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

序列建模与卷积神经网络(CNN)
RNN的链式结构,能够很好地应用于处理序列信息。但是RNN也存在着劣势:一个是由于RNN运行时是将序列的信息逐个处理,不能实现并行操作,导致运行速度慢;另一个是传统的RNN并不能很好地处理句子中的结构化信息或者说更复杂的关系信息。
相比之下,CNN的优势就凸显出来。最重要的一点就是,CNN能够并行处理数据,计算更加高效。此外,CNN是层级结构,与循环网络建模的链结构相比,层次结构提供了一种较短的路径来捕获词之间远程的依赖关系,因此也可以更好地捕捉更复杂的关系。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

序列建模与卷积神经网络(FairSEQ)
FairSEQ
[Convolutional Sequence to Sequence Learning]
整体模型结构如下图,图中表示的从英语翻译到法语的过程。该模型依旧是编码解+注意力机制的大框架:编码器和解码器采用了相同的卷积结构,其中的非线性部分采用的是门控结构gated linear units(GLM);注意力部分采用的是多跳注意力机制multi-hop attention,在解码器的每一个卷积层,都会进行注意力操作,并将结果输入到下一层。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

序列建模与注意力机制
如果序列处理无可避免,那么我们最好能找到可向前预测和向后回顾的计算单元,因为我们处理的大多数实时因果数据只知道过去的状态并期望影响未来的决策。这和在翻译语句或分析录制视频时并不太一样,因为我们会利用所有数据并在输入上推理多次。这种向前预测和后向回顾的单元就是神经注意力模块。
使用注意力模块可以将过去编码向量汇总到上下文向量 C t C_t Ct?。而利用层级结构,可以极大地扩展注意力机制观察的范围。这就是一种能回顾更多的历史信息并预测未来的方法。
这种架构类似于神经图灵机,但使得神经网络通过注意力决定从记忆中需什么。这意味着一个实际的神经网络将决定过去的的哪个向量对未来的决策更重要。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

序列建模与注意力机制(transformer)
Transformer
[Attention is all you need]
Transformer抛弃了CNN和RNN结构,整个网络结构完全由注意力机制组成,现在已经成为一个主流序列建模方法。
具体来说,Transformer由且仅由自注意力模块和前馈神经网络组成,一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建,文章的实验是通过搭建编码器和解码器各6层,总共12层的Encoder-Decoder。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

前期知识储备 序列建模:了解序列建模的概念和发展历程,以及主要的技术路线
循环神经网络:了解循环神经网络的特点,理解循环神经网络与序列建模的关系
卷积神经网络:了解卷积神经网络的特点,理解卷积网络在序列建模中的优缺点
注意力机制:了解注意力机制的原理极其代表性方法,理解注意力机制如何应用于序列建模任务
第二课 论文精读 论文结构 0.摘要
1.引言
2.相关工作(背景知识)
3.时间卷积网络
4.5.数据集&实验
6.结论
传统算法模型 介绍在本篇论文提出之前的一些背景知识
RNN加速方案
RNN的加速一直以来都是一个热点话题,例如,QRNN结合了RNN和CNN的特性:
1.像CNN一样,能能基于时间步维度和minibatch维度上进行并行计算,确保对序列数据有高吞吐量和良好的长度缩放性;
2.像RNN一样,允许输出是基于序列中之前的有序元素得到的,即保留了RNN本身的过去时间依赖性。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

层叠卷积结构Hierarchical CNN Structure
层叠的CNN拥有3个优点:
1.能够捕获长距离依赖关系。底层CNN捕捉相对较近的词之间的依赖关系,高层CNN捕捉相对较远的词之间的依赖关系。
2.效率高。假设序列长度为n,采用RNN对其进行建模需要进行n次操作,时间复杂度O(n)。相比,采用卷积窗口大小为k的层叠CNN只需要进行n/k次操作,时间复杂度O(n/k)。
3.可并行。RNN对序列建模依赖于序列的历史信息,而层叠CNN在对整个序列进行卷积时,不依赖于序列的历史信息,可以实现并行。
论文提出的模型 主要介绍论文提出的改进后的模型
卷积与时间卷积Convolution&Temporal Convolution 【深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))】卷积的基本概念已经有非常多的入门教程,这里只简要说明一般的卷积运算与一维卷积。在卷积运算中,卷积核会在输入图像上滑动以计算出对应的特征图。卷积层试图将神经网络中的每一小块进行更加深入的分析,从而得出抽象程度更高的特征。一般来说通过卷积层处理的神经元结点矩阵会变得更深,即神经元的组织在第三个维度上会增加。
一般来说,卷积运算主要通过稀疏权重、参数共享和平移不变性等特性加强了机器学习系统。稀疏权重即卷积核大小会远小于输入图像的大小,这允许卷积网络存储更少的参数和使用更少的计算而实现高效的性能。参数共享也是非常优秀的属性,因为我们假设数据拥有局部结构,那么只需要在小范围神经元中使用不同的参数,而大范围内的神经元可共享参数。最后的平移不变性也建立在参数共享的基础上,它可以直观理解为若移动输入中对象,那么输出中的表示也会移动同样的量。
一般我们认为卷积网络擅长处理「网格结构的数据」,例如图像就是二维的像素网格。但其实时序数据同样可以认为是在时间轴上有规律地采样而形成的一维网格。我们具体来看一维卷积的连接方式:
下图中每个卷积层使用了一个大小为3的卷积核,即 k 1 k_1 k1?、 k 2 k_2 k2?和 k 3 k_3 k3?与 f 1 f_1 f1?、 f 2 f_2 f2?和 f 3 f_3 f3?。下层每一个神经元只会和上层神经元部分连接,例如 h 3 h_3 h3?只能由下层的局部神经元 x 2 x_2 x2?、 x 3 x_3 x3?和 x 4 x_4 x4?计算得出。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

在序列建模任务中,最下层的x可视为句子等输入序列,最上层的g可视为输出序列,中间的h即隐藏层。当然,这种一维卷积并没有只能查看当前时间步以及之前信息的因果卷的约束。越上层的神经元拥有越广的感受野,因此高层的卷积单元将有能力构建长期依赖关系。例如, g 3 g_3 g3?可以观察到输入序列的所有信息。
虽然一维卷积从直观上确实能实现序列建模,但我们之前经常使用的还是循环网络,尤其是LSTM或GRU。在本文中,作者就表明他们所提出的时间卷积网络(TCN)可作为一般的序列建模框架,且拥有非常好的效果。
这种时间卷积网络的显著的特点:
1.架构中的卷积存在因果关系,这意味着从未来到过去不会存在信息「泄漏」
2.卷积架构可以将任意长度的序列映射到固定长度的序列
3.除此之外,TCN还强调利用残差模块和空洞卷积来构建长期依赖关系
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

上图就是本文TCN模型的总体结构,图中的空洞系数d=1/2/4、卷积核大小k=3的空洞因果卷积,感受野覆盖整个输入序列。空洞系数d为1时就是一个普通的卷积,d为2可以看到每两个输入空了一个做卷积,以此类推。
下图是残差网络模块:
1.TCN残差块,当残差输入和输出有不同的维度,我们会添加1x1的卷积
2.TCN中的残差连接,其中蓝线为残差函数中的卷积核,绿线为恒等映射
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

全卷积与因果卷积
为了使用卷积运算处理时序数据,TCN结合了一维全卷积与因果卷积两种结构:
1.通过使用一维全卷积,TCN可以产生和输入序列等长的输出序列,且每一个隐藏层通过使用padding可以保持和输出层等长。
2.通过使用因果卷积,TCN可以保证前面时间步的预测不会使用未来的信息,因为时间步t的输出只会根据t-1及之前时间步上的卷积运算得出。
因此总的来说时间卷积网络简单地组合一维全卷积和因果卷积,最终得到了一个适合序列数据的模型。
全卷积 一般卷积网络的最后,会使用全连接层将特征图映射为固定长度的向量,且每一个元素代表一个类别。这种结构相当于将卷积抽取的高级特征进行线性组合而最终预测类别,但它的局限性体现在只能对整张图像或整段序列做分类处理。
引入全卷积的意义任于它能买现密集型的预测。即在二维卷积下对图像实现像素级的分类,在一维卷积下对序列实现元素级的预测。此外,由于低层的卷积运算感受野较小,对于特征的位置变化不敏感,而高层的卷积网络感受野非常大,对特征的变化也非常敏感。因此TCN用一维卷积替代最后几个全连接层有助于感受整个输入序列的信息,这对于构建长期记忆非常有帮助。
例如下图中,上面FC能将目标进行分类,下面用一维卷积代替FC,可以提高感受野,对于多个目标的识别提升非常大。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

因果卷积 从直观上来说,因果卷积类似于将卷积运算[劈]去一半,令其只能对过去时间步的输入进行运算。对于TCN所使用的一维卷积来说,因果卷积可以简单将一般卷积的输出移动几个时间步而实现。在训练过程中,所有过去时间步的卷积预测可以并行化,因为它们的输入和标注都是已知的,所以这相对于循环网络,在训练上有非常大的优势。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

空洞卷积 因果卷积还有一个问题,它需要非常多的层级数或较大的卷积核来扩宽感受野,而较大的感受野正是构建长期记忆所必须的。因此,如果我们不希望通过前面增加计算量的方法扩展感受野,那我们就需要使用空洞卷积(扩张卷积、膨胀卷积)。
空洞卷积最大的特性就是扩张感受野,它不是在像素间插入空白像素,而是略过一些已有的像素。当然,我们也可以理解为保持输入不变,并向卷积核中添加一些值为零的权重(空洞),从而在计算量基本不变的情况下增加网络观察到的图像范围或序列长度。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

如果我们将一般卷积运算的步幅增大,那同样也能起到增加感受野的效果,但卷积步幅大于1就会起到降采样的效果,输出的序列长度会减小。
扩张系数控制了每两个卷积核间会插入多少零值,当d=1时,空洞卷积就会退化为一般的卷积运算。使用较大的扩张系数允许输出端的神经元表征更大范围的输入序列,因此能有效扩张感受野。
一般在使用空洞卷积时,我们将随着网络深度i的增加而指数级地增大d,即 d = O ( 2 i ) d=O(2^i) d=O(2i)。这确保了卷积核在有效历史信息中覆盖了所有的输入,同样也确保了使用深度网络能产生极其长的有效历史信息。
高速路网络与残差连接Highway Network&Residual Connection 高速路网络受到LSTM的启发,它通过门控令信息在多个神经网络层级中可以高效流动,从而能使用传统基于梯度的方法快速训练深度网络。
一般一个前馈神经网络有L层网络组成,每层网络对输入进符一个非线性映射变换 y = H ( x , W H ) y= H(x,W_H) y=H(x,WH?),在高速路网络中,传入后一层的信息不仅是当前层的计算结果,同时还包含了前面层级的计算结果。具体来说,我们定义一个[0,1]的门控单元T,来控制到达下一层时的信息量:
y = H ( x , W H ) ? T ( x , W T ) + x ? ( 1 ? T ( x , W T ) ) y=H(x,W_H)\cdot T(x,W_T)+x\cdot(1-T(x,W_T)) y=H(x,WH?)?T(x,WT?)+x?(1?T(x,WT?))
高速路网络主要解决的问题是,网络深度加深,梯度信息回流受阻造成网络训练困难的问题。假设所有的门值均为0.5,就是把所有的原始信息一半激活,一半不变直接输入下一层,保留了很多原始信息。那么,在反向传播的时候,可以让更多的(梯度)信息直接回流到输入,而不需要经过一个非线性层转化。同样地,当T=1时,高速路网络就退化为了常规的卷积网络。
对于上式,如果我们使两项的权重不再相关,并且都设为1,那么它就代表了一个残差模块。 y = H ( x , W H ) + x y=H(x,W_H)+x y=H(x,WH?)+x,因为我们要学的是卷积核的权重 W H W_H WH?,而 W H = y ? x W_H=y-x WH?=y?x(残差项)这也就是我们称之为残差网络的原因。残差块的输出结合了输入信息与内部卷积运算的输出信息,这种残差连接或恒等映射表示深层模型至少不能低于浅层网络的准确度。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

由于TCN的感受野取决于网络深度n、卷积核大小k和空洞卷积中的扩张系数d,因此更深的TCN有更强的稳定性要求。
在TCN的残差模块内,有两层空洞卷积和ReLU非线性函数,且卷积核的权重都经过了权重归一化。此外,TCN在残差模块内的每个空洞卷积后都添加了Dropout以实现正则化。然而,在标准ResNet中,输入直接添加到残余函数的输出中,在TCN中,输入和输出可以有不同的宽度。为了解决输入输出宽度的差异,我们使用额外的1x1卷积来确保元素相加接收相同形状的张量。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

小结
时间卷积网络即结合了一维因果卷积和空洞卷积作为标准卷积层,而每两个这样的卷积层与恒等映射可以封装为一个残差模块。这样由残差模块堆叠起一个深度网络,并在最后几层使用卷积层代替全连接层而构建完整的全卷积网络。
TCN的优点 1.可并行:RNN的预测需要等到上一时刻结束才能进行,但是CNN没有这样的限制
2.灵活的感受野:TCN可以灵活地改变感受野(堆叠更多的卷积层,使用更大的空洞系数等等),这样也就具有良好的扩展性
3.稳定的梯度:TCN具有和序列时间方向不同的反向传播路径,因此不太可能会面临梯度消失或者梯度爆炸的问题
4.低内存资源:TCN的过滤器在同一层之间是共享参数的,内存使用的多少只依赖于网络的深度,和LSTM和GRU相比,没有大量的门限单元,因此节省了很多内存
5.可变长输入:和RNN类似,TCN使用了滑动的一维卷积核,使其可以处理任意长度的序列化数据
实验和结果 实验设置
为了验证模型的有效性,文章在一系列序列建模的任务上进行实验,包括合成压力测试、复调音乐建模、字符级语言建模和单词级语言建模任务等。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

实验结果
主实验结论:几乎在所有的任务上,TCN实现了全面领先,充分表明了这种网络结构在序列建模任务上的有效性。
注:表格中的上标h代表数值越高越好,1代表数值越低越好。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

速度对比
实验:Sequential MNIST/P-MNIST
任务介绍:在这个实验里,MNIST图像被处理为一个784×1的序列,最终进行数字分类,P-MNIST就是序列顺序是随机的。
结论:无论是在收敛速度方面还是在任务的最终精度方面,TCN的结构都全面优于递归结构。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

内存开销对比
实验:Copy Memory
任务介绍:每个序列输入长度为T+20,前10个是1-8之间的随机数,最后11个都是9,剩余全为0。目标是把前面的10个数字copy到最后10位,剩余全为0。
结论:TCN的模型准确率不受到序列长度的影响,注意到,在长序列的情况下,RNN相关模型的性能几乎下降到了随机猜测的地步。
深度之眼Paper带读笔记NLP.28(TCN (Temporal Convolutional Networks))
文章图片

讨论和总结 创新点
A.提出之前基于RNN的序列建模方法的缺点,基于CNN实现了一个新的序列建模结构
B.在一系列的序列建模任务上进行测试,发现提出的模型效果好、速度快、开销低
总结
整体:文章更多的是对已有卷积神经网络的融合,包括因果卷积、空洞卷积等等,所以题目定为了经验结论。
引言&相关工作:作者在引言部分介绍了当前所面临的问题,以及大家对这方面的尝试,文章的相关工作写得相当出彩。
实验:充分考虑各种可能性,探讨在不同任务下模型的性能,证明了所提出的模型结构在各个方面都全面领先。
相关论文 1.Jonas Gehring.Convolutional Sequence to Sequence Learning.In ICMl. 2017.
2.Ashish Vaswani.Attention is All You Need.In NeurlPS.2017.
3.机器之心(从循环到卷积,探索序列建模的奥秘):https://github.com/jiqizhixin/ML-Tutorial-Experiment/blob/master/Experiments/pytorch_TCN.ipynb

    推荐阅读