时间序列是在一段时间内测量得到的数据,数据的顺序决定了序列的类别。根据H.I. Fawaz et al 的实验结果,ResNet在时间序列分类上有很好的表现[1], 所以本文的目的为验证在时间序列分类上 ResNet是否表现更加出色。
1. ResNet介绍
深度神经网络在非常“深”的时候,表现出了“退化”,即更深层的神经网络的train loss和test loss要高于较浅层的神经网络, 而这种现象不是由过拟合造成的(过拟合的话较深网络的train loss会比浅网络的小)。原因可能是梯度爆炸或消失(可以用ReLU和适当初始化解决),或者internal co-variate shift(ReLU is not zero-centered, initialization and input distribution might not be normalized, so input distribution shifts over time. Since deeper nets have amplified effect and layers constantly adapt, get slow learning. 不会翻,可以用batch normalization和ELU/SELU解决)。
Residual Block[2]
假设某一层的输入为,想要得到的映射desired hidden mapping为, 且,为residual mapping, 为identity mapping,假设优化residual mapping比原始结构更加容易,而且当identity mapping已经是最优的情况下(说人话就是学不到新东西了),把residual mapping训练成零比让原始的结构保持不变更简单。
上图所示的结构可以通过一个前馈神经网络加上“shortcut connection”来实现。实现identity mapping的shortcut connection就是identity shortcut connection, 既不会增加多余的参数,也不会增加计算复杂度。通过这个结构可以保证,向下一层传递的结果不会比上一层传来的更差, 也就保证深层网络的结果至少是和浅的一样的,不会更差。
Bottleneck Residual Block[2]
对于至多34层的网络或者比较小的图像,用标准的block;对于更深的网络和较大的图像,用bottlene building block。
Ensemble[3]
Residual networks 可以被看作是很多路径(path)的组合,假设有一个三层的ResNet,
2. 时间序列分类
时间序列在工业上有很多例子,一般是传感器的数据,机器log file或者是医学上ECG信号等。本次使用的是模拟的时间信号,有三种模式如下:
目的是在一长串的时间序列中将对应数据正确标注,使用ResNet作为模型。
数据处理
时间序列处理
对于时间序列,一般的 train-test splits 或者 k-fold cross validation并不适用,因为可能会破环时序的特征,时间序列处理方法参考How To Backtest Machine Learning Models for Time Series Forecasting
三类模式在总数据流中占的比例分别为51%,48% 和1%,数据分布很不平衡,起初只是在训练是用了class_weight,发现效果不是很好,所以对比重较大的两个类进行了采样,使三个类数量上比较相当,并且在训练中也用了class_weight。
其他的处理,包括把label转成one-hot-label,数据进行normalize等,可以用sklearn.preprocessing 里的LabelEncoder, OneHotEncoder, MinMaxScaler。
整个数据流被分为两个部分,前70%训练,剩下的验证。训练集中的数据以移动窗口的方式送进模型进行训练,也就是每个batch是一个较短的序列,序列之间会有重叠的部分。
模型
模型中包括三个 residual block,一个global average pooling层和一个softmax层, residual block里包括三层1D卷积和一个连接输入和输出的shortcut。
3. 代码实现
模型部分参考Deep Learning for Time Series Classification。
Reference
[1] H.I. Fawaz, G. Forestier, J. Weber, L. Idoumghar, P. Muller. Deep learning fortime series classification: a review.Data Mining and Knowledge Discovery,33:917–963, 2019.
[2]Z. Wang, W. Yan, T. Oates. Time series classification from scratch with deepneural networks: a strong baseline. In International joint conference on neural networks, pp 1578–1585, 2017
[3]A. Veit, M.J. Wilber, S. Belongie. Residual Networks Behave Like Ensembles of Relatively Shallow Networks. In Advances in Neural Information Processing Systens 29, pp 550-558, 2016
[4]K. He, X. Zhang, S. Ren, J. Sun. Deep residual learning for image recognition.InIEEE conference on computer vision and pattern recognition, pp770–778, 2016