庄连生 吕 扬 杨 健 李厚强
1(中国科学技术大学信息科学技术学院 合肥 230027)2(军事科学院系统工程研究院 北京 100191)3(鹏城实验室 广东深圳 518000)(lszhuang@ustc.edu.cn)
时间序列建模是机器学习领域的一个研究热点,广泛应用于股票行情分析、语音识别、脑电分析等领域[1].近年来,得益于海量数据资源的出现和计算资源的提升,以循环神经网络[2](recurrent neural network,RNN)为代表的深度学习技术被广泛应用于时间序列模型中,并在一些特定领域取得了巨大的成功(如语音识别).但是,现有循环神经网络仍然存在着3个问题:
1)难以捕获时间上的长期依赖关系.经验表明,RNN只能处理不超过200个时间步的时间序列数据之间的依赖关系,难以满足实际应用需要;
2)多数RNN网络只考虑了对时域信息建模,忽略了对频域信息建模,而频率是描述和分析时间序列的一个重要工具;
3)传统循环神经网络及其变体通常只能叠加2~3层,继续叠加反而会造成性能下降,不利于拟合复杂函数.这些缺陷限制了现有循环神经网络的性能,尤其是处理一些具有长时依赖关系且频率成分比较丰富的时间序列的时候.
针对上述问题,研究人员从不同角度对RNN网络进行改进和探索.为提高神经网络对长时依赖关系的建模能力,研究人员先后提出了长短期记忆网络[3](long short-term memory,LSTM),Peephole LSTM[4],GRU[5](gated recurrent unit),CW-RNN[6](clockwork RNN)等.最近,Li等人[7]提出一种独立循环神经网络(independently recurrent neural network,IndRNN)模型,通过解耦隐藏层神经元和引入修正线性单元(rectified linear unit,ReLU),维持网络的长期记忆,并可以叠加多层,更加容易训练成深层神经网络.但是,IndRNN仅考虑了时域特征模式,没有考虑频域特征模式.因此,当输入数据存在丰富的频率成分时,比如对股票交易数据、音位数据建模时,IndRNN模型反而不如其他简单的算法性能更好.
事实上,如果要对时间序列进行分类或预测,对频率成分的建模起着非常重要的作用[8].例如在音位分类问题中,像“p”,“t”这样的音位是由短而高频的信号产生的,而“iy”,“ey”等音位则与较长的低频信号有关.建模频域特征对于正确识别语句中的音位是相当有用的.类似地,在预测问题中,音乐片段通常由跨越频段的不同频率组成,所以自动生成音乐片段的剪辑通常需要适当地对高频和低频成分进行建模[8].此外,对特定物体进行跟踪也是一个经典的预测问题,特定物体跟踪问题可以表述为利用物体运动观察量持续预测某物体的实际位置,从信号处理的角度考虑,提取物体运动的观察量在某些频率上的特征和分析物体运动周期对于预测物体位置非常重要.此外,对社会现象进行分析或预测时,也应该考虑时间序列的频域特征模式.举例来说,在对交通流量数据进行分析时,工作日和双休日周期、早高峰和晚高峰周期,对于分析交通流量数据都尤为重要.因此,对时间序列中的频域特征模式建模,是正确分析时间序列数据的关键.基于上述观察,Hu等人[8-9]提出了一种状态频率记忆循环神经网络(state frequency memory recurrent neural network,SFM-RNN),通过多频率状态记忆实现对频域特征模式的提取.但是,SFM-RNN模型基于LSTM的门实现对高低频的选择,并不能有效地对长时依赖关系进行建模.事实上,我们的实验也表明SFM-RNN模型只能叠加1~2层,无法训练深层网络.
受IndRNN和SFM-RNN启发,本文提出一种新型循环神经网络结构——时频联合长时循环神经网络(long term recurrent neural network with state-frequency memory,LTRNN-SFM).该网络通过将传统信号分析手段引入到循环神经网络中,即通过将循环神经网络隐藏层的状态向量替换为状态-频率矩阵,联合捕获时间序列时域特征模式和频域的特征模式.同时,通过解耦隐藏层的神经元、引入非饱和激活函数ReLU和权重裁剪,有效地避免了梯度消失和梯度爆炸问题,既可以使网络维持长期记忆,又可以使深层网络更加容易训练.LTRNN-SFM借鉴了SFM-RNN和IndRNN的核心思想,在保留了两者优点的基础上巧妙避开了各自缺陷.最终,LTRNN-SFM比SFM-RNN模型更简单,也取得了比IndRNN更强的表达能力.最终实验表明:LTRNN-SFM在时间序列分类任务上性能更好,更适合处理长时依赖且频率丰富的时间序列.
Li等人[7]提出的IndRNN模型通过解耦隐藏层神经元、引入激活函数ReLU和权重裁剪,较好地避免了梯度消失和梯度爆炸问题,可以实现对具有长时间依赖关系的时间序列数据的有效建模.实验表明:IndRNN模型可以处理超过1 000个时间步的时间序列,并更容易堆叠得到深层网络.
IndRNN模型可以描述为
ht=σ(Wxt+u⊙ht-1+b),
(1)
其中,⊙代表矩阵的哈达玛积(Hadamard product)运算,这使得隐藏层中的神经元之间是相互独立的;σ代表激活函数ReLU.图1描述了基础IndRNN[7]模型结构.
Fig.1 Basic IndRNN architecture图1 基础IndRNN模型结构
对于第n个神经元,隐藏层的状态hn,t可以描述为
hn,t=σ(wnxt+unhn,t-1+bn),
(2)
其中,wn和un分别是输入权重矩阵的第n行和隐藏层权重向量的第n个元素,隐藏层的每个神经元只接收来自该时间步的输入信息和前一时间步隐藏层对应神经元的状态,即IndRNN模型中的每个神经元可以独立处理一种时间-空间特征模式,其中wn负责提取输入信息的空间特征,un负责提取来自上一时间步的时间特征.
IndRNN模型提出了隐藏层中各神经元独立提取时间-空间特征的新视角.不同神经元间的特征融合可以通过多层网络结构的堆叠实现,在这种情况下,上一层隐藏层的所有神经元的输出将作为下一层隐藏层每个神经元的输入.
IndRNN模型所使用的ReLU激活函数,不但改善了隐藏层内的梯度消失,也改善了隐藏层间的梯度消失,使IndRNN模型可以实现多层叠加.文献[7]证明了一层隐藏层权重是可对角化矩阵、激活函数是线性函数的传统RNN模型与2层IndRNN模型等价.此外,在多层叠加的IndRNN模型中,隐藏层之间是全连接的形式,因此也可以引入批量归一化(batch normalization,BN)等连接方式.
为了对时间序列进行多频率分析,Hu等人[8]提出了SFM-RNN模型,以捕捉输入时间序列的时域和频域特征.
SFM-RNN模型将LSTM模型的状态向量存储单元替换为状态-频率矩阵存储单元,对于预测和分类任务,通过门选择适当的状态-频率成分,决定应该选择哪些成分来预测输出信息或作为分类的依据.
SFM-RNN模型的状态-频率矩阵可由离散傅里叶变换得到:
(3)
Fig.2 Comparison between the cell structures of the LSTM and the SFM-RNN图2 LSTM和SFM-RNN网络单元结构对比图
此外,SFM-RNN模型能以自适应方式确定频率.具体而言,可以将频率定义为与每个时刻输入信息和存储单元相关的函数,使模型自动学习对应的频率.
本文提出的时频联合长时循环神经网络模型(LTRNN-SFM)借鉴了SFM-RNN模型和IndRNN模型的核心思路,有效保留了这2个模型的优点,巧妙避免了现有循环神经网络存在的主要问题.其基本思想是:通过将传统循环神经网络隐藏层的状态向量替换为状态-频率矩阵,联合捕获时间序列时域和频域的特征模式;通过解耦隐藏层神经元、引入非饱和激活函数ReLU和权重裁剪,有效地避免了梯度消失和梯度爆炸问题,既可以使网络维持长期记忆,又可以训练深层网络.
假设一个时间序列数据集中有M条时间序列,根据某个时间点上观测变量的数量,可以将时间序列划分为单变量时间序列和多变量时间序列[1].本文提出的时频联合长时循环神经网络可以处理单变量时间序列和多变量时间序列.
本文设计了2种网络结构,单层时频联合长时循环神经网络和多层时频联合长时循环神经网络,均可以应用于分类和预测问题.在具体应用中,基于不同的应用场合和目的,可以采用不同层数的网络结构.采用的层数越多,越能拟合复杂函数.
通过网络结构和梯度问题2个方面阐述单层时频联合长时循环神经网络.
1)网络结构
单层时频联合长时循环神经网络可以描述为
(4)
隐藏层的状态-频率矩阵可以分解为实部和虚部:
Reht=σ(Wxt[cosω1t,cosω2t,…,cosωKt]+
u⊙Reht-1+b),
(5)
Imht=σ(Wxt[sinω1t,sinω2t,…,sinωKt]+
u⊙Imht-1+b),
(6)
(7)
其中,(·)2代表该矩阵对应元素的平方.
ht的相位被定义为
(8)
其中,arctan(·)是对矩阵中每个元素进行反正切变换.
在最后一个时间步,根据式(7)求出隐藏层的状态-频率矩阵的幅度,作为预测或分类任务的依据,其中相位信息由于不影响最终结果被忽略.
如2.1节所述,在对时域和频域的特征模式联合建模时,在每个时间步,输入信息都分解到K个频率维度上.隐藏层的所有神经元共同构成状态-频率矩阵,以维持多频率状态记忆.对于状态-频率矩阵中的每个元素,用矩阵的行检索不同的状态,每个状态能理解为引发信号的某种物理因子.与此类似,用矩阵的列索引不同频率分量,表示不同因子对不同频率分量的影响程度.由于隐藏层神经元已经被解耦,神经元之间相互独立,下一时间步的神经元仅会接受上一时间步对应神经元的输出,每个神经元可以独立地处理一种状态-频率-时间模式,提高了神经元的可解释性.
2)梯度问题
正是由于时频联合长时循环神经网络隐藏层神经元之间相互独立,有效地避免了传统循环神经网络中的梯度消失和梯度爆炸问题.
具体而言,在误差反向传播过程中,由于隐藏层中神经元没有相互联系,因此可以对每个神经元独立计算梯度.
矩阵中第n行、第k列元素对应的神经元描述为
hn k,t=σ(wnxtejωkt+un khn k,t-1+bn k),
(9)
对于神经元hn k,假设时刻T的优化目标是Jn k,则反向传播到时刻t的梯度为
(10)
Fig.3 Illustration of the residual LTRNN-SFM architecture图3 引入残差连接的时频联合长时循环神经网络示意图
深层时频联合长时循环神经网络可以通过单层时频联合长时循环神经网络叠加而成.网络叠加有助于拟合更加复杂的函数.
传统循环神经网络及变体(如RNN和LSTM)的激活函数主要基于sigmoid和tanh,一般只能叠加2~3层,再往上叠加性能反而下降,这是由于sigmoid和tanh的梯度在饱和区域非常平缓,从而造成层间梯度消失.而深层时频联合长时循环神经网络由于使用了非饱和函数ReLU,可以有效缓解层间的梯度消失问题.此外,BN层的应用也较好地改善了深层神经网络的梯度问题.
和IndRNN模型类似,在时频联合长时循环神经网络中,隐藏层之间也是全连接的形式,因此同样可以引入BN等连接方式.图3为引入残差连接的多层时频联合长时循环神经网络示意图.
图3中“Weight”和“LTRNN-SFM+ReLU”分别表示对输入数据的处理和每个时间步的隐藏层神经元的处理.
时频联合长时循环神经网络的应用如图4所示:
Fig.4 Applications of LTRNN-SFM图4 时频联合长时循环神经网络的应用
1)时间序列预测任务
假设训练集有M条单变量时间序列,第m条时间序列表述为{zm,t|t=1,2,…,T},n步预测任务定义为根据前t个时间步的序列对t+n时间步的值zm,t+n进行预测[5]:
(11)
其中,f表示从历史信息预测n个时间步后信息的函数映射.时频联合长时循环神经网络即等价于式(11)中f映射.
在时频联合长时循环神经网络的预测任务中,网络的训练分为2个阶段:
① 前向传播阶段.对时间序列预测时,将时频联合长时循环神经网络最后一个时刻的隐藏层的状态-频率矩阵ht的幅度|ht|,作为全连接层的输入,并通过全连接层将矩阵压缩得到n步预测值.
② 反向传播阶段,即误差传播阶段.最小化训练集中预测值和真实值间的平方差之和进行训练:
(12)
网络中所有参数通过基于时间的反向传播(back-propagation through time,BPTT)算法进行更新.
2)时间序列分类任务
假设一个时间序列数据集中有M条多变量时间序列,即D={V1,V2,…,VM},每条时间序列有T个观测点和一个类标签,即第m条时间序列可以表示为Vm=〈vm,1,vm,2,…,vm,T,cm〉.时间序列分类任务可以定义为将时间序列的一组观测值映射为类标签[1].
在时频联合长时循环神经网络分类问题中,网络的训练分为2个阶段:
(13)
在分类任务中,得到最大概率的类标签作为网络输出的预测类标签.
② 反向传播阶段,即误差传播阶段.计算实际输出类标签和理想类标签的交叉熵代价函数,并按照最小化交叉熵的方法调整权重矩阵.
交叉熵代价函数:
(14)
为验证本文所提出的时频联合长时循环神经网络的性能,下面将网络应用于SKLearn(scikit-learn)手写数字数据集分类任务、人体动作识别数据集分类任务和手势阶段数据集分类任务中.
SKLearn是基于Numpy和Scipy的一个机器学习算法库,其中包含了大量优质的数据集.本实验选取的是SKLearn中的手写数字数据集[10].该数据集共有1 797个样本,样本示例如图5所示.其中每个样本对应一张手写数字图像和一个0~9整数的标签,图片分为10类,即手写数字0~9.不同于MNIST手写数字数据集,SKLearn中的每张手写数字图像大小为8×8像素,这使识别更加困难,对算法要求更高.数据集被随机划分为测试集和训练集,其中训练集占80%,测试集占20%.
为了将图像分类问题转换为时间序列分类问题,每张手写数字图片被视为一串时间序列,该序列有8个观测点,每个观测点有8个观测变量,即一个多变量时间序列.具体而言,每张图片以矩阵的形式存储,如图5所示,其中矩阵中每行对应每个观测时间点,行中每个元素对应每个观测变量.
0051391000013151015500315201180041200880058009800411011270021451012000061310000
Fig.5 Example of SKLearn hand-written digital dataset图5 SKLearn 手写数字数据集示例
实验中采用的对比模型包括LSTM[3],IndRNN[7],SFM-RNN[8]以及本文提出的LTRNN-SFM.对于IndRNN,LSTM,LTRNN-SFM,由于2层模型的性能明显优于单层模型,因此本实验基于2层堆叠的网络结构.对于SFM-RNN模型,2层SFM-RNN的性能反而比单层SFM-RNN模型有明显下降,甚至由于每次初始化不同,模型可能无法收敛,因此实验采用单层SFM-RNN模型.这种设置保证了每种模型有最佳性能表现,保证了比较的公平性.
图6显示了4种模型在测试集上的分类正确率,这里模型训练的轮数为500轮.
Fig.6 Experimental results for the hand-written digital dataset图6 手写数字数据集实验结果
由图6可知,LTRNN-SFM模型的性能明显优于IndRNN,LSTM,SFM-RNN.该实验结果也验证了2.1节对模型的分析,即对分辨率较低的图片进行分类时,LTRNN-SFM由于引入了多频率分析,而不只是时域一个维度,与只考虑了时域信息的神经网络模型(IndRNN,LSTM)相比,性能有一定的提高.这里需要指出的是,IndRNN模型性能表现比SFM-RNN和LSTM还差.这主要是因为,IndRNN适合处理长时依赖关系的时序数据,而本实验中每张图像转换为时序数据长度仅为8,并不能体现出模型适合长时依赖的优势.从这个结果同时可以看出,本文所提出的算法对于短时序列也是有效的,体现了LTRNN-SFM模型的鲁棒性.
本实验使用UCI人体动作识别数据集(UC Irvine machine learning repository-human activity recognition,UCI-HAR)[11]来验证模型的有效性.该数据集的来源是30名年龄在19~48岁之间的志愿者,每个人在腰上佩戴智能手机(三星Galaxy S II)进行了6项活动(步行、站立、坐、躺、上楼、下楼),通过嵌入式加速度计和角速度计,研究人员以50 Hz的恒定速率捕获3个轴方向的线性加速度和3个轴方向的角速度.这些实验已经过视频记录以手动标记数据.所获得的数据集已被随机分成2组,其中70%的志愿者被选中用于生成训练数据,其余30%的志愿者生成测试数据.实验选择了未提取特征的完整原始传统信号,共10 299个样本,其中训练集有7 352个样本,测试集有2 947个样本.每个样本可以被视为一条有128个观测时间点的多变量时间序列,每个观测点有9个观测变量.
实验比较了4种模型(LSTM[3],IndRNN[7],SFM-RNN[8],LTRNN-SFM)在UCI-HAR数据集上的性能,网络结构与3.1节实验相同,模型训练轮数设置为1 000轮.实验结果如图7所示:
Fig.7 Experimental results for the UCI-HAR dataset图7 人体动作识别数据集UCI-HAR实验结果
由图7可知,LTRNN-SFM,IndRNN,LSTM三者在测试集上的正确率相差不大,但是SFM-RNN性能表现却比较糟糕.这可能是因为SFM-RNN模型大量使用了sigmoid,tanh饱和激活函数,导致在较长的时间序列中,会造成梯度消失/爆炸的问题.对于IndRNN和LSTM两种模型,由于没有考虑到频率特征模式,使得其性能也稍逊于本文的LTRNN-SFM.
为了进一步验证LTRNN-SFM模型捕捉长时依赖关系的能力,本实验选择了UCI手势阶段分类数据集[12].该数据集是用Kinect采集的多人动态手势库,旨在实现非特定人的动态手势识别,以提高视频预处理能力.采集的数据包括6个关节点(左手、右手、左手腕、右手腕、头部、脊柱)对应的位置(坐标x,y,z).具体而言,3位志愿者被要求阅读3个漫画,并用手势讲述漫画内容,其中包括志愿者A讲述故事1,2,3,志愿者B和志愿者C讲述故事1和故事3.最后由手势研究人员对文件进行手动分割,将所有文件分为5个不同的阶段.本实验采用的数据集为UCI数据集的子集[13],并选取了未提取特征的原始信号,所获得的数据集被随机分为2组,共396个样本,其中80%的数据被用于训练,20%的数据被用于测试,属于小样本问题.每个样本可以被视为一条有214个观测时间点的多变量时间序列信号,每个观测点有18个观测变量.
实验比较了4种单层模型(LSTM[3],IndRNN[7],SFM-RNN[8],LTRNN-SFM)在该数据集上的性能.由于数据集较小,模型训练轮数设置为300轮.实验结果如图8所示:
Fig.8 Experimental results for the gesture phase dataset图8 手势阶段分类数据集实验结果
由图8可知,SFM-RNN和LSTM的测试正确率逊于另外2种模型,这证明了LTRNN-SFM的长时记忆能力,也从实验角度证实了解耦隐藏层神经元、引入ReLU激活函数和权重裁剪后缓解了梯度问题.值得注意的是,LTRNN-SFM比IndRNN的测试正确率高出10%以上,这是由于手势数据中含有丰富的频率成分,并且该数据集属于小样本问题,LTRNN-SFM既联合考虑了时域和频域信息,又能维持长期依赖关系,对数据的表示和拟合能力更强.
针对现有循环神经网络在解决时序建模问题时存在的不足,本文提出一种时频联合长时循环神经网络,可以应用于具有长时依赖关系且频率丰富的时间序列分析任务,包括时间序列预测和时间序列分类.该模型把传统信号分析手段引入到循环神经网络,通过将传统循环神经网络隐藏层的状态向量替换为状态-频率矩阵,实现对时间序列时域特征模式和频域特征模式的联合建模.同时,通过解耦隐藏层神经元、引入非饱和激活函数ReLU和权重裁剪,有效地避免了梯度消失和梯度爆炸问题,使神经网络模型既可以维持长期记忆,又更加容易训练深层网络.实验结果表明:该模型比目前循环神经网络模型具有更好性能、更适合时间序列分析.
对于时频联合长时循环神经网络,未来可以从3个方面进行改进:1)如何设计更好的多层模型结构;2)是否可以使模型隐藏层中神经元不是完全独立而是部分连接;3)如何让模型有更广泛的针对性或适用性.这些都是我们未来的研究方向.