CDIL-CNN：用于长序列数据的分类的环形扩张卷积神经网络
论文： Classification of Long Sequential Data using Circular Dilated Convolutional Neural Networks
代码： https://github.com/leicheng-no/cdil-cnn 
长序列数据分类是一项重要的机器学习任务，出现在许多应用场景中。例如，将文档划分为不同的主题类别；对心电图时间序列数据进行分类可以判断某人是健康人还是心脏病患者。
循环神经网络(RNN)、Transformers和卷积神经网络是进行序列数据模型学习的三种主要方法。 
RNN使用其内部状态逐步处理序列。其在短序列上表现非常成功，但是由于梯度消失和梯度爆炸的原因，RNN通常无法扩展到很长的序列。且RNN是递归计算的， 训练非常耗时。 
Transformers是通过基于self attention机制的模型。由于需要进行内积计算，通常计算消耗大。 
相比之下，CNN能够处理很长的序列，容易训练和并行化。扩张卷积可以成倍地扩大感受野，使CNN使用更少的层来捕获长期依赖性。可扩展到超长序列的时间卷积网络（TCN）在时间序列回归任务上取得了较好的表现。但是由于TCN使用了一个倾斜的连接协议，并且在最后一个位置使用了输出分类结构，使得TCN的性能受到了限制,这种不对称性限制了TCN依赖于整个序列的分类的性能。 
本文提出了一种新的称为循环扩张卷积神经网络（CDIL-CNN）的对称多尺度卷积结构，其中每个位置都有平等的机会从前一层的其他位置接收信息，且可以自适应的扩展到任意长的时间序列上，在长序列分类任务上获得较好的效果。
对比CDIL-CNN和TCN的架构图，可以看到，TCN是一个非对称的架构，输出的信息受序列位置影响，序列越靠后位置的信息带来的影响越大。CDIL-CNN是一个对称结构，每个位置的输出都可以利用前一层的其他位置接收信息。两者都利用了空洞卷积的特性，通过逐层增加空洞尺寸大小以快速扩张信息感受野。 
值得注意的时，即使CDIL-CNN是一个对称的结构，但是输出仍然受序列位置影响。由于中间位置的感受野扩张的更快，两边位置感受野扩张的慢，因此CDIL-CNN仍然不能公平的利用所有位置的信息。直觉来说，当关键信息位于序列中央时，CDIL-CNN的表现会更好，当关键信息位于序列尾端时，TCN的表现会更好。 
为了解决序列位置对输出影响的这一问题，本文提出了循环计算的方法以解决这一问题。通常的CNN中会使用固定方法进行填充（padding）。由于边界信息和填充的数据进行混合会影响边界部分的特征传递。本文提出使用循环计算的方法以连接序列首尾两端进行计算，具体计算过程如下图所示：
使用上述循环计算的方法可以让首尾的信息更快的进行汇总， 使得最后一个卷积层的每个位置都有同等的机会接收整个输入序列的所有信息。因此，我们的模型可以应用一个简单的平均集成学习，如下所示，多层CDIL-CNN Block后，序列的每一个输入都有一个对应的输出，对每个输出学习一个分类模型，最后进行平均集成学习来获得更好的性能。
上图使用序列任务常用的加法问题来对比各种方法的表现，可以看出相对其它方法，CDIL-CNN的模型精度几乎不受序列长度的影响。
在上表显示图像，文本等各种长序列任务中，均可以看到CDIL-CNN表现非常优秀。 
本文提出了一种新的卷积模型，称为循环扩张卷积神经网络（CDIL-CNN），用于超长序列数据序列分类。实验结果表明，在各种长序列数据集上，CDIL-CNN比其他模型具有更好的性能。作者提出未来可以增加其它模块如绝对位置编码、相对位置编码和条件位置编码，这可以进一步提高模型性能。 
[1] https://arxiv.org/abs/1803.01271