时空卷积网络TCN

时间:2024-02-19 16:20:26

1.写在前面

实验表明,RNN 在几乎所有的序列问题上都有良好表现,包括语音/文本识别、机器翻译、手写体识别、序列数据分析(预测)等。

在实际应用中,RNN 在内部设计上存在一个严重的问题:由于网络一次只能处理一个时间步长,后一步必须等前一步处理完才能进行运算。这意味着 RNN 不能像 CNN 那样进行大规模并行处理,特别是在 RNN/LSTM 对文本进行双向处理时。这也意味着 RNN 极度地计算密集,因为在整个任务运行完成之前,必须保存所有的中间结果。

CNN 在处理图像时,将图像看作一个二维的“块”(m*n 的矩阵)。迁移到时间序列上,就可以将序列看作一个一维对象(1*n 的向量)。通过多层网络结构,可以获得足够大的感受野。这种做法会让 CNN 非常深,但是得益于大规模并行处理的优势,无论网络多深,都可以进行并行处理,节省大量时间。这就是 TCN 的基本思想。

2 CNN 扩展技术

TCN 模型以 CNN 模型为基础,并做了如下改进:

  1. 适用序列模型:因果卷积(Causal Convolution)
  2. 记忆历史:空洞卷积/膨胀卷积(Dilated Convolution),残差模块(Residual block)

下面将分别介绍 CNN 的扩展技术。

2.1 因果卷积(Causal Convolution)

因为要处理序列问题(时序性),就必须使用新的 CNN 模型,这就是因果卷积。序列问题可以转化为:根据 [公式] 去预测 [公式] 。下面给出因果卷积的定义,滤波器 [公式] ,序列 [公式] ,在 [公式] 处的因果卷积为: [公式] 。下图为一个因果卷积的实例,假设输入层最后两个节点分别为 [公式] ,第一层隐藏层的最后一个节点为 [公式] ,滤波器 [公式] ,根据公式有 [公式] 。

因果卷积有两个特点:

  1. 不考虑未来的信息。给定输入序列 [公式],预测 [公式]。但是在预测 [公式]时,只能使用已经观测到的序列 [公式],而不能使用 [公式] 。
  2. 追溯历史信息越久远,隐藏层越多。上图中,假设我们以第二层隐藏层作为输出,它的最后一个节点关联了输入的三个节点,即 [公式] ;假设以输出层作为输出,它的最后一个节点关联了输入的四个节点,即 [公式] 

2.2 空洞卷积/膨胀卷积(Dilated Convolution)

标准的 CNN 通过增加 pooling 层来获得更大的感受野,而经过 pooling 层后肯定存在信息损失的问题。空洞卷积是在标准的卷积里注入空洞,以此来增加感受野。空洞卷积多了一个超参数 dilation rate,指的是 kernel 的间隔数量(标准的 CNN 中 dilatation rate 等于 1)。空洞的好处是不做 pooling 损失信息的情况下,增加了感受野,让每个卷积输出都包含较大范围的信息。下图展示了标准 CNN (左)和 Dilated Convolution (右),右图中的 dilatation rate 等于 2 。

下面给出空洞卷积的定义,滤波器 [公式] ,序列 [公式],在 [公式] 处的 dilatation rate 等于 d 的空洞卷积为:
[公式] ,下图为一个空洞卷积的实例,假设第一层隐藏层最后五个节点分别为 [公式] ,第二层隐藏层的最后一个节点为 [公式] ,滤波器 [公式] ,根据公式有 [公式] 。

空洞卷积的感受野大小为 [公式] ,所以增大 [公式] 或 [公式] 都可以增加感受野。在实践中,通常随网络层数增加, [公式] 以 [公式] 的指数增长,例如上图中 [公式] 依次为 [公式] 。

2.3 残差模块(Residual block)

CNN 能够提取 low/mid/high-level 的特征,网络的层数越多,意味着能够提取到不同 level的特征越丰富。并且,越深的网络提取的特征越抽象,越具有语义信息。

如果简单地增加深度,会导致梯度消失或梯度爆炸。对于该问题的解决方法是权重参数初始化和采用正则化层(Batch Normalization),这样可以训练几十层的网络。解决了梯度问题,还会出现另一个问题:网络退化问题。随着网络层数的增加,在训练集上的准确率趋于饱和甚至下降了。注意这不是过拟合问题,因为过拟合会在训练集上表现的更好。下图是一个网络退化的例子,20 层的网络比 56 层的网络表现更好。

理论上 56 层网络的解空间包括了 20 层网络的解空间,因此 56 层网络的表现应该大于等于20 层网络。但是从训练结果来看,56 层网络无论是训练误差还是测试误差都大于 20 层网络(这也说明了为什么不是过拟合现象,因为 56 层网络本身的训练误差都没有降下去)。这是因为虽然 56 层网络的解空间包含了 20 层网络的解空间,但是我们在训练中用的是随机梯度下降策略,往往得到的不是全局最优解,而是局部最优解。显然 56 层网络的解空间更加的复杂,所以导致使用随机梯度下降无法得到最优解。

 

假设已经有了一个最优的网络结构,是 18 层。当我们设计网络结构时,我们并不知道具体多少层的网络拥有最优的网络结构,假设设计了 34 层的网络结构。那么多出来的 16 层其实是冗余的,我们希望训练网络的过程中,模型能够自己训练这 16 层为恒等映射,也就是经过这16 层时的输入与输出完全一样。但是往往模型很难将这 16 层恒等映射的参数学习正确,这样的网络一定比最优的 18 层网络表现差,这就是随着网络加深,模型退化的原因。

因此解决网络退化的问题,就是解决如何让网络的冗余层产生恒等映射(深层网络等价于一个浅层网络)。通常情况下,让网络的某一层学习恒等映射函数 [公式] 比较困难,但是如果我们把网络设计为 [公式] ,我们就可以将学习恒等映射函数转换为学习一个残差函数 [公式] ,只要 [公式] ,就构成了一个恒等映射 [公式] 。在参数初始化的时候,一般权重参数都比较小,非常适合学习 [公式] ,因此拟合残差会更加容易,这就是残差网络的思想。

下图为残差模块的结构,该模块提供了两种选择方式,也就是 identity mapping(即 [公式] ,右侧“弯弯的线",称为 shortcut 连接) 和 residual mapping(即 [公式] ),如果网络已经到达最优,继续加深网络,residual mapping 将被 push 为 0,只剩下 identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。

这种残差模块结构可以通过前向神经网络 + shortcut 连接实现。而且 shortcut 连接相当于简单执行了同等映射,不会产生额外的参数,也不会增加计算复杂度,整个网络依旧可以通过端到端的反向传播训练。

上图中残差模块包含两层网络。实验证明,残差模块往往需要两层以上,单单一层的残差模块 并不能起到提升作用。shortcut 有两种连接方式:

(1)identity mapping 同等维度的映射( [公式] 与 [公式] 维度相同):

[公式]

(2)identity mapping 不同维度的映射( [公式] 与 [公式] 维度不同):

[公式]

以上是基于全连接层的表示,实际上残差模块可以用于卷积层。加法变为对应 channel 间的两个 feature map 逐元素相加。

设计 CNN 网络的规则:

(1)对于输出 feature map 大小相同的层,有相同数量的 filters,即 channel 数相同;

(2)当 feature map 大小减半时(池化),filters 数量翻倍;

对于残差网络,维度匹配的 shortcut 连接为实线,反之为虚线。维度不匹配时,同等映射(identity mapping)有两种可选方案:

(1)直接通过 zero padding 来增加 channels(采用 zero feature map 补充)。

(2)增加 filters,直接改变 1x1 卷积的 filters 数目,这样会增加参数。

在实际中更多采用 zero feature map 补充的方式。

在残差网络中,有很多残差模块,下图是一个残差网络。每个残差模块包含两层,相同维度残差模块之间采用实线连接,不同维度残差模块之间采用虚线连接。网络的 2、3 层执行 3x3x64 的卷积,他们的 channel 个数相同,所以采用计算: [公式] ;网络的 4、5 层执行 3x3x128 的卷积,与第 3 层的 channel 个数不同 (64 和 128),所以采用计算方式: [公式] 。其中 [公式] 是卷积操作(用 128 个 3x3x64 的 filter),用来调整 x 的 channel 个数。

 

3 TCN(Temporal Convolutional Network)时间卷积网络

因为研究对象是时间序列,TCN 采用一维的卷积网络。下图是 TCN 架构中的因果卷积与空洞卷积,可以看到每一层 [公式] 时刻的值只依赖于上一层 [公式] 时刻的值,体现了因果卷积的特性;而每一层对上一层信息的提取,都是跳跃式的,且逐层 dilated rate 以 2 的指数增长,体现了空洞卷积的特性。由于采用了空洞卷积,因此每一层都要做 padding(通常情况下补 0),padding 的大小为 [公式] 。

下图是 TCN 架构中的残差模块,输入经历空洞卷积、权重归一化、激活函数、Dropout(两轮),作为残差函数 [公式] ;输入经历 1x1 卷积 filters,作为 shortcut 连接的 [公式] 。

下图是 TCN 的一个例子,当 [公式] 时,空洞卷积退化为普通卷积。

     

 转自知乎:https://zhuanlan.zhihu.com/p/69919158