This week, I read a paper on recurrent neural networks, it is mentioned in the paper that most of the existing time series data prediction methods are analyzed on a single time scale, this method is suitable for simulating the short-term dependence of time series, but lacks consideration of long-term trend and periodicity. Therefore, this paper proposes a time series data prediction model based on multi time scale RNN to model the short-term, periodicity and trend of passenger travel, which improves the prediction accuracy of the model. In the learning of recurrent neural networks, I used paper and pen to complete the forward propagation and back propagation of the deep circular neural network, and summarized the solutions to the problems of gradient explode and gradient vanshing.
本周,我阅读了一篇关于循环神经网络的论文,论文中提到现有的时序数据预测方法大多是在单一的时间尺度上进行分析的,这种方式适用于模拟时间序列的短期依赖,而缺乏了对长期的趋势性与周期性的考虑。因此论文提出了基于多时间尺度RNN的时序数据预测模型,对旅客出行的短期性、周期性和趋势性进行建模,提升了模型的预测精度。在循环神经网络的学习中,我用纸笔完成了对深度循环神经网络的前向传播和反向传播,以及总结了梯度爆炸和消失问题的解决方法。
文献链接:基于多时间尺度RNN的时序数据预测
时间序列数据的预测是很多领域研究的热点问题,但大多数模型都是在单一的时间尺度上进行研究。针对这一问题,基于真实的民航旅客历史出行记录,通过对数据统计处理,对旅客的出行特点以及行为规律进行了深入分析。根据其时序数据的特征建立基于后向传播算法的循环神经网络(RNN)预测模型,对未来时段的日客流量进行预测。在此基础上考虑到时序数据在不同时间尺度呈现不同的变化规律,建立多时间尺度的预测模型对旅客出行的周期性和趋势性进行建模,提升预测精度。
时间序列数据是在各种生产生活领域中广泛出现的数据类型。它反映了事物或者行为等随着时间的推移而产生的状态变化和发展规律,例如天气变化情况,电力负荷变化的变化情况,特定区域人口的流动的变化情况等。时间序列预测即根据已知的时间序列所反映出的发展过程和规律,通过特定的预测模型进行拟合,从而预测其未来的变化趋势的方法。换句话说就是根据已知的可观测事件来预测将来发生的事件。
论文以民航旅客出行情况为研究对象,基于真实的国内机场旅客出行记录数据,对旅客的出行规律和特点进行了深入的分析。采用了基于后向传播算法的循环神经网络(RNN)模型对其进行建模,并根据数据的时序特点建立基于多种时间尺度的预测模型,从而对未来时段旅客的出行情况进行分析和预测,提升预测的准确性。
RNN是一种对序列数据进行建模的神经网络,在该结构中,当前的输出受当前的输入和上一步的输出的影响,同时也影响着后面的输出。其主要形式是该结构有个循环结构会保留前一次循环的输出结果并作为下一次循环输人的一部分输入。与其他神经网络相比,RNN具有一定的优势,体现在普通神经网络的的一个局限:固定大小的输入输出。
例如:输入输出都为一张图的向量,RNN在这方面表现较好,序列可以成为该结构的输入输出。
例如:输入一句评语,输出情绪分类; 输入一段话,输出主题序列。
下图为循环神经网络结构图:
RNN通常由输入层、隐藏层、输出层三部分构成的。在RNN中,参数U、V、W 在该循环结构的每一次输入中都会被共享,此举措使得神经网络中需要学习的参数得到很大程度的降低。隐藏层对于RNN来说是最为重要的,主要用于对序列的信息捕获,最为主要的工作都是由它来实现的。
主要的工作原理如下:
其中:
Wst-1,Win,Wout都是矩阵,主要起到连接作用,分别用在隐藏层节点的自连接,输入层到隐藏层和权值连接以及输出层到隐藏层的权值连接;xt 和 ot 分别表示为第 t 步的输入和输出,而第 t -1 步和第 t 步隐藏层的输出则分别表示为 st-1,st,fs 和 fo 都为激活函数,分别属于隐藏层和输出层。激活函数是该结构对非线性问题解决的重要部分,在保留特征、去除冗余数据等方面起到很大的作用。
考虑到时间序列数据具有其独特的变化特点,因此需要对其设计具有针对性的建模方案。以机场旅客流量预测为例,旅客的出行记录反映出各个机场旅客的行为规律,而根据直观认知,机场未来时段的客流量与之前几天的客流量相关;此外,各机场旅客流量也可能具有一定的周期性,例如每周机场流量的变化具有一定的规律性;此外各机场流量也可能具有一定的长期的时间依赖,例如机场的客流量在每个月或每个季度整体上具有一定的长期趋势变化。
针对机场客流量在短期、周期、长期三种不同时间尺度上的时间依赖关系,论文中使用一种基于多时间尺度的RNN预测模型,同时考虑多个时间尺度下的依赖关系,从而对未来时段的机场客流量进行更加全面的预测分析。
下图是基于多时间尺度的RNN模型的整体结构:
其中:每个时段各机场的旅客流动情况表示为矩阵形式
多尺度RNN模型主要由3个部分组成,对应于时间的短期性依赖、周期性依赖和长期性依赖的建模。在每一部分中,使用可以捕获时序依赖的RNN模型对各机场旅客流动情况进行拟合,Sigmoid函数作为激活函数。最后将多个时间尺度对应部分的输出结果进行加权融合,得到多尺度RNN模型的最终结果。
论文中使用的数据来自民航 2010 年至 2011 年的旅客出行记录,数据包括起飞机场、抵达机场、旅客 ID、起飞日期、起飞时间等属性。为了对民航旅客流量进行分析与预测,要对海量的原始数据进行处理,包括数据合并,去除无效记录以及去除稀疏记录等。
1)考虑民航旅客在时间上的短期性
从图中可以看出,时间间隔较小的时候旅客流量的比值越趋近于 1,即对应时段的客流量情况越相似。
2)考虑民航旅客流量在时间上的周期性
上图是2010年和2011年全国民航旅客流量,从图中可以看出,全国民航旅客流量的波动趋势在两年中具有一定的相似性,并且存在明显的以星期为单位的周期性波动,并在全国法定节假日期间出现明显变化。
3)考虑民航旅客流量在时间上的长期性特征
从图中可以看出,随着时间的推移,客流量整体上具较为明显的变化趋势,民航旅客的出行情况在较长的时间跨度下具有一定的趋势性变化,因此同样需要对长期的时间依赖关系进行建模。
论文使用均方根误差(RMSE)来评估模型:
其中:Xi hat:预测值;Xi:真实值;Z:所有预测值的个数;RMSE 值越小代表模型的预测效果越好。
下图是论文中使用的基于多时间尺度的RNN模型与其他基准模型的预测效果对比:
从图中可以看出,论文中使用的多时间尺度RNN模型优于其他对比方法,取得了最好的预测效果,该模型能够较为准确的拟合旅客的出行行为。
1)论文根据出行数据的短期时间依赖、周期性时间依赖和长期性时间依赖,建立基于多时间尺度的循环神经网络预测模型来对旅客出行的短期性、周期性和趋势性进行建模,提升了模型的预测精度。
2)影响民航旅客出行情况的因素有很多,由于缺乏地理、气温、节假日等外部因素信息,论文所使用的模型还具有一定的局限性,可能对模型预测准确率有一定程度的影响。
参考链接:https://www.cnblogs.com/rongyux/p/6715235.html
单向循环神经网络的作用是根据前文猜测后面的内容,下图为一个单隐含层结构示意图:
循环层:St = f(U * xt + W * st-1)
输出层:Ot = g(V * st)
其中:U、V 和 W都为权重,f 和 g都是激活函数。
双向循环神经网络的作用是根据前文和后文猜测中间的内容,如下图所示:
双向循环神经网络的隐藏层要保存两个值,一个进行正向计算,另一个进行反向计算。
隐藏层:A2 = f(W * A1 + U * x2);A’2 = f(W’ * A’3 + U’ * x2)
输出层:y2 = g(V * A2 + V’ * A’2)
其中:同向权重共享,异向权重不共享,最后的输出取决于正向运算和反向运算相加的和。
堆叠多个隐藏层,如下图所示:
公式:st = f(U * xt + W * st-1)
展开为矩阵形式:
BTPP算法将第l层和t时刻的误差项值沿两个方向传播,一个方向是其传递到上一层网络,这部分只和权重矩阵U有关;另一个是方向是将其沿时间线传递到初始时刻t1,这部分只和权重矩阵W有关。
梯度爆炸问题:设置阈值,如果超过阈值,直接将梯度设置为该值。
梯度消失问题:
1)合理地初始化权重,躲避梯度消失区域;
2)用relu代替tanh和sigmoid作为激活函数;
3)使用LSTM或者GRU结构。
在本周的学习中,我继续学习了循环神经网络,总结了一些梯度爆炸和梯度消失问题的解决方法,并手动推导了深度循环神经网络的前向传播和反向传播的公式。在下周会继续学习循环神经网络,扩展自己的知识面。