Research on Efficient Algorithm of Robot Along the Wall Combined With Historical Motion State
-
摘要: 针对目前室内移动机器人沿墙走算法过于复杂、路径易重复、不能完全遍历、效率低等问题, 采用室内未知环境下结合历史状态的机器人沿墙高效遍历研究来解决这些问题. 该算法由移动机器人的上一个周期历史环境运动状态(分8类)、当前环境运动状态(分8类)和旋向信息(分2类)建立运动规则库, 沿墙行走时移动机器人时时采集这三类信息(上一个周期历史环境运动状态、当前环境运动状态和旋向信息)决定移动机器人当前的运动方向, 如此循环直到完成指定的沿墙任务. 最后对该算法进行了仿真与实际实验, 实验结果证明该算法可以在不同的、复杂的环境中高效、快速地完成沿墙走的任务, 并且对室内未知环境有很好的适应性.Abstract: The indoor mobile robots moving along the wall will encounter the issue of complex algorithm, easy repetitive path, partial traversal and low efficiency, to end these problems, efficient traversal research of robots along the wall in the unknown environment is proposed in this work. The algorithm establishes a motion rule based on the previous cycle historical environment motion state of the mobile robot (in 8 categories), the current environmental motion state (in 8 categories), and the direction information (in 2 categories). The mobile robot collects timely while walking along the wall. These three types of information (previous cycle historical environment motion state, current environmental motion state, and direction information) determine the current motion direction of the mobile robot, and thus cycle until the specified wall-to-wall task is completed. Finally, the algorithm is simulated and experimented. The experimental results show that the algorithm can efficiently and quickly complete the task along the wall in different and complex environments, which indicates that the algorithm has good adaptability to indoor unknown environment.
-
时间序列数据在现实生活中广泛存在, 例如金融领域中的交易数据和经济统计数据、消费电商领域中的用户浏览和购买数据、医疗领域中的医疗器械的信号记录、天气监测站记录的天气指标数据等[1-4]. 这些时间序列数据是相应领域非常宝贵的数据资源, 对这些数据的准确、有效分析和利用有助于减小人力成本, 提高生产效率, 提高经济收益[5].
现实中的时间序列通常具有复杂的非线性动态, 这为时间序列预测带来了困难. 另外, 由于人类活动或自然运动的影响, 时间序列数据常常体现出一定的周期性. 周期性的提取对时间序列预测有着积极意义. 时间序列的趋势同样具有重要的意义, 有时甚至作为预测的目的.
传统的时间序列分析方法源自于自回归模型(Autoregressive model, AR)和移动平滑模型(Mo-ving average, MA). 自回归移动平滑模型(Autoregressive model and moving average, ARMA)和在其基础上发展起来的自回归差分移动平滑模型(Auto-regressive integrated moving average, ARIMA)是时间序列分析的经典方法[6]. 另外, 自回归条件异方差模型(Autoregressive conditional heteroscedasticity, ARCH)[7]和广义自回归条件异方差模型(Gen-eralized autoregressive conditional heteroscedasticity, GARCH)[8]引入了异方差, 对时间序列的波动性进行建模. 基于机器学习的支持向量机回归(Sup-port vactor regression, SVR)和核岭回归(Kernel ridge regression, KRR)等方法在时间序列分析上已经有大量的研究[9-11]. 随着深度学习理论的发展, 循环神经网络(Recurrent neural networks, RNNs)已经成为处理时间序列数据的主流, 在大量应用场景中取得了不俗的效果[12-13]. 回声状态网络(Echo state network, ESN)也是时间序列预测的常用模型[14].
传统的时间序列分析方法基于平稳性假设[15], 对短期平稳的时间序列有较好的预测效果, 但是难以对复杂非线性时间序列数据进行有效建模. SVR和KRR等机器学习方法使用滑动窗口的方式处理预测序列, 忽略了时间序列数据的序列属性, 不能很好地捕捉时间序列中的长时依赖. 同时SVR和KRR受限于模型容量, 难以达到预测非线性时间序列的最佳效果. 深度神经网络由于其超强的拟合能力, 在复杂非线性时间序列数据的处理方面有着天然的优势. 同样对于分割后的序列窗口, 深度神经网络仍能从中捕捉时间序列的长期依赖.
能源领域是产生大量时间序列的领域, 如电力用量数据、风力序列数据、太阳能数据和电力价格数据等. 其中, 电力价格是能源市场上的关键因素, 影响着能源市场的流通和运行. 能源市场的自由属性使电力价格具备了金融商品性质, 但其还受到电力传输和需求量的影响. 电力传输受电网传输容量的限制, 而电力需求量受人类活动和天气因素的影响. 在这些影响因素下, 电力价格数据呈现出长期复杂非线性动态, 体现出高波动性. 另外电力价格还存在着明显的周期性.
传统的时间序列预测方法对电力价格的预测已有大量研究和应用[16], 而循环神经网络在电力价格预测中同样取得了不错的效果[17]. 针对能源领域时间序列的周期性属性, 传统的方法主要采用信号处理方法, 而常规的循环神经网络中并没有对时间序列的周期性进行建模的模块. 目前, 许多研究针对数据的周期性展开, 主要研究工作有: Clements等[18]提出了多方程时间序列方法, 在方程中加入了周期设定, 对澳洲能源市场的电力负载进行预测; Anbazhagan等[19]使用离散余弦变换处理原始序列, 并用神经网络进行建模; Rafiei等[20]使用小波变换处理原始序列, 并用极限学习机对分解结果进行建模等.
针对循环神经网络难以对时间序列数据的周期性直接进行建模的问题, 本文结合时间序列周期分解的思想, 设计了循环神经网络的周期损失和趋势损失, 分别对时间序列中的周期和趋势进行辅助建模; 在多任务学习框架下, 将周期损失、趋势损失和模型自身的损失函数相结合, 联合优化循环神经网络. 提出的模型用于能源市场的电力价格预测, 实验结果取得了较好的预测精度, 验证了周期和趋势对时间序列预测的作用, 说明本文提出的周期损失和趋势损失能够有效地辅助模型捕捉数据特征.
1. 循环神经网络
循环神经网络是常用的建模时间序列的神经网络模型. 循环神经网络使用基于时间的反向传播算法(Back-propagation through time, BPTT)来训练网络.
1.1 基础循环单元
基础的循环神经网络及其展开形式如图1所示. 其数学形式为
$$ h_t = f\left( {Ux_t +Wh_{t-1} } \right) $$ (1) $$ o_t = g\left( {Vh_t } \right) \quad \quad \quad \quad \;\; $$ (2) 其中,
$ U $ ,$ V $ ,$ W $ 都是网络的参数,$ f $ 和$ g $ 表示激活函数, 可以是ReLU、sigmoid和tanh等非线性函数.$ x_t $ 表示$ t $ 时刻的输入,$ h_t $ 表示$ t $ 时刻网络的隐藏状态,$ o_t $ 表示$ t $ 时刻网络的输出.基础的循环神经网络在训练时会面对梯度爆炸或梯度消失的问题[21].
1.2 长短时记忆网络
为了克服循环神经网络的梯度爆炸和梯度消失问题, Hochreiter等[22]提出了长短时记忆网络(Long short term memory, LSTM). LSTM的内部结构如图2所示.
LSTM的主要思想是引入门控单元和长时记忆单元. 门控单元负责控制长时记忆单元中状态的记忆、修改和遗忘. 同时, LSTM还具有和基础循环神经网络相同的短期记忆单元.
LSTM的数学表示为
$$ f_t = \sigma \left( {W_f \left[ {h_{t-1} ,x_t } \right]+b_f } \right) \quad \quad \!\!\!$$ (3) $$ i_t = \sigma \left( {W_i \left[ {h_{t-1} ,x_t } \right]+b_i } \right) \quad \quad $$ (4) $$ o_t = \sigma \left( {W_o \left[ {h_{t-1} ,x_t } \right]+b_o } \right) \quad \quad \!\!\!$$ (5) $$ \tilde {C}_t = \tanh \left( {W_C \left[ {h_{t-1} ,x_t } \right]+b_C } \right) $$ (6) $$ C_t = i_t \tilde {C}_t +f_t C_{t-1} \quad \quad \quad \quad \quad \!\!\! $$ (7) $$ h_t = o_t \tanh \left( {C_t } \right) \quad \quad \quad \quad \quad\quad $$ (8) 其中,
$ C_t $ 和$ \tilde {C}_t $ 分别表示$ t $ 时刻的长期记忆和短期记忆,$ f_t $ ,$ i_t $ 和$ o_t $ 分别表示LSTM的遗忘门、输入门和输出门在$ t $ 时刻的值.$ \left( {W_f ,b_f } \right) $ ,$ \left( {W_i ,b_i } \right) $ ,$ \left( {W_o ,b_o } \right) $ 和$ \left( {W_C ,b_C } \right) $ 分别表示LSTM的遗忘门、输入门、输出门和长时记忆单元的参数.$ \sigma $ 代表sigmoid函数.$ x_t $ 表示$ t $ 时刻的输入,$ h_t $ 表示$ t $ 时刻隐藏状态的输出.由于引入了门控单元和长时记忆单元, 状态的更新方式从乘性增量更新变为了加性增量更新[23], 从而一定程度上避免了梯度消失问题.
1.3 门控循环单元
门控循环单元(Gate recurrent unit, GRU)[24]是LSTM的一个重要变体. 相比于LSTM, GRU进行了一定的简化: 将遗忘门和输入门合并成为一个门控单元, 称为更新门; 去除了长期记忆单元, 与隐藏状态混合, 保留短期记忆单元; 去除了输出门, 改为重置门. GRU的内部结构如图3所示.
GRU的数学表示为
$$ z_t = \sigma \left( {W_z \left[ {h_{t-1} ,x_t } \right]} \right) \quad \quad \quad $$ (9) $$ r_t = \sigma \left( {W_r \left[ {h_{t-1} ,x_t } \right]} \right) \quad \quad \quad $$ (10) $$ \tilde {h}_t = \tanh \left( {W\left[ {r_t \times h_{t-1} ,x_t } \right]} \right) $$ (11) $$ h_t = \left( {1-z_t } \right)h_{t-1} +z_t \tilde {h}_t \quad \quad $$ (12) 其中,
$ \tilde {h}_t $ 表示$ t $ 时刻的短期记忆,$ h_t $ 表示$ t $ 时刻的隐藏状态.$ z_t $ 和$ r_t $ 分别表示GRU的更新门和重置门在$ t $ 时刻的值.$ W_z $ ,$ W_r $ 和$ W $ 分别表示GRU的更新门、重置门和短期记忆单元的参数.GRU大大精简了参数, 相同隐藏状态的GRU的参数量约为LSTM的2/3, 使得模型更不容易过拟合. 本文使用GRU作为默认的循环神经网络模型.
2. 基于周期损失和趋势损失的时间序列预测
结合时间序列周期分解, 设计了循环神经网络的周期损失和趋势损失, 将周期损失、趋势损失和模型自身的损失函数相结合, 在多任务学习框架下, 联合优化循环神经网络.
2.1 周期分解
周期分解是一种对时间序列的周期和趋势建模的经典方式.
周期建模是指, 针对周期性的时间序列, 可以显式的考虑序列跨周期的关系. 周期性的一种形式化表述为
$$ \begin{split} & ACF\left( {x_t ,x_{t-T} } \right)\gg ACF\left( {x_t ,x_{t-\tau } } \right) \\ & \quad \quad \quad \quad \quad \quad \quad \quad \quad \!\!\!\! \forall \tau :od \left( {\tau ,T} \right)\ne 0 \end{split} $$ (13) 其中,
$ ACF $ 代表自相关函数. 周期序列按照周期的延迟序列的自相关性应该远远大于其他的延迟序列.趋势建模是指除了建模每一个具体时间点的具体数值, 还应该捕捉到一段时间的“整体状态”, 包括总体走势、变化范围等因素.
可以认为, 时间序列是趋势、周期和余差的组合. 时间序列的分解可以是加性的, 也可以是乘性的, 即
$$ X_t = T_t +S_t +R_t $$ (14) $$ X_t = T_t \times S_t \times R_t $$ (15) 其中,
$ X_t $ 表示原始时间序列,$ T_t $ 表示趋势分量,$ S_t $ 表示周期分量,$ R_t $ 表示余差. 乘性的组合可以通过对数函数转换为加性组合, 所以这两种组合实质上是一致的.2.2 周期损失函数和趋势损失函数
时间序列的周期分解启发了周期损失函数和趋势损失函数的提出.
周期损失函数鼓励循环神经网络预测的隐藏状态出现周期性. 假设一个循环神经网络的隐藏状态具有周期性, 它的隐藏状态需要满足一定的条件:
$$ \begin{split} \cos nt =\; & h_t +h_{t+1} +\cdots +h_{t+T-1}\cong \\ & h_{t+1} +h_{t+2} +\cdots +h_{t+T} \end{split} $$ (16) 即有
$$ h_t \cong h_{t+T} $$ (17) 为了在循环神经网中加入这样的隐藏状态关系, 在
$ \left[ {t_1 ,t_2 ,\cdots ,t_n } \right] $ 的时间窗上定义如下的周期损失函数$$ \ell _{\rm seasonal} \left( {kT} \right) = \frac{1}{n}\sum\limits_{t = t_1 }^{t_n } {D\left( {h_t ,h_{t+\tau } } \right)} $$ (18) 其中,
$ D\left( {\ast ,\ast } \right) $ 表示距离度量函数,$ \tau $ 表示隐藏状态之间的时间跨度.针对周期为
$ T $ 的时间序列, 一般取$ \tau = kT $ .$ \tau $ 也可以取1, 这样式(18)可以视为循环神经网络的一种正规化方法.$ D\left( {\cdot ,\cdot } \right) $ 一般取平方距离, 此时的周期损失为$$ \ell _{\rm seasonal} \left( {kT} \right) = \frac{1}{nm}\sum\limits_{t = t_1 }^{t_n } {\sum\limits_{i = 1}^m {\left\| {h_t^{\left( i \right)} -h_{t+kT}^{\left( i \right)} } \right\|^2} } $$ (19) 其中,
$ m $ 表示循环神经网络的隐藏状态的维度,$ h_t^{\left( i \right)} $ 表示$ t $ 时刻隐藏状态的第$ i $ 维的值. 更长周期跨度有助于鼓励长距离的周期平稳性.在很多实际应用中, 每个时间点的数值并不是最受关注的问题, 而关注的重点在于捕获某种趋势. 时间序列的趋势可以由一段时间内的均值、最大最小值和波动率来反映.
在
$ \left[ {t_1 ,t_2 ,\cdots ,t_n } \right] $ 的时间窗上对时间序列的趋势进行建模, 从均值、最大最小值和波动率的角度可以得到如下的几个趋势损失函数$$ \begin{split} \ell _{\rm trend}^{\rm MEAN} \left( w \right) =\; & \frac{1}{n}\sum\limits_{t = t_1 }^{t_n } {\left\| {mean\left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.}- \\ & \left. {mean\left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right\|^2 \end{split} $$ (20) $$ \begin{split} \ell _{\rm trend}^{\rm MAX} \left( w \right) =\; & \frac{1}{n}\sum\limits_{t = t_1 }^{t_n } {\left\| {\max \left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.} - \\ & \left. {\max \left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right\|^2 \end{split}\;\;\;\; $$ (21) $$ \begin{split} \ell _{\rm trend}^{\rm MIN} \left( w \right) =\; & \frac{1}{n}\sum\limits_{t = t_1 }^{t_n } {\left\| {\min \left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.} -\\ &\left. {\min \left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right\|^2 \end{split} $$ (22) $$ \begin{split} \ell _{\rm trend}^{\rm VAR} \left( w \right) =\; & \frac{1}{n}\sum\limits_{t = t_1 }^{t_n } {\left\| {var\left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.} - \\ & \left. {var\left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right\|^2 \end{split} $$ (23) 其中,
$ \ell _{\rm trend}^{\rm MEAN} $ 、$ \ell _{\rm trend}^{\rm MAX} $ 、$ \ell _{\rm trend}^{\rm MIN} $ 和$ \ell _{\rm trend}^{\rm VAR} $ 分别代表均值趋势损失、最大趋势损失、最小趋势损失和波动趋势损失.$ w $ 表示趋势窗宽, 一般与序列的时间窗宽度$ n $ 不同.$ \hat {y} $ 是循环神经网络的预测值,$ y $ 是真实值.2.3 基于多任务学习的混合预测模型
在机器学习中, 通常只关注一个优化目标. 多任务学习(Multi-task learning)[25]是同时学习多个相关的任务并在这些任务间共享某些底层的特征表示的机器学习方式. 在深度学习中, 多任务学习非常普遍.
一般地, 针对多个优化目标, 多任务学习框架中存在共同优化和分开交替优化两种优化方式. 共同优化适用于紧密相关的任务, 分开交替优化则适用于不相关任务和对抗性任务. 周期性和趋势约束作为时间序列预测的辅助任务, 与预测任务关系密切. 因此, 将周期损失和趋势损失引入优化目标进行共同优化是合理的.
本文根据多任务学习的框架, 将周期损失和趋势损失将作为预测任务的共同优化目标, 在原来的损失函数的基础上, 加入了辅助损失函数, 得到时间序列多任务学习混合模型的优化目标函数
$$ J = L_{\rm main} +\lambda _S \ell _{\rm seasonal} +\ell _{\rm trend} \quad \quad \quad \;$$ (24) $$ \begin{split} \ell _{\rm trend} =\; & \lambda _T^{\rm MEAN} \ell _{\rm trend}^{\rm MEAN} +\lambda _T^{\rm MAX} \ell _{\rm trend}^{\rm MAX}+ \\ & \lambda _T^{\rm MIN} \ell _{\rm trend}^{\rm MIN} +\lambda _T^{\rm VAR} \ell _{\rm trend}^{\rm VAR} \end{split} \;\;\;\; $$ (25) 其中,
$ \lambda _S $ 是周期损失的权重,$ \lambda _{\rm trend}^{\rm MEAN} $ ,$ \lambda _{\rm trend}^{\rm MAX} $ ,$ \lambda _{\rm trend}^{\rm MIN} $ 和$ \lambda _{\rm trend}^{\rm VAR} $ 分别代表对应的趋势损失的权重.引入周期损失和趋势损失的循环神经网络依然可以通过BPTT算法来训练.
3. 仿真实验
3.1 能源市场简介
欧洲能源交易所(European Power Exchange, EPEX)是欧洲最重要的能源交易市场, 覆盖了德国、法国、英国等欧洲最主要的国家. 电力在各个国家的电网之间进行交换, 其中一部分是通过事先规划的方式, 而另一部分则通过能源交易所进行交易. 每个国家都会有自己的子市场, 例如EPEX法国市场. EPEX 法国市场的现货市场主要分为三个子市场: 日前交易市场(Day-ahead market)、日内交易市场(Intraday market)和再平衡市场(Balancing market). 能源市场的实际交易主要发生在日前交易市场. 通常EPEX法国市场的日前交易市场每天形成24个报价, 即每小时一个报价.
图4展示了EPEX法国市场2012年~2015年的一天的不同小时的价格的均值和标准差. 可以看出, 电力价格的标准差非常高, 在均值的1/4以上, 在个别时间段(9:00~11:00)的标准差甚至超出了均值. 这说明EPEX法国市场的电力价格具有超高的波动性. 图5和图6分别展示了EPEX法国市场2012年~2015年每年的日级别平均价格和周级别平均价格. 可以看出, 无论是按日的级别还是周的级别对电价进行统计, 每年的电力价格均呈现非常相似的走势, 体现出明显的周期性.
3.2 实验及结果
选用EPEX法国市场的电力价格数据作为仿真来源. 数据来自日前电力市场, 时间段取自2012年1月1日~2016年6月30日, 其中2012年1月1日~2015年12月31日(共1 461天)的序列数据用来做训练和验证, 2016年1月1日~2016年6月30日(共182天)的序列数据用来做测试. 通常每天有24个时间点(夏令时转换日有23个时间点, 冬令时转换日有25个时间点).
为了保证数据的稳定性, 需要对数据进行预处理, 去除数据的均值和波动率的影响
$$ \tilde {x}_t^h = \frac{x_t^h -\bar {x}_t }{std\left( x \right)} $$ (26) 其中,
$ x $ 代表所有的序列数据,$ h $ 表示序列中的年份信息(2012年~2016年),$ x_t^h $ 表示不同年份的在同一时间点$ t $ 的序列值,$ \bar {x}_t $ 表示$ x_t^h $ 按年份展开的子序列的均值,$ \tilde {x}_t^h $ 为处理后的序列值. 经过这样的变换, 大部分时间点的数据处于[−1, 1]区间, 可以避免出现一些数值问题.实验对比了几种基础的循环神经网络: RNN、LSTM和GRU. 为了分析周期损失和趋势损失的作用, 在GRU的基础上分别添加周期损失、趋势损失或者两者都添加.
循环神经网络需要调整的超参数有: 隐层大小、优化器、初始学习率、批大小(batch size)、训练轮数(epochs)以及延迟窗宽. 针对引入周期损失和趋势损失的GRU, 还需要调整的有: 周期损失系数
$ \lambda _S $ 、周期损失中的周期跨度kT、趋势损失系数($ \lambda _{\rm trend}^{\rm VAR} $ 、$ \lambda _{\rm trend}^{\rm MEAN} $ 、$ \lambda _{\rm trend}^{\rm MAX} $ 和$ \lambda _{\rm trend}^{\rm MIN} $ )和趋势窗宽$ w $ . 这里考虑能源市场的短期周期, 故$ k $ 取1,$ T $ 取24. 由于能源市场的价格预测任务往往不关注每日的平均价格和价格的波动预测的误差,$ \lambda _{\rm trend}^{\rm MEAN} $ 和$ \lambda _{\rm trend}^{\rm VAR} $ 的值都预设为0, 不再纳入超参数选择中. 能源市场的价格预测比较关注一天内的最大最小值, 因此趋势窗宽$ w $ 设为24. 训练时间段的最后一个月(2015年12月)作为验证时间段. 通过在验证时间段内进行多次实验的方式来选取超参数. 选出来的超参数将被用于在完整的训练时间段上的训练. 循环神经网络的超参数设置如表1所示.表 1 循环神经网络的超参数设置Table 1 The hyperparameters of RNN超参数 具体取值 隐层大小 64 优化器 RMSProp, 配合梯度裁剪 初始学习率 0.001 批大小 64 训练轮数 12 延迟窗宽 14 表2列出了周期损失和趋势损失的合理的取值范围.
表 2 周期损失和趋势损失的权重范围Table 2 Weights range of seasonal loss and trend loss权重 取值范围 $\lambda_S $ 0.05~0.15 $\lambda_T^{\rm{MEAN}} $ 0 $\lambda_T^{\rm{MAX}} $ 0.05~0.1 $\lambda_T^{\rm{MIN}} $ 0.05~0.1 $\lambda_T^{\rm{VAR}} $ 0 除了与基础的循环神经网络进行对比, 另外还选取了ARIMA、SVR和KRR作为对比模型. SVR和KRR的超参数均通过在训练时间段内的5折交叉验证直接选取, 均选用3阶多项式核. 为了满足ARIMA模型的静态性要求, 电力价格数据还需要经过特殊处理, 即将序列减去最小值后取对数, 然后进行天级和周级的延迟差分
$$ {p}' = (1-\beta ^{24})(1-\beta ^{168})\ln (p-\min p+1) $$ (27) 实验采用均方根误差(Root mean square error, RMSE)和平均绝对误差(Mean absolute error, MAE)作为评价指标
$$ RMSE = \sqrt {\frac{1}{N}\sum\limits_{t = 1}^N {\left( {\hat {y}_t -y_t } \right)^2} } $$ (28) $$ MAE = \frac{1}{N}\sum\limits_{t = 1}^N {\left| {\hat {y}_t -y_t } \right|} \quad \quad \quad $$ (29) 其中,
$ N $ 表示测试时间段的时间点数. RMSE也是各模型训练时的损失指标.为了更合理地比较趋势损失的影响, 本文还引入了两个额外指标, 最大趋势绝对误差
$ {MAE}^{\rm{MAX}} $ 和最小趋势绝对误差$ {MAE}^{\rm{MIN}} $ , 分别考察模型对每天电力价格最大值和最小值的预测能力$$ \begin{split} MAE^{\rm{MAX}} =\; & \frac{1}{M}\sum\limits_{t = 1}^M {\left| {\max \left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.}- \\ & \left. {\max \left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right| \\ \end{split} $$ (30) $$ \begin{split} MAE^{\rm{MIN}} =\; & \frac{1}{M}\sum\limits_{t = 1}^M {\left| {\min \left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.}- \\ & \left. {\min \left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right| \\ \end{split} $$ (31) 其中,
$ M $ 表示测试时间段划分的趋势窗的数目.由于神经网络在训练过程中具有一定的随机性, 每次训练的得到的结果都有所不同. 为了保证实验结果的可信性, 对所有循环神经网络采用了重复10次训练并取测试结果的平均值和标准差. 各方法在能源价格预测的结果见表3.
表 3 各种方法的能源价格预测效果对比Table 3 The result comparisons of different methods for electricity price forecasting模型 RMSE MAE ${MAE}^{\rm{MAX}}$ ${MAE}^{\rm{MIN}}$ ARIMA 6.41 4.77 5.15 4.82 SVR 4.91 3.71 4.27 3.34 KRR 5.14 3.75 3.81 3.78 RNN 5.09±0.24 3.75±0.19 3.72±0.28 3.78±0.19 LSTM 4.90±0.18 3.65±0.17 3.65±0.42 3.61±0.26 GRU 4.83±0.19 3.54±0.06 3.64±0.31 3.56±0.26 GRU, $\lambda_S$ = 0.1, $\lambda_T^{\rm{MAX}}$ = 0, $\lambda_T^{\rm{MIN}}$ = 0 4.71±0.16 3.49±0.13 3.53±0.28 3.53±0.15 GRU, $\lambda_S$ = 0.05, $\lambda_T^{\rm{MAX}}$ = 0, $\lambda_T^{\rm{MIN}}$ = 0 4.74±0.11 3.45±0.18 3.53±0.23 3.48±0.26 GRU, $\lambda_S$ = 0 , $\lambda_T^{\rm{MAX}}$ = 0.1 , $\lambda_T^{\rm{MIN}}$ = 0.1 4.85±0.16 3.57±0.20 3.41±0.26 3.41±0.18 GRU, $\lambda_S$ = 0 , $\lambda_T^{\rm{MAX}}$ = 0.05 , $\lambda_T^{\rm{MIN}}$ = 0.05 4.83±0.11 3.54±0.08 3.39±0.18 3.42±0.15 GRU, $\lambda_S$ = 0.1, $\lambda_T^{\rm{MAX}}$ = 0.1 , $\lambda_T^{\rm{MIN}}$ = 0.1 4.68±0.08 3.45±0.03 3.35±0.13 3.33±0.12 GRU, $\lambda_S$ = 0.05, $\lambda_T^{\rm{MAX}}$ = 0.05 , $\lambda_T^{\rm{MIN}}$ = 0.05 4.60±0.15 3.34±0.12 3.38±0.13 3.27±0.11 从实验结果可以看出, 对于电力价格预测这类复杂的时间序列预测问题, ARIMA模型的预测效果不佳, SVR、KRR和RNN的效果接近且远远优于ARIMA模型LSTM和GRU的预测效果比SVR和KRR更好, 而基础的GRU在对比模型中效果最佳. 添加周期损失能对GRU起到比较好的辅助效果, 有助于降低模型的预测误差, 提升预测效果. 趋势损失最直接的影响是显著降低最大趋势误差和最小趋势误差, 说明模型通过趋势损失捕捉到了数据在时间窗内的趋势信息(包括电力价格的极值、均值和变化率等), 这对模型捕捉数据特征的能力起到了有力的补充. 另外可以注意到的是, 加入周期损失也能够降低最大趋势误差和最小趋势误差. 这说明周期损失有助于网络捕捉一些数据的本质特征. 实验结果表明: 同时引入周期损失和趋势损失可以使GRU的性能达到最佳.
引入周期损失和趋势损失的GRU在最佳的参数下(
$ \lambda _S = \lambda _T^{\rm{MAX}} = \lambda _T^{\rm{MIN}} = 0.05 $ )的预测结果如图7所示.可以看出, 引入周期损失和趋势损失的GRU对电力价格数据的预测效果不错, 预测曲线对真实数值的走势和变化跟踪准确. 预测曲线具有非常好的周期性, 这体现了周期损失中周期性约束的作用. 同时, 预测曲线更偏向于平稳的预测, 这在一定程度上避免了噪声带来的预测性能损失. 另外, 预测曲线在正常情况下的最大最小值的预测效果很好, 说明趋势损失能够起到有效的监督效果. 但可以观察到的是, 模型在一些极端值(电力价格的异常攀升和下降)上的预测效果不佳. 这涉及到突变的预测问题, 在现有模型框架下难有较好的预测效果.
为了进一步分析周期损失的效果, 将GRU和加入周期损失的GRU在训练一段时间之后的隐藏状态
$ h_t $ 分别抽出, 并将向量$ h_t $ 的均值作对比, 部分结果如图8所示.由于时间序列本身具有一定的周期性, 使得隐藏状态序列都表现出了一定的周期性. 但是, 使用了周期损失的GRU的隐藏状态明显更加平稳, 并且每个周期内的数值更加平滑; 而未使用周期损失的GRU的隐藏状态的波动性更大, 并且单个周期内的波动也更大. 这些更大的波动可以认为是捕捉到了更多的噪声. 所以, 周期损失有助于捕捉数据更本质的特征而非噪声.
4. 结论
循环神经网络能够提取时间序列中的深层信息, 是非常有效的时间序列预测方法. 本文通过定义周期损失和趋势损失的合理形式, 试图在循环神经网络内对时间序列的周期和趋势进行建模, 改善模型的性能, 建立了基于周期性建模和多任务学习的时间序列预测模型. 在能源市场价格预测的任务的仿真实验表明: 本文提出的周期损失能够有效引导循环神经网络学习数据的周期性, 提升预测效果, 降低数据噪声的影响. 周期损失还有助于模型捕捉数据的本质特征. 趋势损失则能对提升趋势相关的预测任务的预测效果.
-
表 1 移动机器人运动转向判断关系
Table 1 Mobile robot motion steering judgment relationship
$k$ $k_1$ 1 2 3 4 5 6 7 8 1 前进 左转 $f_x$ 决定右转 左转 右转 $f_x$ 决定$f_x$ 决定2 前进 前进 前进 右转 前进 右转 $f_x$ 决定$f_x$ 决定3 $f_x$ 决定左转 $f_x$ 决定右转 左转 右转 $f_x$ 决定$f_x$ 决定4 前进 左转 前进 前进 左转 前进 $f_x$ 决定$f_x$ 决定5 右转 右转 右转 右转 右转 右转 右转 右转 6 左转 左转 左转 左转 左转 左转 左转 左转 7 前进 前进 前进 前进 前进 前进 前进 前进 8 $f_x$ 决定右转 $f_x$ 决定左转 右转 左转 $f_x$ 决定$f_x$ 决定表 2 机器人沿墙顺时针行走运动转向判断表
Table 2 Robot walking along the wall clockwise movement steering judgment table
$k$ $k_1$ 1 3 7 8 1 左转 左转 左转 2 前进 前进 3 右转 右转 左转 左转 4 左转 左转 8 右转 右转 右转 右转 表 3 机器人沿墙逆时针行走运动转向判断表
Table 3 Counterclockwise walking movement steering judgment table of robot along the wall
$k$ $k_1$ 1 3 7 8 1 右转 右转 右转 2 右转 右转 3 左转 左转 右转 右转 4 前进 前进 8 左转 左转 左转 左转 表 4 机器人状态转移表
Table 4 Robot state transfer table
$k$ $k_1$ 1 2 3 4 5 6 7 8 1 $p_{11}$ $p_{12}$ $p_{13}$ $p_{14}$ $p_{15}$ $p_{16}$ $p_{17}$ $p_{18}$ 2 $p_{21}$ $p_{22}$ $p_{23}$ $p_{24}$ $p_{25}$ $p_{26}$ $p_{27}$ $p_{28}$ 3 $p_{31}$ $p_{32}$ $p_{33}$ $p_{34}$ $p_{35}$ $p_{36}$ $p_{37}$ $p_{38}$ 4 $p_{41}$ $p_{42}$ $p_{43}$ $p_{44}$ $p_{45}$ $p_{46}$ $p_{47}$ $p_{48}$ 5 $p_{51}$ $p_{52}$ $p_{53}$ $p_{54}$ $p_{55}$ $p_{56}$ $p_{57}$ $p_{58}$ 6 $p_{61}$ $p_{62}$ $p_{63}$ $p_{64}$ $p_{65}$ $p_{66}$ $p_{67}$ $p_{68}$ 7 $p_{71}$ $p_{72}$ $p_{73}$ $p_{74}$ $p_{75}$ $p_{76}$ $p_{77}$ $p_{78}$ 8 $p_{81}$ $p_{82}$ $p_{83}$ $p_{84}$ $p_{85}$ $p_{86}$ $p_{87}$ $p_{88}$ -
[1] 王栋耀, 马旭东, 戴先中. 基于声纳的移动机器人沿墙导航控制. 机器人, 2004, 26(4): 346−350 doi: 10.3321/j.issn:1002-0446.2004.04.012Wang Dong-Yao, Ma Xu-Dong, Dai Xian-Zhong. Wall-following navigation control for a sonar-based mobile robot. Robot, 2004, 26(4): 346−350 doi: 10.3321/j.issn:1002-0446.2004.04.012 [2] 朱毅, 张涛, 宋靖雁. 未知环境下势场法路径规划的局部极小问题研究. 自动化学报, 2010, 36(8): 88−96Zhu Yi, Zhang Tao, Song Jing-Yan. Study on the local minima problem of path planning using potential field method in unknown environments. Acta Automatica Sinica, 2010, 36(8): 88−96 [3] Nasrinahar A, Chuah J H. Intelligent motion planning of a mobile robot with dynamic obstacle avoidance. Journal on Vehicle Routing Algorithms, 2018, 1: 89−104 [4] Van Turennout P, Honderd G, Van Schelven L J. Wall-following control of a mobile robot. In: Proceedings of the 1992 IEEE International Conference on Robotics. IEEE, 1992. 280–285 [5] Y. Ando, S. Yuta. Following a wall by an autonomous mobile robot with a sonar-ring. In: Proceedings of the 1995 IEEE International Conference on Robotics and Automation. IEEE, 1995. 2599−2606 [6] Lee C L, Lin C J, Lin H Y. Smart robot wall-following control using a sonar behavior-based fuzzy controller in unknown environments. Smart Science, 2017, 5(3): 1−7 [7] Wu G D, Zhu Z W, Chien C W. Sparse-sensing-based wall-following control design for a mobile-robot. In: Proceedings of the 2016 IEEE International Conference on Control and Robotics Engineering (ICCRE). IEEE, 2016. 1–5 [8] 周慧, 李剑汶, 江昊威, 童峰. 基于单超声传感器的移动机器人沿墙导航. 声学技术, 2014, 33(2): 243−246Zhou Hui, Li Jian-Wen, Jiang Hao-Wei, Tong Feng. Mobile robot wall-following navigation based on a single ultrasonic sensor. Technical Acoustics, 2014, 33(2): 243−246 [9] 李霞, 孙秋凤. 沿墙走算法在竞赛灭火机器人中的应用. 实验室研究与探索, 2018, 37(5): 38−41Li Xia, Sun Qiu-Feng. Application and exploration of the algorithm of walking along the wall in the fire extinguishing robot. Research and Exploration in Laboratory, 2018, 37(5): 38−41 [10] Wei X, Dong E B, Liu C S, Han G M, Yang J. A wall-following algorithm based on dynamic virtual walls for mobile robots navigation. In: Proceedings of the 2018 IEEE International Conference on Real-time Computing. IEEE, 2018. 46–51 [11] Zuo S X, Ou Y S, Zhu X R. A path planning framework for indoor low-cost mobile robots. In: Proceedings of the 2017 IEEE International Conference on Information. IEEE, 2017. 18–23 [12] Juang C F, Chen Y H, Jhan Y H. Wall-following control of a hexapod robot using a data-driven fuzzy controller learned through differential evolution. IEEE Transactions on Industrial Electronics, 2015, 62(1): 611−619 doi: 10.1109/TIE.2014.2319213 [13] Hsu C H, Juang C F. Evolutionary robot wall-following control using type-2 fuzzy controller with species-DE-activated continuous ACO. IEEE Transactions on Fuzzy Systems, 2013, 21(1): 100−112 doi: 10.1109/TFUZZ.2012.2202665 [14] 徐明亮, 柴志雷, 须文波. 移动机器人模糊Q-学习沿墙导航. 电机与控制学报, 2010, 14(6): 83−97 doi: 10.3969/j.issn.1007-449X.2010.06.015Xu Ming-Liang, Chai Zhi-Lei, Xu Wen-Bo. Wall-following control of a mobile robot with fuzzy Q-learning. Electric Machines And Control, 2010, 14(6): 83−97 doi: 10.3969/j.issn.1007-449X.2010.06.015 [15] Wardana A A, Widyotriatmo A, Turnip A. Wall following control of a mobile robot without orientation sensor. In: Proceedings of the 3rd International Conference on Instrumentation Control and Automation (ICA). IEEE, 2013. 212–215 [16] Silva Ortigoza R, Garcia Sanchez J R, Hernandez Guzman V M, Marquez Sanchez C, Marcelino Aranda M. Trajectory tracking control for a differential drive wheeled mobile robot considering the dynamics related to the actuators and power stage. IEEE Latin America Transactions, 2016, 14(2): 657−664 doi: 10.1109/TLA.2016.7437207 期刊类型引用(5)
1. 余乘风,许仁波,蒋林,周和文,黄惠保. 结合霍夫变换找墙体直线的沿墙导航算法. 农业装备与车辆工程. 2024(03): 101-106 . 百度学术
2. 蒋林,张燕飞,马先重,朱建阳,雷斌. 二次区域划分的全覆盖路径规划. 哈尔滨工程大学学报. 2022(10): 1483-1490 . 百度学术
3. 蒋林,方东君,雷斌,李维刚. 单目视觉移动机器人导航算法研究现状及趋势. 计算机工程与应用. 2021(05): 1-9 . 百度学术
4. 聂文康,蒋林,雷斌,汤勃. 基于深度学习的语义栅格地图构建方法. 武汉科技大学学报. 2021(06): 468-477 . 百度学术
5. 宋国栋,魏立科,马宏伟,付霁野,刘希梁. 六轴式小臂机器人运动学理论研究及其在掘锚作业中的应用. 煤炭学报. 2021(S2): 1114-1123 . 百度学术
其他类型引用(3)
-