浙江大学学报(工学版), 2020, 54(12): 2414-2422 doi: 10.3785/j.issn.1008-973X.2020.12.016

计算机与控制工程

基于多层BiLSTM和改进粒子群算法的应用负载预测方法

蔡亮,, 周泓岑, 白恒, 才振功,, 尹可挺, 贝毅君

Application load forecasting method based on multi-layer bidirectional LSTM and improved PSO algorithm

CAI Liang,, ZHOU Hong-cen, BAI Heng, CAI Zhen-gong,, YIN Ke-ting, BEI Yi-jun

通讯作者: 才振功,男,副研究员. orcid.org/0000-0001-5003-6085. E-mail: cstcaizg@zju.edu.cn

收稿日期: 2019-12-31  

Received: 2019-12-31  

作者简介 About authors

蔡亮(1976—),男,博士,副教授,从事区块链、云计算、信息安全相关研究.orcid.org/0000-0001-7898-2372.E-mail:leoncai@zju.edu.cn , E-mail:leoncai@zju.edu.cn

摘要

为了解决常用时序预测算法精度不高和调参困难的问题,提出基于多层双向长短期记忆(BiLSTM)神经网络的负载预测方法,包括网络模型设计、自适应参数设置和改进粒子群算法优化等步骤. 将数据输入网络模型中进行训练,使用自适应算法进行自动调参;采用基于基准模型的多指标融合的模型评价方法,计算改进粒子群算法的适应度;使用改进粒子群算法优化模型的预测结果. 通过与多种典型时间序列预测算法的实验对比,方法的预测平均绝对百分比误差减小3.6%~7.2%,训练时间缩短10%以上,实验结果验证了方法在时间序列预测中具有更高的准确性和很强的适用性,为使用负载预测结果进行弹性扩缩容提供了重要的科学依据.

关键词: 负载预测 ; 双向长短记忆(BiLSTM) ; 粒子群算法(PSO) ; 自适应算法 ; 多指标融合

Abstract

In order to solve the problems of low accuracy of commonly used time series prediction algorithms and difficulty in tuning parameters, a load prediction method was proposed based on a multilayer bidirectional long short-term memory (BiLSTM) neural network. The method includes network model design, adaptive parameter setting, and improved particle swarm optimization (PSO). The data was input into the BiLSTM network model for training and uses an adaptive algorithm for automatically parameter adjustment. The method uses a model evaluation method based on the benchmark model to calculate the fitness of the improved particle swarm optimization algorithm. The method uses improved particle swarm optimization to optimize the prediction results of the model. The average absolute percentage error of this method was reduced by 3.6% to 7.2% compared with several typical forecasting algorithms, and the training time was reduced by more than 10%, Through experimental comparison with a variety of typical time series prediction algorithms. Experimental results show that the method has higher accuracy and stronger applicability in time series forecasting, and provide an important scientific basis for the use of load forecast results for elastic expansion and contraction.

Keywords: load forecaste ; bidirectional long-short-term memory (BiLSTM) ; particle swarm optimization (PSO) ; adaptive algorithm ; multi index fusion

PDF (1180KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

蔡亮, 周泓岑, 白恒, 才振功, 尹可挺, 贝毅君. 基于多层BiLSTM和改进粒子群算法的应用负载预测方法. 浙江大学学报(工学版)[J], 2020, 54(12): 2414-2422 doi:10.3785/j.issn.1008-973X.2020.12.016

CAI Liang, ZHOU Hong-cen, BAI Heng, CAI Zhen-gong, YIN Ke-ting, BEI Yi-jun. Application load forecasting method based on multi-layer bidirectional LSTM and improved PSO algorithm. Journal of Zhejiang University(Engineering Science)[J], 2020, 54(12): 2414-2422 doi:10.3785/j.issn.1008-973X.2020.12.016

随着云计算时代的到来,越来越多的公司将应用迁移到云计算平台上. 云计算通过使用虚拟化技术将离散的资源整合成资源池,以按需分配的方式实现了用户对计算资源的弹性需求. 云计算的本质是按需求提供服务,实现应用资源在云平台上的自动分配和切换。要实现计算能力动态伸缩需要负载均衡技术. 云计算平台使用负载均衡技术增加了吞吐量,强化了数据处理能力。负载是实现负载均衡所需要的关键指标. 准确预测应用负载可以实现应用容量的流量高峰扩容和流量低谷缩容,从而节约资源成本,减少人工干预,提升云计算平台的可靠性和性能. 现在预测负载数据的方法通常有2类。1)基于时间序列特征的参数型算法。Yan等[1]使用整合移动平均自回归模型(auto-regression and moving average model,ARIMA)算法预测软件系统的资源消耗,比较不同情景下ARIMA算法与人工神经网络、支持向量机的预测效果。Calheiros等[2]设计基于ARIMA算法的云平台工作负载预测模块,通过基于该模型的预测数据进行主动动态资源配置,可以使用尽可能少的资源成本保证用户的应用服务质量。Prassanna等[3]使用HoltWinters算法预测云环境的工作负载. 以上提到的这类算法通过建立数学模型拟合历史时间序列趋势曲线,存在参数难以确定的问题,大多数使用者根据自身经验设置参数。模型最终的准确度受参数的影响较大,同时模型难以对时间序列数据内部复杂的规律进行学习. 2)基于神经网络的时间序列预测算法,例如循环神经网络(recurrent neural network,RNN),长短时记忆(long short-term memory,LSTM)神经网络等. 神经网络类算法在时序数据预测上应用广泛。Yazdanian等[4]结合卷积神经网络(convolutional neural networks,CNN)和LSTM,预测云环境中应用未来的工作负载;谢晓兰等[5]使用自适应概率的多选择策略遗传算法优化LSTM容器云资源预测模型,取得了较高的预测精度。在云环境软件老化和抑郁症预测等其他场景下,神经网络模型取得了良好的预测效果[6-7]. 还有一类算法,例如用增强集成树算法进行破产预测[8],用集成学习算法提高预测模型的准确度[9],这类算法通常不用于时序预测问题. 在时间序列预测问题上,传统的神经网络模型无法充分利用序列中的信息,而双向长短时记忆(bidirectional long short-term memory,BiLSTM)神经网络模型可以充分利用上下文数据进行预测,并且已经在多个领域取得了优异的效果[10-12]. BiLSTM已经被运用在时间序列预测领域,并被验证相比于普通神经网络,BiLSTM取得了更高的预测精度[13-15].

使用神经网络预测时序数据目前存在2个问题。1)学习率和迭代次数难以确定,2)隐藏层层数和隐藏层的神经元个数难以确定. 本研究提出基于多层BiLSTM和改进的粒子群算法的应用负载预测方法(multi-layer bidirectional LSTM and improved PSO algorithm,Pa-BiLSTM),利用改进粒子群算法[16]自动确定最佳隐藏层的神经元个数。结合自适应算法自动调整学习率和迭代次数,提高模型预测精度和加速模型收敛,采用基于基准模型的多指标融合的模型评价方法,验证方法的有效性[17].

本文预测方法的主要贡献包括:1)改进多层BiLSTM模型,解决传统时序预测中随机性波动带来的预测精度损失问题. 2)引入改进的粒子群算法,加速模型训练过程的收敛,大幅提升预测效率.

1. 相关理论和方法

1.1. LSTM神经网络

传统的统计和数学方法在分析时间序列时需要在指定的时间窗口上运行,传统的机器学习算法需要大量的特征工程来训练分类器,LSTM神经网络无须特征工程即可学习长期顺序特征;递归神经网络存在梯度消失的问题,使模型无法正常收敛,LSTM解决了这一问题. 基于这些优点,人们开始使用LSTM对时间序列建模[18].

LSTM是对传统递归时间神经网络的改进,使用记忆单元替换RNN内的隐函数,使其可以记忆比RNN更长的信息. LSTM的记忆单元有3个控制门控,分别为输入门、遗忘门和输出门. LSTM记忆单元结构如图1所示. 图中, ${{{x}}^t}$${{{\hat y}}^t}$表示t时刻的输入输出信息; ${{{c}}^t}$为单元的状态向量,LSTM神经网络通过此向量来记忆长期信息; ${{{\tilde c}}^t}$为候选向量,它存储的信息用于更新单元状态; ${{{a}}^t}$与单元的输出 ${{{\hat y}}^t}$相同,同时作为激活向量输入传递到下一个单元. 通常情况下第一个单元接受0向量或随机向量作为激活向量输入. ${{\varGamma }}_{\rm{f}}^t$${{\varGamma }}_{\rm{u}}^t$${{\varGamma }}_{\rm{o}}^t$为遗忘门、输入门、输出门的输出,tanh为双曲正切激活函数.

图 1

图 1   LSTM记忆单元结构

Fig.1   LSTM memory cell structure


LSTM的模型表述如下:

${{\varGamma }}_{\rm{f}}^t{\rm{ = \sigma (}}{{{W}}_{\rm{f}}}{\rm{[}}{{{a}}^{t{\rm{ - 1}}}}{\rm{, }}{{{x}}^t}{\rm{] + }}{{{b}}_{\rm{f}}}{\rm{)}},$

${{{\tilde c}}^t}{\rm{ = tanh }}\;{\rm{(}}{{{W}}_{\rm{c}}}{\rm{[}}{{{a}}^{t{\rm{ - 1}}}}{\rm{, }}{{{x}}^t}{\rm{] + }}{{{b}}_{\rm{c}}}{\rm{)}},$

${{\varGamma }}_{\rm{u}}^t{\rm{ = \sigma (}}{{{W}}_{\rm{u}}}{\rm{[}}{{{a}}^{t{\rm{ - 1}}}}{\rm{, }}{{{x}}^t}{\rm{] + }}{{{b}}_{\rm{u}}}{\rm{)}},$

${{{c}}^t}{\rm{ = }}{{\varGamma }}_{\rm{u}}^t{{{\tilde c}}^t}{\rm{ + }}{{\varGamma }}_{\rm{f}}^t{{{c}}^{t{\rm{ - 1}}}},$

${{\varGamma }}_{\rm{o}}^t{\rm{ = \sigma (}}{{{W}}_{\rm{o}}}{\rm{[}}{{{a}}^{t{\rm{ - 1}}}}{\rm{, }}{{{x}}^t}{\rm{] + }}{{{b}}_{\rm{o}}}{\rm{)}},$

${{{a}}^t}{\rm{ = }}{{{\varGamma }}_{\rm{o}}}{\rm{tanh }}\;{{{c}}^t}.$

式中: ${{{W}}_{\rm{f}}}$${{{W}}_{\rm{u}}}$${{{W}}_{\rm{o}}}$${{{W}}_{\rm{c}}}$${{{b}}_{\rm{f}}}$${{{b}}_{\rm{u}}}$${{{b}}_{\rm{o}}}$${{{b}}_{\rm{c}}}$分别为用于计算 ${{\varGamma }}_{\rm{f}}^t$${{\varGamma }}_{\rm{u}}^t$${{\varGamma }}_{\rm{o}}^t$${{{\tilde c}}^t}$的权重矩阵和偏差向量,是LSTM神经网络在训练期间需要学习的参数; ${\rm{\sigma }}$为Sigmoid函数,用于更新或遗忘数据.

1.2. BiLSTM

BiLSTM模型一般用于依赖上下文的自然语言处理,将其用于时序预测可以取得比单向LSTM更好的效果. 传统神经网络结构都只能依据之前时刻的时序信息预测下一时刻的输出,BiLSTM神经网络构建2个方向相反的LSTM层,一个从序列的起点开始输入,直到终点停止,另一个从序列的终点开始输入,直到起点停止. 这一对方向相反的隐藏层最终连接同一输出,因此对于预测上下文相关的任务,BiLSTM的性能比普通LSTM或RNN的性能有显著提升. BiLSTM的网络结构如图2所示. 图中, ${{x}}$${{\hat y}}$表示神经网络模型的输入和输出数据, ${{a}}$为神经网络正向序列LSTM记忆单元的激活向量, ${{\hat a}}$为神经网络反向序列LSTM记忆单元的激活向量.

图 2

图 2   BiLSTM网络结构

Fig.2   BiLSTM network structure


BiLSTM模型表述为

${{a}}{\rm{ = g(}}{{{W}}_{{a}}}{\rm{[}}{{{a}}^{{\rm{pre}}}}{\rm{, }}{{x}}{\rm{] + }}{{{b}}_{{a}}}{\rm{)}},$

${{\hat a}}{\rm{ = g(}}{{{\hat W}}_{{a}}}{\rm{[}}{{{\hat a}}^{{\rm{next}}}}{\rm{, }}{{x}}{\rm{] + }}{{{\hat b}}_{{a}}}{\rm{)}},$

${{\hat y}}{\rm{ = g(}}{{{W}}_y}{\rm{[}}{{a}}{\rm{, }}{{\hat a}}{\rm{] + }}{{{b}}_y}{\rm{)}}.$

式中: ${{{W}}_{{a}}}$${{{b}}_{{a}}}$为正向序列,分别为用于计算激活向量 ${{a}}$的权重矩阵和偏差向量. ${{\hat W_a}}$${{\hat b_a}}$为计算反向序列的激活向量 ${{\hat a}}$的权重矩阵和偏差向量。Wyby为计算输出 ${{\hat y}}$的权重矩阵和偏差向量。 ${{{a}}^{{\rm{pre}}}}$代表正向序列前一个记忆单元的激活向量,如果当前记忆单元为第一个记忆单元, ${{{a}}^{{\rm{pre}}}}$0向量. ${{{\hat a}}^{{\rm{next}}}}$为反向序列后一个记忆单元的激活向量,如果当前记忆单元为最后一个记忆单元,则为0向量.

1.3. 粒子群算法

粒子群算法被广泛应用于各种优化问题[19-21],本研究使用该算法实现模型参数的自动调优. 每个粒子代表待优化问题的一个可行解,通过粒子个体的简单行为和粒子群内的信息交互求解优化问题. 粒子具有速度和位置2个属性. 粒子的速度表示搜寻最优解的快慢,粒子的速度可以根据粒子历史最优位置和种群历史最优位置进行动态调整,粒子的当前位置即为对应优化问题的一个候选解. 每个粒子单独搜寻的最优解叫作个体极值,粒子群中的最优的个体极值作为当前全局最优解. 通过不断迭代更新速度和位置,最终可以得到满足终止条件的最优解. 第i个粒子在t时刻的速度和位置的更新公式为

$ \begin{split} {{{V}}_{i,t}} = & w{{{V}}_{i,t{\rm{ - 1}}}} + {C_{1}}{R_{(0,1)}}{\rm{(}}{{{P}}_{i,t{\rm{ - 1}}}}{\rm{ - }}{{{X}}_{i,t{\rm{ - 1}}}}{\rm{)}} + \\ & {C_2}{R_{(0,1)}}({{{G}}_{t - 1}} - {{{X}}_{i,t - 1}}), \end{split} $

${{{X}}_{i,t}}{\rm{ = }}{{{X}}_{i,t{\rm{ - 1}}}}{\rm{ + }}{{{V}}_{i,t}}.$

式中: ${{{V}}_{i,t - 1}}$为第i个粒子在t−1时刻的速度;w为惯性因子; ${C_1}$${C_2}$为加速常数,一般 ${C_1} = {C_2} \in [0,4]$,本研究 ${C_1} = {C_2} = 2$${R_{(0,1)}}$为区间[0,1]之间的随机数; ${{{P}}_{i,t - 1}}$为第i个粒子在t−1时刻的个体最优值; ${{{X}}_{i,t - 1}}$为粒子it−1时刻的位置; ${{{G}}_{t - 1}}$为第i个粒子在t−1时刻的全局最优解.

2. 预测方法构建

2.1. Pa-BiLSTM预测方法主要过程

针对传统预测模型存在的问题,采用BiLSTM网络结构进行训练和预测,采用粒子群和自适应算法自动设置模型参数,使用模型综合评价方法得到模型评估值Q. 预测模型构建步骤如下。

1)定义长度为n的原始负载时间序列数据集: ${{X}} = \{ {X_1},{X_2},{X_3},{X_4},\cdots,{X_{n - 1}},{X_n}\} $. 2)利用min-max均一化方法对原始数据进行标准化处理,标准化后的数据表示为: ${{x'}} = $ $ \{ {x'_1},{x'_2},{x'_3},{x'_4},\cdots,{x'_{n - 1}},{x'_n}\} $. 3)初始化参数. 确定粒子群算法中粒子个数、粒子群算法迭代次数、惯性权重和粒子位置的区间. 4)初始化粒子信息. 初始化每个粒子的位置 ${{{X}}_i} (h_1,h_2)$和速度 ${{{V}}_i}$,每个粒子的位置是个二维向量,h1为第1层隐藏层的神经元个数,h2为第2层隐藏层的神经元个数;初始化个体和全局最优位置,初始化个体和全局最优适应度. 5)粒子群算法参数更新. 根据后文说明的粒子群算法更新公式对速度、位置和权重进行更新,将超出位置限制范围的粒子重新拉入位置区间中. 6)根据步骤5)中粒子的参数初始化网络,将数据分成训练集和测试集2个部分。使用自适应算法输入训练集样本到模型中进行训练,得到训练后的模型. 输入测试集样本得到预测结果. 7)使用模型评价计算方法得到该参数下模型的评估值Q,将该评估值作为该粒子的适应度值. 8)重复步骤6)、7),计算得到每个粒子的适应度,如果粒子的适应度小于该粒子的最佳适应度,则将该粒子的最佳适应度更新为当前适应度;如果有粒子的适应度优于全局最优适应度,则将全局最优适应度更新为该粒子的适应度,将全局最优位置更新为该粒子的位置. 9)重复步骤5)~8)直到达到最大迭代次数,用粒子群算法求得的最佳位置作为模型参数来初始化模型,将待预测数据输入到该模型中得到预测值.

2.2. 多层BiLSTM模型设计

对于简单的预测任务,BiLSTM能够取得足够好的结果. 由于应用负载存在随机性波动,负载时间序列的关系信息往往隐藏较深,如果要学习这些信息,获得时序数据中的深层关系,BiLSTM或普通LSTM的效果不够好,可以将多层的LSTM网络堆叠在一起,形成更深层的神经网络模型来解决这个问题. 本研究实现了双隐层的多层BiLSTM神经网络,该网络拥有2个隐层,隐层结点的个数由后文提到的粒子群算法得出,结构如图3所示. 图中,ai, j为第i层正序第j个LSTM神经网络记忆单元;âi, j同理;n为当前层神经元总数; ${{{x}}^t}$${{{\hat y}}^t}$t时刻输入输出信息.

图 3

图 3   多层BiLSTM神经网络结构图

Fig.3   Multi-layer BiLSTM network structure diagram


多层深度BiLSTM神经网络的作用原理如下(以a2,3â2,3为例):

$ {{{a}}}^{2,3}{\rm{=g(}}{{{W}}}_{a}^{2}[{{{a}}}^{2,2},{{{a}}}^{1,3}]+{{{b}}}_{a}^{2}),$

$ {{{\hat a}}^{{\rm{2,3}}}}{\rm{ = g(}}{{\hat W}}_a^{\rm{2}}{\rm{[}}{{{\hat a}}^{{\rm{2,4}}}}{\rm{,}}{{{\hat a}}^{{\rm{1,3}}}}{\rm{] + }}{{\hat b}}_a^{\rm{2}}{\rm{)}}, $

$ {{{\hat y}}^{\rm{1}}}{\rm{ = g(}}{{{W}}_y}{\rm{[}}{{{a}}^{{\rm{4,1}}}}{\rm{,}}{{{\hat a}}^{{\rm{4,1}}}}{\rm{] + }}{{{b}}_y}{\rm{)}}. $

2.3. 粒子群算法改进

随着粒子群算法的应用领域快速扩大,该算法早熟收敛,维度灾难,容易陷入局部极值等问题开始显现[22]. 传统的粒子群算法使用固定的惯性权重,影响搜索的全局性和收敛速度. 惯性权重非负,惯性权重较大时全局寻优能力强,局部寻优能力弱;惯性权重较小时全局寻优能力弱,局部寻优能力强. 使用变化的惯性权重可以改善该算法的全局和局部寻优性能,改进后的惯性权重计算公式如下:

$W = {W_{\max}} - ({W_{{\rm{max}}}}{\rm{ - }}{W_{{\rm{min}}}})({n^2}/n_{\max}^2),$

$\frac{{\rm{d}}W}{{{\rm{d}}n}} = - \frac{{2t({W_{{\rm{max}}}}{\rm{ - }}{W_{{\rm{min}}}})}}{{n_{\max}^2}}.$

式中: ${{{W}}_{\max }}$为最大惯性权重, ${W_{\min }}$为最小惯性权重,n为当前的迭代次数, ${n_{\max }}$为最大迭代次数. 当迭代开始时,惯性权重接近最大值,这时利于搜索全局最优解,随着迭代次数的增加,惯性权重逐渐减小,算法局部寻优能力变强. 惯性权重的微分表明初始迭代时速度变化缓慢,有利于在初始迭代时寻找满足条件的局部最优值,在接近最大迭代次数时W变化较快,在寻找到局部最优值后能够快速收敛到全局最优值,提高运行效率. 使用该计算方法可以平衡搜索的全局性和局部性,最终达到改善粒子群算法性能的目的.

2.4. 算法参数自适应设置

传统的神经网络训练设置固定学习率和迭代次数,需要人工手动调参,烦琐且效果不佳. 本研究提出自适应算法,可以根据损失值的变化自动调节学习率和迭代次数,省去烦琐的调参过程,且效果优于手动调参. 自适应调参步骤如下。

1)设置初始学习率和迭代次数. 学习率决定模型参数更新的速度,迭代次数决定模型的训练次数. 学习率和迭代次数影响最终的预测准确度. 2)设置最大学习率容忍度、最大终止容忍度、学习率衰减系数、初始化学习率容忍度和终止容忍度为0。学习率容忍度表示在该容忍度步数内,如果预测精度没有提高,则对学习率进行调整. 终止容忍度表示在该容忍度步数内,如果预测精度没有提高,则终止训练. 学习率衰减系数决定学习率的变化速度. 3)输入样本数据进行一次训练,学习率容忍度和终止容忍度自增1. 4)判断学习率容忍度和终止容忍度是否达到预设的最大值。如果学习率容忍度达到最大值,判断在容忍度区间内模型的损失是否减少;如果没有减少,则将学习率自乘衰减系数并将学习率容忍度重新设为1. 如果终止容忍度达到最大值,则判断在容忍度区间模型损失是否减少;如果没有减少则终止训练过程。5)判断是否达到最大迭代次数,如果是,则停止训练,否则重复步骤3)~5),直到满足停止条件.

自适应调参算法流程,如图4所示.

图 4

图 4   自适应调参算法流程图

Fig.4   Flowchart of adaptive parameter adjustment algorithm


3. 方案验证与结果分析

3.1. 实验场景选取

选取国内某大型运营商某客服业务应用的负载预测作为测试场景,该场景的特点是业务负载周期性比较明显,且含有没有明显周期性的突发状况. 数据采集主要是基于zabbix系统,采集时间间隔是5 min,每天288条数据,包含系统硬件资源使用率数据(CPU、内存、磁盘IO、网络IO等)、请求量(queries per second,QPS)、应用性能数据(请求响应时间、错误率)等,实验提取和应用负载相关的QPS、CPU利用率和内存利用率数据作为模型训练数据. 处理后的数据集共有4列,第1列是时间戳,指数据的采集时间,每个时间戳间隔5 min. 第2列是请求量,指从当前时间戳开始,到下一个时间戳之间的总请求量. 第3列是内存使用率,是从当前时间戳开始,到下一个时间戳的5 min内的内存平均使用率. 第4列是CPU使用率,是从当前时间戳开始,到下个时间戳的CPU平均使用率.

实验中使用的数据集经脱敏处理后公开( https://github.com/Experimental-data/TimeSeriesData). 与易受到其他应用和系统软件影响的CPU使用率、内存使用率等数据相比,QPS数据能够客观反映应用负载指标,因此实验主要围绕请求量展开.

负载数据具有多个周期性. 以天为周期时,每晚10点到次日早上8点是负载底峰时段,早上8点到晚上10点是负载高峰时段,其中上午8点到中午12点是第1个高峰段,下午2点到晚上6点是第2个高峰段. 请求量应用负载q的单日变化如图5所示.

图 5

图 5   请求量应用负载的单日变化

Fig.5   Application load of request volume in one-day


负载数据以1周为周期时,周末时间段的负载较低,且负载相近;工作日时间段的负载较高,且负载相近. 应用请求量负载q的周期变化如图6所示.

图 6

图 6   应用请求量负载的周变化

Fig.6   Application load of request volume in one-week


除了每周的变化规律外,该系统由于套餐业务变更、话费出账等热点事件,导致在每月一些特定的时间点会出现负载高峰,实验选取35 d的请求量作为负载数据,既体现负载的周期性,也考虑了热点事件带来的负载影响. 请求量应用负载q的35天变化如图7所示.

图 7

图 7   请求应用负载35天变化

Fig.7   Application load of request volume in 35 days


3.2. 数据预处理

为了使模型训练能够更快收敛,使用min-max标准化方法对原始负载数据进行处理,计算公式如下:

${x'_i} = \frac{{{x_i} - {x_{{\rm{min}}}}}}{{{x_{{\rm{max}}}} - {x_{{\rm{min}}}}}},$

${\hat x_i} = ({x_{{\rm{max}}}} - {x_{{\rm{min}}}}){x'_i} + {x_{{\rm{min}}}}.$

式中: ${x'_i}$为归一化后的数据, ${x_i}$为原始时间序列中的第i个负载值, ${x_{\min }}$为原始时间序列中的最小值, ${x_{\max }}$为原始时间序列中的最大值, ${\hat x_i}$表示反归一化后的数据.

3.3. 构建模型评价指标

在预测应用负载场景下,为了客观评价模型的预测效果,提出基于均方根误差(root mean squared error,RMSE)、平均绝对误差(mean absolute error,MAE)、平均绝对百分比误差(mean absolute percentage error,MAPE)的多指标融合模型评价方案.

朴素法使用上一个时间周期中对应位置的观测值作为预测值,该方法虽然简单却不是一种很好的预测方法,它可以在评价其他模型时作为基准模型使用. 本研究使用朴素法的预测结果作为基准预测结果,其他预测模型将分别使用RMSE、MAE、MAPE等指标与朴素法进行预测准确度对比,最终产生多指标融合的模型评价方案.

评价方案的各项指标计算公式如下:

${e_t} = {Y_t} - {F_t},$

${\rm{MAE}} = \frac{1}{n}\sum\limits_{t = 1}^n {\left| {{e_t}} \right|}, $

${\rm{RMSE}} = \sqrt {\frac{1}{n}\sum\limits_{t = 1}^n {e_t^{ 2}} }, $

${\rm{MAPE}} = \frac{1}{n}\sum\limits_{t = 1}^n {\frac{{\left| {{e_t}} \right|}}{{\left| {{Y_t}} \right|}}} ,$

${\rm{RelMAE}} = \frac{{2{\rm{MAE}}}}{{{\rm{MA}}{{\rm{E}}^*} + {\rm{MAE}}}},$

${\rm{RelRMSE}} = \frac{{2{\rm{RMSE}}}}{{{\rm{RMS}}{{\rm{E}}^*} + {\rm{RMSE}}}},$

${\rm{RelMAPE}} = \frac{{2{\rm{MAPE}}}}{{{\rm{MAP}}{{\rm{E}}^*} + {\rm{MAPE}}}},$

$ \begin{split} Q = & {W_1}{\rm{RelRMSE}} + {W_2}{\rm{RelMAPE}} + \\ & {W_3}{\rm{RelMAE}}. \end{split} $

式中:Q为模型评价指标; ${Y_t}$表示时间t的观测值; ${F_t}$表示待评估模型在时间t的预测值; ${e_t}$为待评估模型在时间t的误差;W为不同指标在综合模型评价方案中的权重. MAE、RMSE、MAPE属于对异常值较敏感的度量指标,在预测应用负载场景下,异常数据必须得到妥善处理,因此选择这3项指标作为综合评价方案的组成部分. MAE、RMSE、MAPE为待评估模型的各项指标,MAE*、RMSE*、MAPE*为基准模型的对应评估指标,式(23)~(25)将待评估模型的各项指标与基准预测方法的各项指标相比较,获得相对度量指标RelMAPE、RelMSE、RelRMSE,代表待评估模型在对应的评价指标下与基准预测方法的预测准确度比较. 相对度量指标数值等于1.0时,表示与基准预测方法具有相同的准确度;数值越接近2.0,表示预测效果越差,数值越接近0,表示预测效果越好. 相比于原始度量指标,相对度量指标不仅更清晰地体现了性能差距,而且让预测结果更具解释性,所有相对度量指标都处于同样的数据规模,可以方便地进行比较和加权组合. 定义模型评估值为Q,该值表示模型的优劣性,值越小表示模型预测效果越好. 式(25)是3个相对度量指标的加权组合,相应的权重根据具体的业务场景需要来制定.

3.4. 预测及结果分析

数据的周期为1周,周末相比工作日有负载减少的情况,同时在1个月中存在月初负载高于全月其他时间的情况. 用前28天的数据训练并得到第29天的预测结果,用前29天的数据训练并得到第30天的预测结果,以此类推,得到第29天到第35天共7天的预测结果. 在实验中既有负载突变的情况也有对负载突变进行预测的结果. 模型的输入层和输出层神经元个数设置为12,初始学习率设置为0.005,初始迭代次数设置为500,粒子个数设为50,算法迭代次数为30,惯性权重设置为[0.3,0.9],粒子位置设置为[2,50];设置 ${W_{{\rm{RRMSE}}}}$=0.6, ${W_{{\rm{RMAE}}}}$=0.2, ${W_{{\rm{RMAPE}}}}$=0.2. RelRMSE的权重较大,整个度量指标更偏向于对异常数据的敏感性.

9种模型的预测结果见表1. PSO-BiLSTM为使用改进后的粒子群算法的BiLSTM预测模型. BiLSTM和LSTM使用步进搜索确定最佳参数,学习率设置为[0.1,0.5],步长为0.1;迭代次数设置为[450,500],步长为10;第1层和第2层隐藏层神经元个数为[10,50],步长为5. 可以看出Pa-BiLSTM、PSO-BiLSTM和BiLSTM模型的预测效果优于除Pa-LSTM外的其他模型,Pa-BiLSTM的预测效果优于Pa-LSTM,说明BiLSTM模型的预测效果优于其他模型. Pa-BiLSTM的预测效果优于PSO-BiLSTM,说明自适应算法有效,并且可以提升模型的预测性能. 相比其他模型,Pa-BiLSTM模型的平均绝对百分比误差减小了3.6%~7.2%. PSO-BiLSTM预测效果优于BiLSTM,说明本研究提到的粒子群算法有效,并且可以提升模型的预测效果. 表中PSO-BiLSTM的RMSE、MAE、MAPE、Q均优于BiLSTM的,说明多指标融合的模型评价方法有效.

表 1   负载预测中各种模型的预测误差

Tab.1  Load prediction errors comparison

模型 RMSE MAE MAPE/% Q
Pa-BiLSTM 121.05 78.67 3.97 0.37
PSO-BiLSTM 157.13 92.53 4.63 0.45
BiLSTM 176.25 105.24 5.65 0.49
Pa-LSTM 158.39 102.84 5.38 0.46
LSTM 267.40 155.03 7.64 0.65
ARIMA(1,1,1) 366.84 167.46 5.87 0.73
HoltWinters 196.13 162.49 8.21 0.58
Prophet 234.92 198.94 11.18 0.67
基准模型 452.22 347.03 29.62 1.00

新窗口打开| 下载CSV


各种模型在不同规模训练数据集下的预测准确度如图8所示. 可以看出,Pa-BiLSTM是6个模型中表现最佳的.

图 8

图 8   不同模型在不同数据规模下预测准确度

Fig.8   Forecast accuracy of different models under different data sizes


各种神经网络模型在不同规模训练数据集下的训练时间如图9所示. 可以看出,Pa-BiLSTM比PSOBiLSTM的训练时间短,说明自适应算法减少了模型的训练时间.

图 9

图 9   不同模型在不同数据规模下的训练时间

Fig.9   Training time of different models on different data sizes


Pa-BiLSTM和使用固定惯性向量粒子群算法oPaBiLSTM训练的BiLSTM模型随迭代次数变化的适应度如图10所示. 可以看出,改进后的粒子群算法收敛速度更快,能够更早达到全局最优解. 这证明了改进后的粒子群算法具有更好的全局寻优能力和更快的收敛速度.

图 10

图 10   oPaBiLSTM与Pa-BiLSTM的适应度对比图

Fig.10   Comparison chart of fitness between oPaBiLSTM and Pa-BiLSTM


4. 结 语

针对常用时序预测算法精度不高的问题,提出基于改进粒子群和多层BiLSTM神经网络的负载预测方法,提高了应用负载预测的精度,提升了算法的计算效率. 针对目前算法调参困难的问题,采用改进粒子群和自适应参数设置的模型参数自动优选算法,以达到最佳的预测效果. 引入基于基准模型的多指标融合评价方法,用于综合评价各模型的预测效果. 该评价方法融合多种时间序列预测问题常用评价指标,使用该评价方法对模型的优劣进行评价具有全局性和稳定性. 使用某运营商应用系统的历史负载数据,较准确地预测出了负载周期性变化和热点事件发生时的负载突发变化,验证了方法的有效性和执行效率.

算法可以对负载进行更为准确的预测,为应用的实时调控提供更为可信的决策依据,有利于提升应用支撑平台的性能和可靠性. 目前算法训练耗时较长,未来可以通过优化LSTM网络结构或者使用并行计算的方法来缩短训练时长. 同时可以通过使用Adaboost方法结合多个预测模型达到更好的预测效果.

参考文献

YAN Y Q, GUO P

Predicting resource consumption in a Web server using ARIMA model

[J]. Journal of Beijing Institute of Technology, 2014, 23 (4): 502- 510

[本文引用: 1]

CALHEIROS R N, MASOUMI E, RANJAN R, et al

Workload prediction using ARIMA model and its impact on cloud applications' QoS

[J]. IEEE Transactions on Cloud Computing, 2014, 3 (4): 449- 458

[本文引用: 1]

PRASSANNA J, VENKATARAMAN N

Adaptive regressive holt–winters workload prediction and firefly optimized lottery scheduling for load balancing in cloud

[J]. Wireless Networks, 2019, 1- 19

[本文引用: 1]

YAZDANIAN P, SHARIFIAN S. Cloud workload prediction using ConvNet and stacked LSTM [C]// 2018 4th Iranian Conference on Signal Processing and Intelligent Systems. Tehran: IEEE, 2018: 83-87.

[本文引用: 1]

谢晓兰, 张征征, 郑强清, 等

基于APMSSGA-LSTM 的容器云资源预测

[J]. 大数据, 2019, 5 (6): 62- 72

[本文引用: 1]

XIE Xiao-lan, ZHANG Zheng-zheng, ZHENG Qiang-qing, et al

Container cloud resource prediction based on APMSSGA-LSTM

[J]. Big Data Research, 2019, 5 (6): 62- 72

[本文引用: 1]

LIU J, TAN X Y, WANG Y. CSSAP: software aging prediction for cloud services based on ARIMA-LSTM hybrid model [C]// 2019 IEEE International Conference on Web Services. Milan: IEEE, 2019: 283-290.

[本文引用: 1]

KUMAR S D, SUBHA D P. Prediction of depression from EEG signal using long short term memory [C]// 2019 3rd International Conference on Trends in Electronics and Informatics. Tirunelveli: IEEE, 2019: 1248-1253.

[本文引用: 1]

ZIĘBA M, TOMCZAK S K, TOMCZAK J M

Ensemble boosted trees with synthetic features generation in application to bankruptcy prediction

[J]. Expert Systems with Applications, 2016, 58: 93- 101

DOI:10.1016/j.eswa.2016.04.001      [本文引用: 1]

AKYUZ A O, UYSAL M, BULBUL B A, et al. Ensemble approach for time series analysis in demand forecasting: Ensemble learning [C]// 2017 IEEE International Conference on Innovations in Intelligent Systems and Applications. Gdynia: IEEE, 2017: 7-12.

[本文引用: 1]

BIN Y, YANG Y, SHEN F, et al. Bidirectional long-short term memory for video description [C]// Proceedings of the 24th ACM International Conference on Multimedia. New York: ACM, 2016: 436-440.

[本文引用: 1]

ZENNAKI O, SEMMAR N, BESACIER L. Inducing multilingual text analysis tools using bidirectional recurrent neural networks [C]// 26th International Conference on Computational Linguistics: Technical Papers. Osaka: COLING. 2016: 450-460.

SCHUSTER M, PALIWAL K K

Bidirectional recurrent neural networks

[J]. IEEE Transactions on Signal Processing, 1997, 45 (11): 2673- 2681

DOI:10.1109/78.650093      [本文引用: 1]

SUN W, XU L, HUANG X, et al. Bidirectional LSTM for ionospheric vertical total electron content forecasting [C]// 2017 IEEE Visual Communications and Image Processing. St. Petersburg: IEEE, 2017: 1-4.

[本文引用: 1]

HU P, TONG J, WANG J, et al. A hybrid model based on CNN and Bi-LSTM for urban water demand prediction [C]// 2019 IEEE Congress on Evolutionary Computation. Wellington: IEEE, 2019: 1088-1094.

HAN S, ZHANG F, XI J, et al. Short-term vehicle speed prediction based on convolutional bidirectional LSTM networks [C]// 2019 IEEE Intelligent Transportation Systems Conference. Auckland: IEEE, 2019: 4055-4060.

[本文引用: 1]

KENNEDY J, EBERHART R. Particle swarm optimization [C]// Proceedings of ICNN'95-International Conference on Neural Networks. Perth: IEEE, 1995, 4: 1942-1948.

[本文引用: 1]

CHEN C, TWYCROSS J, GARIBALDI J M

A new accuracy measure based on bounded relative error for time series forecasting

[J]. PloS One, 2017, 12 (3): e0174202

DOI:10.1371/journal.pone.0174202      [本文引用: 1]

HOCHREITER S, SCHMIDHUBER J

Long short-term memory

[J]. Neural Computation, 1997, 9 (8): 1735- 1780

DOI:10.1162/neco.1997.9.8.1735      [本文引用: 1]

张利彪, 周春光, 马铭, 等

基于粒子群算法求解多目标优化问题

[J]. 计算机研究与发展, 2004, 41 (7): 1286- 1291

[本文引用: 1]

ZHANG Li-biao, ZHOU Chun-guang, MA Ming, et al

Solving multi-objective optimization problems based on particle swarm optimization

[J]. Journal of Computer Research and Development, 2004, 41 (7): 1286- 1291

[本文引用: 1]

DING W, FANG W. Target tracking by sequential random draft particle swarm optimization algorithm [C]// 2018 IEEE International Smart Cities Conference. Kansas City: IEEE, 2018: 1-7.

何明慧, 徐怡, 王冉, 等

改进的粒子群算法优化神经网络及应用

[J]. 计算机工程与应用, 2018, (19): 17

[本文引用: 1]

HE Ming-hui, XU Yi, WANG Ran, et al

Improved particle swarm optimization neural network and its application

[J]. Computer Engineering and Applications, 2018, (19): 17

[本文引用: 1]

BAI Q

Analysis of particle swarm optimization algorithm

[J]. Computer and Information Science, 2010, 3 (1): 180

[本文引用: 1]

/