TCN(Temporal Convolutional Network)是一种用于处理序列数据的深度学习模型,最初由 Bai, Kolter 和 Kurtzfarb 在其论文中提出,旨在解决时间序列预测、序列标注等问题。与传统的循环神经网络(RNN)和长短期记忆网络(LSTM)不同,TCN使用卷积神经网络(CNN)来处理时间序列数据。
1. 网络结构
-
时间卷积层: TCN 通过一维卷积层来捕获序列中的时间依赖性。使用卷积层可以有效地处理长序列数据,避免了 RNN 中的梯度消失和爆炸问题。
-
因果卷积: TCN 使用因果卷积(causal convolution),确保模型在处理当前时间步时只能访问过去的信息,而不会“偷看”未来的信息。这对于时间序列预测是至关重要的。
-
膨胀卷积: TCN 中的卷积层可以通过膨胀卷积(dilated convolution)来扩展感受野,使得网络能够在较少的层数中捕获更长时间尺度的依赖关系。膨胀卷积的实现方法是在卷积核之间插入空洞,这样能有效增加感受野,同时保持计算量相对较小。
-
残差连接: 为了缓解深层网络中的梯度消失问题,TCN 通常会使用残差连接,以便在训练更深的网络时保持信息流。
2.参数解释
-
过滤器(filter):这是卷积层中应用的过滤器的数量,决定了该层输出的通道数。更多的过滤器能够学习到更多的特征。
-
kernel_size:指卷积核的大小。在序列建模中,卷积核大小决定了每次看多少个时间步的数据。较大的卷积核可以捕捉到更宽的局部特征。
-
dilation_rate:膨胀率用于控制卷积核的感受野,通过在卷积核元素之间引入间隔来实现。膨胀率越大,感受野就越大,从而能够捕捉到更长时间跨度的依赖关系。
-
举个例子:
-
https://doi.org/10.1016/j.jenvman.2024.120967
- 第一层: 使用 8 个过滤器和卷积核大小为 3,膨胀率为 1,能够捕捉紧邻时间步的特征。
- 第二层: 再次使用 8 个过滤器,设置膨胀率为 2,能够扩展到捕捉与之前的特征之间有间隔的关系。
- 第三层: 输出通道数减少到 4,设置膨胀率为 4,能够进一步处理特征并捕捉长距离依赖。
- 最后一层设置了 4 个滤波器,那么不管输入的特征维度是多少,输出就会将通道数变换为 4,且时间维度(步数)不变,故输出矩阵的形状为 (10,4)
- TCN作用:提取到了时序中的关键特征,同时降低了数据的维度,更便于后续模块(如 Bi-LSTM、Attention 或全连接层)进行处理和预测。