大家好,又见面了,我是你们的朋友全栈君。
本文回顾了 Shaojie Bai、J. Zico Kolter 和 Vladlen Koltun 撰写的论文:An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling。
在 TCN 之前,我们经常将 LSTM 和 GRU 等 RNN 关联到新的序列建模任务中。 然而,论文表明 TCN(时间卷积网络)可以有效地处理序列建模任务,甚至优于其他模型。 作者还证明了 TCN 比 LSTM 保持更多的扩展记忆。
我们通过以下主题讨论 TCN 的架构:
- 序列建模
- 因果卷积 Causal Convolutions
- 空洞卷积 Dilated Convolutions
- 残差连接 Residual Connections
- 优点和缺点
- 性能比较
序列建模
虽然这篇论文不是第一个使用术语 TCN 的论文,但它的强调了可以是使用卷积来处理序列数据的一系列架构。
所以,让我们定义序列建模任务。
给定一个输入序列:
,我们希望每次预测相应的输出:
所以,论文中的一个序列建模网络是一个函数 f,它将一个 T+1 个元素的向量映射到另一个 T+1 个元素的向量:
有一个约束(因果约束):当预测时间 t <= T 的输出时,我们只能使用来自相同时间点和更早时间点的输入,例如:
我们不能使用比 t 更晚的时间点的输入:
上述序列建模的目标是找到一个网络模型 f 来最小化标签输出和预测之间的损失:
这种设置比一般的seq2seq模型(例如可以使用整个序列来执行预测的机器翻译)受到更多限制。
因此,TCN 是因果关系(没有从未来到过去的信息泄漏)并且可以将任何序列映射到相同长度的输出序列。
此外,它可以在残差连接的帮助下使用非常深的网络,并且可以在空洞卷积的帮助下查看很远的过去进行预测。
我们将一一讨论上述特征(casual、dilated、residual)。
因果卷积
TCN 使用 1D FCN(一维全卷积网络)架构。
每个隐藏层的长度与输入层的长度相同,并使用零填充以确保后续层具有相同的长度。
对于时间 t 的输出,因果卷积(具有因果约束的卷积)使用时间 t 和前一层更早时间的输入(参见上图底部的蓝线连接)。
因果卷积并不是一个新想法,但该论文结合了非常深的网络以允许长期有效的历史。
空洞卷积
译者注:Dilated Convolutions的中文翻译有很多个,例如 扩张卷积、膨胀卷积等。这里我是用我最常用称谓:空洞卷积。
如果我们回顾连续的时间步长,我们只能回顾网络中的层数。
为了克服这个问题,他们采用了空洞卷积,从距离 t 的每 d 步处获取输入:
其中 k 是内核大小。
因果卷积和空洞卷积的思想起源于 WaveNet 论文,其架构与 TCN 非常相似。
空洞卷积让网络回溯到 (k-1)d 个时间步长,使每层数的感受野呈指数级增长。
TCN 论文的作者说可以随着网络的深度呈指数增长:
其中 i 表示网络的第 i 级(我从 0 开始)。
为方便起见,下图是上面两张的同一张图。 第一个隐藏层上的空洞卷积每两步应用一次,其中 i=1。
空洞卷积通过特定排列确保某些过滤器在有效历史中命中每个输入,并允许使用深度网络获得较长的有效历史。
可以沿着从顶部到底部的蓝线查看它们到达底部的所有输入,这意味着输出的预测(以时间 T 为例)使用有效历史数据中的所有输入。
残差链接
残差块(最初来自ResNet)允许每一层学习对身份映射的修改,并在非常深的网络中工作得很好。
残差连接对于保证长期有效的使用历史非常重要。例如,如果一个预测依赖于2的12次方历史长度,我们需要12层来处理这么大的接受域。
下图为基线TCN的残差块。
每个残差块有两层空洞因果卷积、权重的归一化、ReLU 激活和 dropout。
如果输入通道的数量与扩张因果卷积的输出通道数量(第二个扩张卷积的过滤器数量)不同,则有一个可选的 1×1 卷积。
它是为了确保残差连接(卷积输出和输入的元素相加)有效。
优点和缺点
总结上面的架构
TCN = 1D FCN + 空洞因果卷积,这是一个非常简单且易于理解的结构,而不是其他序列模型(如 LSTM)。
除了简单之外,与 RNN(LSTM 和 GRU)相比,使用 TCN 还具有以下优势:
与 RNN 不同,TCN 可以利用并行性,因为它们可以并行执行卷积。
我们可以通过层数、扩张因子和过滤器大小来调整感受野大小,这使我们能够针对不同的领域要求控制模型的内存大小。
与 RNN 不同,梯度不是在时间方向上,而是在网络深度方向上,这会产生很大的不同,尤其是当输入长度很长时。因此,TCN 中的梯度更稳定(也归功于残差连接)。
内存需求低于 LSTM 和 GRU,因为每一层只有一个过滤器。换句话说,过滤器的总数取决于层数(而不是输入长度)。
但是TCN也有两个明显的缺点:
在评估期间,TCN 接收原始序列直至所需的历史长度,而 RNN 可以丢弃固定长度的块(输入的一部分),因为它消耗它们并仅保留隐藏状态形式的摘要。 因此,在评估过程中,TCN 可能需要比 RNN 更多的数据存储。
领域的迁移可能不适用于 TCN,尤其是当从一个需要短历史的域转移到另一个需要长历史的域时。
性能比较
作者使用各种序列建模任务比较了 LSTM、GRU、RNN 和 TCN 的性能:
如您所见,TCN 在大多数任务中的表现都优于其他模型。
一个有趣的实验是Copy memory任务(表格第四行),它检查模型在不同时间长度内保留信息的能力。
TCN 在复制记忆任务上实现了 100% 的准确率,而 LSTM 和 GRU 随着时间长度 T 的增长退化为随机猜测。 考虑到具有TCN直接使用卷积结构,这可能是显而易见的。
总体而言,TCN 的性能优于 LSTM。 作者的对TCN的信心体现在论文的以下引用中:
递归网络在序列建模中的优势可能在很大程度上是能够保留历史的信息。 直到最近,在引入空洞卷积和残差连接等架构元素之前,卷积架构确实更弱。 但我们的结果表明,有了这些元素简单的卷积架构在不同的时间序列建模任务中比 LSTM 等递归架构更有效。 由于 TCN 具有相当的清晰度和简单性,我们得出结论,卷积网络应该被视为一个自然的起点和一个强大的时间序列建模工具包。
本文的源代码:https://github.com/locuslab/TCN
本文作者:Naoki
An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling论文:arxiv:1803.01271
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129256.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...