时序卷积网络-因果卷积与空洞卷积

一般来说,时间序列分析大多基于循环神经网络(RNNs)来进行, 但RNNs也存在着训练速度慢, 门控机制复杂, 难以并行化等缺点。相比之下, 卷积神经网络(CNNs)具有更快的训练速度,更强的并行能力,可以充分利用GPU加速计算,适用于大规模数据处理。那么能否将CNNs引入时序任务中,以达到改善计算性能的目的呢?答案是肯定的,这种架构被称作时序卷积网络(Temporal Convolutional Network,TCN)。

TCN可由因果卷积空洞卷积两种架构来实现,本节我们将分别展开介绍

2.1 因果卷积

使用卷积运算来处理序列数据时首先会面临一个首要问题,就是普通的卷积操作并不符合因果律。换句话来说,当普通的卷积核在输入数据上进行滑动时,对当前位置的左右(或上下)数据都有访问权限。这意味着在时间序列或其他序列数据中,普通卷积会使用未来和过去的数据来计算当前输出。这在时间相关任务中可能引入未来信息,从而违反因果律。

图1
上图是一种普通一维卷积`Conv1d`的示意图,卷积核长度为3,沿输入数据(序列)向下滑动,步长为1。可以看到,当t=1时,卷积核也接受了来自第2、3个时间点的数据。但在处理时间序列数据时,特别是在预测未来的时刻,我们不希望未来的信息在当前时刻被使用。

这就引入了“因果卷积”。因果卷积保证了在任何时间点t,输出只依赖于时间点t及其之前的输入,而不依赖于t之后的输入。因果卷积可以通过对输入数据进行适当的填充(padding)来实现,如下式:

padding=(kernelSize1)×dilation

具体地说,假设我们有一个一维的输入序列和一个大小为k的卷积核,为了实现因果卷积,我们可以在序列的开始处填充k-1个零,然后进行标准的卷积操作。这样,卷积的输出在任何时间点t都会依赖于时间点t及其之前的输入,如下图:

图1

这其实就是一个类似数据对齐的操作,通过填充0将卷积核与序列对齐到位,相当于把真正的序列向后移,这样卷积核就不会覆盖到未来的时间步上面了

2.2 空洞卷积

空洞卷积(dilated convolution),又称膨胀卷积,一种改进的卷积操作,通过在卷积核中的元素之间插入间隔来扩大感受野,而无需增大卷积核,节省了计算资源。在时序任务中,使用空洞卷积有助于网络提取更长距离的时序依赖关系。如下图所示,由于空洞卷积后的特征图中存在空隙,不再是连续的矩形空间,故称空洞。

图1

注意空洞卷积是通过卷积后填充实现的,所需的参数量于普通卷积相同,输出的特征图大小与普通卷积相同

空洞卷积中一个重要的参数称为膨胀因子,这个参数规定了数据点之间的间距大小,也就是将卷积后的特征图扩张多少倍。

图1

如图,在膨胀因子 dilation=2 的时候,网络在卷积时会隔掉一个数据,以此类推,当膨胀因子为3时这个卷积核中间会空的更大,会隔过去两个数据,膨胀因子为4时同理。

posted @   KevinScott0582  阅读(365)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示