一种基于DDPG神经网络的网络流量预测方法转让专利

申请号 : CN202210803255.6

文献号 : CN115190049B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡颖王凤琴杨永双李健勇闵冠博张杰

申请人 : 郑州轻工业大学

摘要 :

本发明涉及一种基于DDPG神经网络的网络流量预测方法,构建DDPG神经网络,获取当前时间片对应的时间片集合的网络流量数据,当前时间片对应的时间片集合包括当前时间片以及当前时间片之前的预设个数的时间片,网络流量数据包括预测使用数据和真实值数据,根据当前时间片对应的时间片集合的网络流量数据,训练DDPG神经网络,最后根据训练完成的DDPG神经网络进行网络流量预测。本发明提供的基于DDPG神经网络的网络流量预测方法能够减少因实际流量较高导致的被动迁移频次,在已知减少被动迁移权重和节能权重时,最大限度提高网络整体效果,即降低被动迁移次数和能耗。

权利要求 :

1.一种基于DDPG神经网络的网络流量预测方法,其特征在于,包括以下步骤:步骤1:构建DDPG神经网络,所述DDPG神经网络包括critic值网络模型和actor值网络模型;

步骤2:获取当前时间片对应的时间片集合的网络流量数据,所述当前时间片对应的时间片集合包括当前时间片以及当前时间片之前的预设个数的时间片,网络流量数据包括预测使用数据和真实值数据,所述预测使用数据包括用于预测当前时间片流量值的前所述预设个数的时间片的网络流量实际值,所述真实值数据为当前时间片的实际流量值;

步骤3:根据所述当前时间片对应的时间片集合的网络流量数据,为当前时间片训练所述DDPG神经网络;

步骤4:根据训练完成的所述DDPG神经网络进行网络流量预测;

所述步骤1之前,所述基于DDPG神经网络的网络流量预测方法还包括如下步骤:初始化时间片slice_begin=0;

所述步骤1还包括:初始化所述DDPG神经网络的迭代次数i=0;

所述步骤3包括:

步骤A0:初始化循环次数为0;

步骤A1:获取当前时间片的前一个时间片的预测流量值lastflow,并复制底层物理网络的初始网络状态mig至网络状态变量miglast和migtrain;

步骤A2:根据所述当前时间片对应的时间片集合的网络流量数据,利用actor值网络模型进行预测,得到预测网络流量值prea,对预测网络流量值prea加入随机因素,得到当前时间片的预测网络流量值a;

步骤A3:根据预测网络流量值a和当前时间片实际网络流量r,以及当前网络状态migtrain和所述前一个时间片使用的预测流量值lastflow,计算网络能耗e、被动迁移次数mc和被动迁移失败的次数fc,并将这三个值保存至变量e、mc和fc中,并分别将其加入向量multienergy、multimigcount和multifailcount中;

步骤A4:根据预测网络流量值a以及所述前一个时间片使用的预测流量值lastflow,在时间片交替处为底层物理网络实施迁移;

步骤A5:添加主动迁移前底层网络状态miglast、预测网络流量值a、当前时间片对应的日期date以及当前时间片的时间片序号slice、网络能耗e、被动迁移次数mc、被动迁移失败次数fc、当前网络状态migtrain至经验回放池;

步骤A6:将此次当前网络状态migtrain保存至网络状态变量miglast,并将此次预测网络流量值a保存至预测流量值lastflow;

步骤A7:当前时间片的时间片slice_begin+1,若当前时间片slice_begin小于slice_begin+m,转步骤A2;否则,转步骤A8;

步骤A8:若经验回放池中数据条目数大于阈值MEMORY_CAPACITY,则将变量val乘以小于1的常量,并对当前时间片序号slice_begin对应的DDPG神经网络进行强化学习操作;否则,转步骤A9;

步骤A9:使用multienergy、multimigcount和multifailcount对能耗、被动迁移次数和被动迁移失败次数进行标准化,使用标准化值计算环境反馈即时奖励r,并将环境反馈即时奖励r求和得到ep_reward;并且,循环次数加1;

步骤A10:若循环次数小于阈值MAX_EP_STEPS,转步骤A1;否则,转步骤A11;

步骤A11:验证训练效果数据,首先计算验证数据的日期数valid_days,设置日期date=0;

步骤A12:在验证数据中,取出日期date的时间片slice_begin到时间片slice_begin+m个流量数据,包括每个时间片的前所述预设个数的时间片的历史数据s,以及当前时间片的实际流量值ry,设置变量p=0;

步骤A13:对于当前时间片slice_begin+p,取出网络历史流量值st,当前时间片实际流量值ryt,当前时间片的前一个时间片使用的网络预测流量值lastflow_valid,将网络环境状态变量mig复制到mig_valid变量;

步骤A14:将网络历史流量值st输入当前时间片对应的actor值网络模型,计算当前时间片的预测网络流量值a;

步骤A15:使用预测网络流量值a、实际值ryt、环境变量mig_valid、当前时间片的前一个时间片的预测流量值lastflow_valid,计算网络能耗e、被动迁移次数mc和被动迁移失败的次数fc,并将这三个值保存至变量multienergy_valid、multimigcount_valid和multifailcount_valid中;

步骤A16:使用multienergy_valid、multimigcount_valid和multifailcount_valid对能耗、被动迁移次数和被动迁移失败次数进行标准化,使用标准化值计算环境反馈即时奖励r,并将环境反馈即时奖励r求和得到ep_reward_valid;

步骤A17:计算使用预测网络流量值a和前一个时间片预测流量值lastflow_valid,对mig_valid实施迁移;

步骤A18:将预测网络流量值a保存至前一个时间片网络流量预测值lastflow_valid中;

步骤A19:p=p+1,若变量p小于m,转步骤A13;否则,转步骤A20;

步骤A20:date=date+1,若日期date小于valid_days,转步骤A12;否则,转步骤A21;

步骤A21:对验证数据计算的奖励值ep_reward_valid计算均值,若该均值大于变量max_valid,将当前actor值网络模型保存至文件,并更新max_valid值为ep_reward_valid;

步骤A22:i=i+1,若迭代次数i小于阈值MAX_EPISODES,转步骤A1;否则,转步骤A23;

步骤A23:slice_begin=slice_begin+1,若时间片slice_begin小于时间片总个数time_step,转步骤A1;否则,训练结束。

2.根据权利要求1所述的基于DDPG神经网络的网络流量预测方法,其特征在于,所述步骤2还包括:对预测网络流量数据标准化,所述对预测网络流量数据标准化包括:使用如下公式对预测网络流量值a实施标准化操作:

其中,range_down是预测网络流量值a要映射到的空间下限,range_up是预测网络流量值a要映射到的空间上限,min_a是预测网络流量值a的最小值,max_a是预测网络流量值a的最大值。

3.根据权利要求1所述的基于DDPG神经网络的网络流量预测方法,其特征在于,所述步骤A2中的利用actor值网络模型进行预测,包括:步骤C1:输入所述当前时间片对应的时间片集合的网络流量数据至actor值网络模型;

步骤C2:actor值网络模型的输出值为当前时间片的网络流量预测值。

4.根据权利要求1所述的基于DDPG神经网络的网络流量预测方法,其特征在于,所述步骤A2中对预测网络流量值prea加入随机因素,包括:步骤D1:以预测网络流量值prea为均值,变量val为标准差,对预测网络流量值prea实施正态分布,记录得到的值写入预测网络流量值a;

步骤D2:对预测网络流量值a实施截断操作,使其值域为[range_down,range_up];

range_down是预测网络流量值a要映射到的空间下限,range_up是预测网络流量值a要映射到的空间上限。

5.根据权利要求1所述的基于DDPG神经网络的网络流量预测方法,其特征在于,所述步骤A3中的计算网络能耗e、被动迁移次数mc和被动迁移失败的次数fc,包括:步骤E1:复制当前网络状态至mig1和mig2;

步骤E2:将当前时间片的预测网络流量除以前一个时间片的预测网络流量lastflow,得到比值ratiopredict;

步骤E3:使用当前网络状态变量mig1和比值ratiopredict,对当前络实施迁移,更新网络状态变量mig1;

步骤E4:计算更新后的网络状态mig1下的网络能耗e;

步骤E5:将当前时间片的实际网络流量除以当前时间片的预测网络流量,得到比值ratio,若ratio小于等于1,转步骤E6,否则,转步骤E7;

步骤E6:设置被动迁移次数变量mc为0,被动迁移失败次数变量fc为0,转步骤E9;

步骤E7:使用已更新的网络状态变量mig1和比值ratio,对当前网络再次实施迁移,再次更新网络状态变量mig1,并得到返回值迁移次数migc和迁移失败次数failc;

步骤E8:设置被动迁移次数变量mc为migc,被动迁移失败次数变量fc为failc;

步骤E9:返回变量能耗e、被动迁移次数mc和被动迁移失败次数fc,结束。

6.根据权利要求5所述的基于DDPG神经网络的网络流量预测方法,其特征在于,所述步骤E4中的计算更新后的网络状态mig1下的网络能耗e,包括:步骤G1:对第i个cpu,使用如下公式计算cpui的能耗energyi:其中,PMIN和PMAX分别为节点能耗的最小值和最大值,cpu_usedi是cpui的已使用cpu量,cpu_totali是cpui的总cpu量;

步骤G2:对所有cpu的能耗值求和,得到变量energy_sum;

步骤G3:返回变量energy_sum,结束。

7.根据权利要求1所述的基于DDPG神经网络的网络流量预测方法,其特征在于,所述步骤A8中的对DDPG神经网络进行强化学习操作,包括:步骤H1:所述DDPG神经网络还包括影子critic值网络模型和影子actor值网络模型;分别使用actor值网络模型和critic值网络模型更新影子critic值网络模型和影子actor值网络模型的模型参数,更新方法如下公式所示:θQ'=τθQ+(1‑τ)θQ'

θπ'=τθπ+(1‑τ)θπ'

其中,τ是更新因子常量,θQ和θπ分别是actor值网络模型和critic值网络模型的参数,θQ'和θπ'分别是影子actor值网络模型和影子critic值网络模型的参数;

步骤H2:从经验回放池中随机选择BATCH_SIZE条数据,保证每条数据的时间片序号与当前DDPG的时间片序号一致,为每条数据取出网络状态bs、预测流量数据ba、能耗benergy、随机迁移次数bmigcount、随机迁移失败次数bfailcount、主动迁移后网络状态bs_next和所述预测使用数据以及所述真实值数据;

步骤H3:将随机选择的所有时间片的网络流量预测数据bx输入actor值网络模型,得到这些时间片的预测向量A,使用critic值网络模型得到评价向量Q;

步骤H4:使用如下公式为actor值网络模型计算损失值loss_a,并使用优化器Adam更新actor值网络模型的参数;

其中,n为评价向量Q的分量数,即BATCH_SIZE;

步骤H5:为随机选择的每个时间片,取出其下一个时间片对应的所述预测使用数据以及所述真实值数据,包括用于预测下一个时间片流量值的前所述预设个数的时间片的第一网络流量实际值bx_next,和下一个时间片的第二网络流量实际值by_next;

步骤H6:将第一网络流量实际值bx_next输入影子actor值网络模型,得到预测网络流量A_,将第一网络流量实际值bx_next和预测网络流量A_输入影子critic值网络模型,得到评价值Q_;

步骤H7:根据网络流量预测值A_、第二网络流量实际值by_next、网络状态bs_next和预测的网络流量向量ba,得到能耗向量Energy、被动迁移次数向量Migcount和被动迁移失败次数向量Failcount;

步骤H8:使用如下公式对能耗向量Energy、被动迁移次数向量Migcount和被动迁移失败次数向量Failcount标准化,分别得到向量n_e、n_migc和n_failc:其中,d是输入向量,mean_d是输入向量的均值,std_d是输入向量的方差;

步骤H9:使用如下公式对向量n_e、n_migc和n_failc计算回报值r:r=‑(n_e·α1+n_migc·α2+n_failc·α3)

其中,α1、α2和α3是权重常系数;

步骤H10:使用如下公式计算q_target:

q_target=r+γ·Q_

步骤H11:将bx和ba输入critic值网络模型,得到评价值向量q_v;

步骤H12:对q_v和q_target使用MSEloss计算均方误差作为损失函数,如下公式所示;

步骤H13:使用上述损失函数更新critic值网络模型的参数。

8.根据权利要求1所述的基于DDPG神经网络的网络流量预测方法,其特征在于,所述步骤4包括:步骤I1:确定当前时间片序号slice_index,取出slice_index对应的actor值网络模型;

步骤I2:取出当前时间片之前的预设个数的时间片的网络流量历史值s和实际值ry,将网络环境变量mig复制至变量mig_test中;设置当前时间片增量p=0;

步骤I3:取出时间片slice_index+p的网络流量历史值和实际值,将网络流量历史值输入至对应时间片的actor值网络模型,得到预测值a;

步骤I4:输入网络流量预测值a、实际值ry、网络环境变量mig_test和前一个时间片预测流量值lastflow,计算网络能耗增量、被动迁移次数和被动迁移失败的次数,并将这三个值保存至变量multienergy_test、multimigcount_test和multifailcount_test中;

步骤I5:使用multienergy_test、multimigcount_test和multifailcount_test对能耗、被动迁移次数和被动迁移失败次数进行标准化,使用标准化值计算环境反馈即时奖励r,并将环境反馈即时奖励r求和得到ep_reward_test;

步骤I6:使用当前预测网络流量a和前一个时间片预测流量值lastflow,对mig_test实施迁移;

步骤I7:将当前预测网络流量a保存至前一个时间片网络流量预测值lastflow中;

步骤I8:p=p+1,若时间片增量p小于m,转步骤I3;否则,转步骤I9;

步骤I9:对测试数据计算的奖励值ep_reward_test计算均值,并保存,结束。

说明书 :

一种基于DDPG神经网络的网络流量预测方法

技术领域

[0001] 本发明涉及网络功能虚拟化(NFV,network function virtualization)中的虚拟网络功能(VNF,virtualized network functions)的迁移(migration)问题,具体涉及一种基于DDPG神经网络的网络流量预测方法。

背景技术

[0002] 传统的网络结构较为“僵化”,需要部署多种专用的硬件设备以提供各种服务,改变服务类型可能需要更换硬件设备。网络功能虚拟化使用通用的硬件设备来部署多种功能软件,这种提供服务功能的模式解耦了硬件和软件,从而实现灵活的功能部署。其中,虚拟网络功能是特定网络功能在共享的通用硬件资源上的软件实现。
[0003] 针对目前网络功能虚拟化环境中大多忽略运行中流量过载,导致频繁迁移问题。通常情况下,将每天划分多个时间片,使用各时间片内最大流量得到服务功能链的资源需求,以每个时间片为单位进行迁移。由于下个时间片的最大流量不可预知,只能根据当时和历史流量进行预测,预测结果的准确程度,直接影响网络的效率,甚至影响到网络的性能。
若在时间片内,实际资源需求大于根据预测分配的资源,发生分配资源不能满足需求的情况,将大概率触发迁移;若实际资源需求小于根据预测分配的资源,将占用多余的资源,使得网络运行能耗较高。为了减少时间片内的迁移次数,在计算下个时间片的资源需求时,可以适当放大最大流量预测值。但是,放大流量值带来了多余的能耗。为了更有效地节能,应降低预测流量。当预测流量和实际流量相等时,时间片内不会发生被动迁移;当预测流量大于实际流量时,时间片内不会发生被动迁移,但能耗量相对较高;当预测流量小于实际流量时,时间片内可能发生被动迁移,能耗量相对较低,可以找出临界点,使得时间片内不发生或少发生被动迁移,以最大程度地降低能耗和被动迁移次数。

发明内容

[0004] 为了解决上述技术问题,本发明提供一种基于DDPG神经网络的网络流量预测方法。
[0005] 一种基于DDPG神经网络的网络流量预测方法,包括以下步骤:
[0006] 步骤1:构建DDPG神经网络,所述DDPG神经网络包括critic值网络模型和actor值网络模型;
[0007] 步骤2:获取当前时间片对应的时间片集合的网络流量数据,所述当前时间片对应的时间片集合包括当前时间片以及当前时间片之前的预设个数的时间片,网络流量数据包括预测使用数据和真实值数据,所述预测使用数据包括用于预测当前时间片流量值的前所述预设个数的时间片的网络流量实际值,所述真实值数据为当前时间片的实际流量值;
[0008] 步骤3:根据所述当前时间片对应的时间片集合的网络流量数据,为当前时间片训练所述DDPG神经网络;
[0009] 步骤4:根据训练完成的所述DDPG神经网络进行网络流量预测。
[0010] 进一步地,所述步骤1之前,所述基于DDPG神经网络的网络流量预测方法还包括如下步骤:
[0011] 初始化时间片slice_begin=0。
[0012] 进一步地,所述步骤1还包括:初始化所述DDPG神经网络的迭代次数i=0;
[0013] 所述步骤3包括:
[0014] 步骤A0:初始化循环次数为0;
[0015] 步骤A1:获取当前时间片的前一个时间片的预测流量值lastflow,并复制底层物理网络的初始网络状态mig至网络状态变量miglast和migtrain;
[0016] 步骤A2:根据所述当前时间片对应的时间片集合的网络流量数据,利用actor值网络模型进行预测,得到预测网络流量值prea,对预测网络流量值prea加入随机因素,得到当前时间片的预测网络流量值a;
[0017] 步骤A3:根据预测网络流量值a和当前时间片实际网络流量r,以及当前网络状态migtrain和所述前一个时间片使用的预测流量值lastflow,计算网络能耗e、被动迁移次数mc和被动迁移失败的次数fc,并将这三个值保存至变量e、mc和fc中,并分别将其加入向量multienergy、multimigcount和multifailcount中;
[0018] 步骤A4:根据预测网络流量值a以及所述前一个时间片使用的预测流量值lastflow,在时间片交替处为底层物理网络实施迁移;
[0019] 步骤A5:添加主动迁移前底层网络状态miglast、预测网络流量值a、当前时间片对应的日期date以及当前时间片的时间片序号slice、网络能耗e、被动迁移次数mc、被动迁移失败次数fc、当前网络状态migtrain至经验回放池;
[0020] 步骤A6:将此次当前网络状态migtrain保存至网络状态变量miglast,并将此次预测网络流量值a保存至预测流量值lastflow;
[0021] 步骤A7:当前时间片的时间片slice_begin+1,若当前时间片slice_begin小于slice_begin+m,转步骤A2;否则,转步骤A8;
[0022] 步骤A8:若经验回放池中数据条目数大于阈值MEMORY_CAPACITY,则将变量val乘以小于1的常量,并对当前时间片序号slice_begin对应的DDPG神经网络进行强化学习操作;否则,转步骤A9;
[0023] 步骤A9:使用multienergy、multimigcount和multifailcount对能耗、被动迁移次数和被动迁移失败次数进行标准化,使用标准化值计算环境反馈即时奖励r,并将环境反馈即时奖励r求和得到ep_reward;并且,循环次数加1;
[0024] 步骤A10:若循环次数小于阈值MAX_EP_STEPS,转步骤A1;否则,转步骤A11;
[0025] 步骤A11:验证训练效果数据,首先计算验证数据的日期数valid_days,设置日期date=0;
[0026] 步骤A12:在验证数据中,取出日期date的时间片slice_begin到时间片slice_begin+m个流量数据,包括每个时间片的前所述预设个数的时间片的历史数据s,以及当前时间片的实际流量值ry,设置变量p=0;
[0027] 步骤A13:对于当前时间片slice_begin+p,取出网络历史流量值st,当前时间片实际流量值ryt,当前时间片的前一个时间片使用的网络预测流量值lastflow_valid,将网络环境状态变量mig复制到mig_valid变量;
[0028] 步骤A14:将网络历史流量值st输入当前时间片对应的actor值网络模型,计算当前时间片的预测网络流量值a;
[0029] 步骤A15:使用预测网络流量值a、实际值ryt、环境变量mig_valid、当前时间片的前一个时间片的预测流量值lastflow_valid,计算网络能耗e、被动迁移次数mc和被动迁移失败的次数fc,并将这三个值保存至变量multienergy_valid、multimigcount_valid和multifailcount_valid中;
[0030] 步骤A16:使用multienergy_valid、multimigcount_valid和multifailcount_valid对能耗、被动迁移次数和被动迁移失败次数进行标准化,使用标准化值计算环境反馈即时奖励r,并将环境反馈即时奖励r求和得到ep_reward_valid;
[0031] 步骤A17:计算使用预测网络流量值a和前一个时间片预测流量值lastflow_valid,对mig_valid实施迁移;
[0032] 步骤A18:将预测网络流量值a保存至前一个时间片网络流量预测值lastflow_valid中;
[0033] 步骤A19:p=p+1,若变量p小于m,转步骤A13;否则,转步骤A20;
[0034] 步骤A20:date=date+1,若日期date小于valid_days,转步骤A12;否则,转步骤A21;
[0035] 步骤A21:对验证数据计算的奖励值ep_reward_valid计算均值,若该均值大于变量max_valid,将当前actor值网络模型保存至文件,并更新max_valid值为ep_reward_valid;
[0036] 步骤A22:i=i+1,若迭代次数i小于阈值MAX_EPISODES,转步骤A1;否则,转步骤A23;
[0037] 步骤A23:slice_begin=slice_begin+1,若时间片slice_begin小于时间片总个数time_step,转步骤A1;否则,训练结束。
[0038] 进一步地,所述步骤2还包括:对预测网络流量数据标准化,所述对预测网络流量数据标准化包括:
[0039] 使用如下公式对预测网络流量值a实施标准化操作:
[0040]
[0041] 其中,range_down是预测网络流量值a要映射到的空间下限,range_up是预测网络流量值a要映射到的空间上限,min_a是预测网络流量值a的最小值,max_a是预测网络流量值a的最大值。
[0042] 进一步地,所述步骤A2中的利用actor值网络模型进行预测,包括:
[0043] 步骤C1:输入所述当前时间片对应的时间片集合的网络流量数据至actor值网络模型;
[0044] 步骤C2:actor值网络模型的输出值为当前时间片的网络流量预测值。
[0045] 进一步地,所述步骤A2中对预测网络流量值prea加入随机因素,包括:
[0046] 步骤D1:以预测网络流量值prea为均值,变量val为标准差,对预测网络流量值prea实施正态分布,记录得到的值写入预测网络流量值a;
[0047] 步骤D2:对预测网络流量值a实施截断操作,使其值域为[range_down,range_up];range_down是预测网络流量值a要映射到的空间下限,range_up是预测网络流量值a要映射到的空间上限。
[0048] 进一步地,所述步骤A3中的计算网络能耗e、被动迁移次数mc和被动迁移失败的次数fc,包括:
[0049] 步骤E1:复制当前网络状态至mig1和mig2;
[0050] 步骤E2:将当前时间片的预测网络流量除以前一个时间片的预测网络流量lastflow,得到比值ratiopredict;
[0051] 步骤E3:使用当前网络状态变量mig1和比值ratiopredict,对当前络实施迁移,更新网络状态变量mig1;
[0052] 步骤E4:计算更新后的网络状态mig1下的网络能耗e;
[0053] 步骤E5:将当前时间片的实际网络流量除以当前时间片的预测网络流量,得到比值ratio,若ratio小于等于1,转步骤E6,否则,转步骤E7;
[0054] 步骤E6:设置被动迁移次数变量mc为0,被动迁移失败次数变量fc为0,转步骤E9;
[0055] 步骤E7:使用已更新的网络状态变量mig1和比值ratio,对当前网络再次实施迁移,再次更新网络状态变量mig1,并得到返回值迁移次数migc和迁移失败次数failc;
[0056] 步骤E8:设置被动迁移次数变量mc为migc,被动迁移失败次数变量fc为failc;
[0057] 步骤E9:返回变量能耗e、被动迁移次数mc和被动迁移失败次数fc,结束。
[0058] 进一步地,所述步骤E4中的计算更新后的网络状态mig1下的网络能耗e,包括:
[0059] 步骤G1:对第i个cpu,使用如下公式计算cpui的能耗energyi:
[0060]
[0061] 其中,PMIN和PMAX分别为节点能耗的最小值和最大值,cpu_usedi是cpui的已使用cpu量,cpu_totali是cpui的总cpu量;
[0062] 步骤G2:对所有cpu的能耗值求和,得到变量energy_sum;
[0063] 步骤G3:返回变量energy_sum,结束。
[0064] 进一步地,所述步骤A8中的对DDPG神经网络进行强化学习操作,包括:
[0065] 步骤H1:所述DDPG神经网络还包括影子critic值网络模型和影子actor值网络模型;分别使用actor值网络模型和critic值网络模型更新影子critic值网络模型和影子actor值网络模型的模型参数,更新方法如下公式所示:
[0066] θQ'=τθQ+(1‑τ)θQ'
[0067] θπ'=τθπ+(1‑τ)θπ'
[0068] 其中,τ是更新因子常量,θQ和θπ分别是actor值网络模型和critic值网络模型的参数,θQ'和θπ'分别是影子actor值网络模型和影子critic值网络模型的参数;
[0069] 步骤H2:从经验回放池中随机选择BATCH_SIZE条数据,保证每条数据的时间片序号与当前DDPG的时间片序号一致,为每条数据取出网络状态bs、预测流量数据ba、能耗benergy、随机迁移次数bmigcount、随机迁移失败次数bfailcount、主动迁移后网络状态bs_next和所述预测使用数据以及所述真实值数据;
[0070] 步骤H3:将随机选择的所有时间片的网络流量预测数据bx输入actor值网络模型,得到这些时间片的预测向量A,使用critic值网络模型得到评价向量Q;
[0071] 步骤H4:使用如下公式为actor值网络模型计算损失值loss_a,并使用优化器Adam更新actor值网络模型的参数;
[0072]
[0073] 其中,n为评价向量Q的分量数,即BATCH_SIZE;
[0074] 步骤H5:为随机选择的每个时间片,取出其下一个时间片对应的所述预测使用数据以及所述真实值数据,包括用于预测下一个时间片流量值的前所述预设个数的时间片的第一网络流量实际值bx_next,和下一个时间片的第二网络流量实际值by_next;
[0075] 步骤H6:将第一网络流量实际值bx_next输入影子actor值网络模型,得到预测网络流量A_,将第一网络流量实际值bx_next和预测网络流量A_输入影子critic值网络模型,得到评价值Q_;
[0076] 步骤H7:根据网络流量预测值A_、第二网络流量实际值by_next、网络状态bs_next和预测的网络流量向量ba,得到能耗向量Energy、被动迁移次数向量Migcount和被动迁移失败次数向量Failcount;
[0077] 步骤H8:使用如下公式对能耗向量Energy、被动迁移次数向量Migcount和被动迁移失败次数向量Failcount标准化,分别得到向量n_e、n_migc和n_failc:
[0078]
[0079] 其中,d是输入向量,mean_d是输入向量的均值,std_d是输入向量的方差;
[0080] 步骤H9:使用如下公式对向量n_e、n_migc和n_failc计算回报值r:
[0081] r=‑(n_e·α1+n_migc·α2+n_failc·α3)
[0082] 其中,α1、α2和α3是权重常系数;
[0083] 步骤H10:使用如下公式计算q_target:
[0084] q_target=r+γ·Q_
[0085] 步骤H11:将bx和ba输入critic值网络模型,得到评价值向量q_v;
[0086] 步骤H12:对q_v和q_target使用MSEloss计算均方误差作为损失函数,如下公式所示;
[0087]
[0088] 步骤H13:使用上述损失函数更新critic值网络模型的参数。
[0089] 进一步地,所述步骤4包括:
[0090] 步骤I1:确定当前时间片序号slice_index,取出slice_index对应的actor值网络模型;
[0091] 步骤I2:取出当前时间片之前的预设个数的时间片的网络流量历史值s和实际值ry,将网络环境变量mig复制至变量mig_test中;设置当前时间片增量p=0;
[0092] 步骤I3:取出时间片slice_index+p的网络流量历史值和实际值,将网络流量历史值输入至对应时间片的actor值网络模型,得到预测值a;
[0093] 步骤I4:输入网络流量预测值a、实际值ry、网络环境变量mig_test和前一个时间片预测流量值lastflow,计算网络能耗增量、被动迁移次数和被动迁移失败的次数,并将这三个值保存至变量multienergy_test、multimigcount_test和multifailcount_test中;
[0094] 步骤I5:使用multienergy_test、multimigcount_test和multifailcount_test对能耗、被动迁移次数和被动迁移失败次数进行标准化,使用标准化值计算环境反馈即时奖励r,并将环境反馈即时奖励r求和得到ep_reward_test;
[0095] 步骤I6:使用当前预测网络流量a和前一个时间片预测流量值lastflow,对mig_test实施迁移;
[0096] 步骤I7:将当前预测网络流量a保存至前一个时间片网络流量预测值lastflow中;
[0097] 步骤I8:p=p+1,若时间片增量p小于m,转步骤I3;否则,转步骤I9;
[0098] 步骤I9:对测试数据计算的奖励值ep_reward_test计算均值,并保存,结束。
[0099] 本发明的有益效果为:减少因实际流量较高导致的被动迁移频次;在已知减少被动迁移权重和节能权重时,最大限度降低被动迁移次数和能耗。

附图说明

[0100] 图1是本发明提供的一种基于DDPG神经网络的网络流量预测方法的整体流程示意图;
[0101] 图2是actor值网络模型架构图;
[0102] 图3是critic值网络模型架构图。

具体实施方式

[0103] 以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
[0104] 应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0105] 还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0106] 如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0107] 另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0108] 在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0109] 本发明涉及网络功能虚拟化(NFV,network function virtualization)中虚拟网络功能(VNF,virtualized network functions)在线迁移(online migration)问题,具体提供一种基于DDPG神经网络的网络流量预测方法,如图1所示,该网络流量预测方法的硬件执行主体可以为计算机设备、服务器设备或者智能移动终端。
[0110] 为了说明本申请所述的技术方案,下面通过具体实施方式来进行说明。
[0111] 步骤1:构建DDPG神经网络,所述DDPG神经网络包括critic值网络模型和actor值网络模型:
[0112] 本实施例中,在步骤1之前,基于DDPG神经网络的网络流量预测方法还包括如下步骤:初始化时间片序号变量slice_begin=0。
[0113] 另外,步骤1还包括:初始化DDPG神经网络的迭代次数i=0;
[0114] 为使网络流量预测值能够结合当前网络环境,选择降低被动迁移频次且节能量最大的预测流量值,可利用深度强化学习算法实现。DDPG神经网络是一种面向连续解空间的深度强化学习模型,可与环境交互,并能方便地学习和评价策略,因此本实施例拟基于DDPG神经网络,预测下个时间片最大网络流量。构思为:使用最近一段时间的历史流量等信息作为输入,通过DDPG神经网络评价并预测下个时间片的网络流量。
[0115] 本实施例中,DDPG神经网络包括critic值网络模型critic_eval和actor值网络模型actor_eval,还包括影子critic值网络模型critic_target和影子actor值网络模型actor_target。actor值网络模型如图2所示,critic值网络模型如图3所示。actor值网络模型的forward函数为:将输入数据s输入layer1,得到输出x1;将x1输入layer2,得到输出x2;将x2输入全连接网络层layer3,得到输出x3;将x3输入自定义的激活层layer4,该层执行sigmoid函数,得到输出x4,将x4加1,得到输出数据a。critic值网络模型的forward函数为:
将输入数据s输入layer1.1.1,得到输出x1;将x1输入layer1.1.2,得到输出x2;将输入数据a输入layer1.2.1,得到输出y1;将y1输入layer1.2.2,得到输出y2;将x2和y2之和输入全连接网络层layer2,得到输出数据q。应当理解,layer的类型不受限制,可以是全连接层、LSTM子层等,为了提高训练效果,推荐使用LSTM子层。
[0116] 步骤2:获取当前时间片对应的时间片集合的网络流量数据,所述当前时间片对应的时间片集合包括当前时间片以及当前时间片之前的预设个数的时间片,网络流量数据包括预测使用数据和真实值数据,所述预测使用数据包括用于预测当前时间片流量值的前所述预设个数的时间片的网络流量实际值,所述真实值数据为当前时间片的实际流量值:
[0117] 获取当前时间片对应的时间片集合的网络流量数据,当前时间片对应的时间片集合包括当前时间片以及当前时间片之前的预设个数的时间片,网络流量数据包括预测使用数据和真实值数据,预测使用数据包括用于预测当前时间片流量值的前预设个数的时间片的网络流量实际值,真实值数据为当前时间片的实际流量值。作为一个具体实施方式,前预设个数可以为前一周对应的时间片的个数。举例地,产生一个随机数n,获取日期值为n时间片集合的网络流量数据,其中,时间片集合为从第slice_begin个时间片到第slice_begin+m个时间片,网络流量数据包括预测使用数据(用于预测当前时间片流量值的前一周所有时间片的网络流量实际值)和真实值数据(即当前时间片的实际流量值)。
[0118] 本实施例中,步骤2还包括:对预测网络流量数据标准化,对预测网络流量数据标准化包括:使用如下公式对预测网络流量值a实施标准化操作:
[0119]
[0120] 其中,range_down是预测网络流量值a要映射到的空间下限,range_up是预测网络流量值a要映射到的空间上限,min_a是预测网络流量值a的最小值,max_a是预测网络流量值a的最大值。
[0121] 步骤3:根据所述当前时间片对应的时间片集合的网络流量数据,为当前时间片训练所述DDPG神经网络:
[0122] 本实施例给出该步骤3的具体算法过程:
[0123] 步骤A0:初始化循环次数为0;
[0124] 步骤A1:获取当前时间片的前一个时间片的预测流量值lastflow,并复制底层物理网络的初始网络状态mig至网络状态变量miglast和migtrain。
[0125] 步骤A2:根据当前时间片对应的时间片集合的网络流量数据,包括前一周所有时间片的网络流量值,利用actor值网络模型进行预测,得到预测网络流量值prea,对预测网络流量值prea加入随机因素,得到当前时间片的预测网络流量值(即动作)a。
[0126] 其中,利用actor值网络模型进行预测,包括:
[0127] 步骤C1:输入当前时间片对应的时间片集合的网络流量数据至actor值网络模型;
[0128] 步骤C2:actor值网络模型的输出值为当前时间片的网络流量预测值。
[0129] 对预测网络流量值prea加入随机因素,包括:
[0130] 步骤D1:以预测网络流量值prea为均值,变量val为标准差,对预测网络流量值prea实施正态分布,记录得到的值写入预测网络流量值a;
[0131] 步骤D2:对预测网络流量值a实施截断操作,使其值域为[range_down,range_up];range_down是预测网络流量值a要映射到的空间下限,range_up是预测网络流量值a要映射到的空间上限。
[0132] 步骤A3:根据预测网络流量值a和当前时间片实际网络流量r,以及当前网络状态migtrain和所述前一个时间片使用的预测流量值lastflow,计算网络能耗e、被动迁移次数mc和被动迁移失败的次数fc,并将这三个值保存至变量e、mc和fc中,并分别将其加入向量multienergy、multimigcount和multifailcount中。
[0133] 其中,计算网络能耗e、被动迁移次数mc和被动迁移失败的次数fc,包括:
[0134] 步骤E1:复制当前网络状态至mig1和mig2;
[0135] 步骤E2:将当前时间片的预测网络流量除以前一个时间片的预测网络流量lastflow,得到比值ratiopredict;
[0136] 步骤E3:使用当前网络状态变量mig1和比值ratiopredict,对当前络实施迁移,更新网络状态变量mig1。本实施例中,使用当前网络状态变量mig1和比值ratiopredict,采用first‑fit算法对当前网络实施迁移。
[0137] 步骤E4:计算更新后的网络状态mig1下的网络能耗e。其中,计算更新后的网络状态mig1下的网络能耗e,包括:
[0138] 步骤G1:对第i个cpu,使用如下公式计算cpui的能耗energyi:
[0139]
[0140] 其中,PMIN和PMAX分别为节点能耗的最小值和最大值,cpu_usedi是cpui的已使用cpu量,cpu_totali是cpui的总cpu量;
[0141] 步骤G2:对所有cpu的能耗值求和,得到变量energy_sum;
[0142] 步骤G3:返回变量energy_sum,结束。
[0143] 步骤E5:将当前时间片的实际网络流量除以当前时间片的预测网络流量,得到比值ratio,若ratio小于等于1,转步骤E6,否则,转步骤E7;
[0144] 步骤E6:设置被动迁移次数变量mc为0,被动迁移失败次数变量fc为0,转步骤E9;
[0145] 步骤E7:使用已更新的网络状态变量mig1和比值ratio,对当前网络再次实施迁移,再次更新网络状态变量mig1,并得到返回值迁移次数migc和迁移失败次数failc;
[0146] 步骤E8:设置被动迁移次数变量mc为migc,被动迁移失败次数变量fc为failc;
[0147] 步骤E9:返回变量能耗e、被动迁移次数mc和被动迁移失败次数fc,结束。
[0148] 步骤A4:根据预测网络流量值a以及所述前一个时间片使用的预测流量值lastflow,在时间片交替处为底层物理网络实施(主动)迁移。
[0149] 步骤A5:添加主动迁移前底层网络状态miglast、预测网络流量值a、当前时间片对应的日期date以及当前时间片的时间片序号slice、网络能耗e、被动迁移次数mc、被动迁移失败次数fc、当前网络状态migtrain至经验回放池(这里使用文件来存储数据)。当前网络状态migtrain即为主动迁移后底层网络状态。
[0150] 步骤A6:将此次当前网络状态migtrain保存至网络状态变量miglast,并将此次预测网络流量值a保存至预测流量值lastflow。
[0151] 步骤A7:当前时间片的时间片slice_begin+1,若当前时间片slice_begin小于slice_begin+m,转步骤A2;否则,转步骤A8。
[0152] 步骤A8:若经验回放池中数据条目数大于阈值MEMORY_CAPACITY,则将变量val乘以小于1的常量,并对当前时间片序号slice_begin对应的DDPG神经网络进行强化学习操作;否则,转步骤A9。
[0153] 本实施例中,对DDPG神经网络进行强化学习操作,包括:
[0154] 步骤H1:所述DDPG神经网络还包括影子critic值网络模型和影子actor值网络模型;分别使用actor值网络模型和critic值网络模型更新影子critic值网络模型和影子actor值网络模型的模型参数,更新方法如下公式所示:
[0155] θQ'=τθQ+(1‑τ)θQ'
[0156] θπ'=τθπ+(1‑τ)θπ'
[0157] 其中,τ是更新因子常量,θQ和θπ分别是actor值网络模型和critic值网络模型的参数,θQ'和θπ'分别是影子actor值网络模型和影子critic值网络模型的参数;
[0158] 步骤H2:从经验回放池中随机选择BATCH_SIZE条数据,保证每条数据的时间片序号与当前DDPG的时间片序号一致,为每条数据取出网络状态bs、预测流量数据ba、能耗benergy、随机迁移次数bmigcount、随机迁移失败次数bfailcount、主动迁移后网络状态bs_next和预测使用数据以及真实值数据;
[0159] 步骤H3:将随机选择的所有时间片的网络流量预测数据bx输入actor值网络模型,得到这些时间片的预测向量A,使用critic值网络模型得到评价向量Q;
[0160] 步骤H4:使用如下公式为actor值网络模型计算损失值loss_a,并使用优化器Adam更新actor值网络模型的参数;
[0161]
[0162] 其中,n为评价向量Q的分量数,即BATCH_SIZE;
[0163] 步骤H5:为随机选择的每个时间片,取出其下一个时间片对应的所述预测使用数据以及所述真实值数据,包括用于预测下一个时间片流量值的前所述预设个数的时间片的第一网络流量实际值bx_next,和下一个时间片的第二网络流量实际值by_next;
[0164] 步骤H6:将第一网络流量实际值bx_next输入影子actor值网络模型,得到预测网络流量A_,将第一网络流量实际值bx_next和预测网络流量A_输入影子critic值网络模型,得到评价值Q_;
[0165] 步骤H7:根据网络流量预测值A_、第二网络流量实际值by_next、网络状态bs_next和预测的网络流量向量ba,得到能耗向量Energy、被动迁移次数向量Migcount和被动迁移失败次数向量Failcount;
[0166] 步骤H8:使用如下公式对能耗向量Energy、被动迁移次数向量Migcount和被动迁移失败次数向量Failcount标准化,分别得到向量n_e、n_migc和n_failc:
[0167]
[0168] 其中,d是输入向量,mean_d是输入向量的均值,std_d是输入向量的方差;
[0169] 步骤H9:使用如下公式对向量n_e、n_migc和n_failc计算回报值r:
[0170] r=‑(n_e·α1+n_migc·α2+n_failc·α3)
[0171] 其中,α1、α2和α3是权重常系数;
[0172] 步骤H10:使用如下公式计算q_target:
[0173] q_target=r+γ·Q_
[0174] 步骤H11:将bx和ba输入critic值网络模型,得到评价值向量q_v;
[0175] 步骤H12:对q_v和q_target使用MSEloss计算均方误差作为损失函数,如下公式所示;
[0176]
[0177] 步骤H13:使用上述损失函数更新critic值网络模型的参数。
[0178] 步骤A9:使用multienergy、multimigcount和multifailcount对能耗、被动迁移次数和被动迁移失败次数进行标准化,使用标准化值计算环境反馈即时奖励r,并将环境反馈即时奖励r求和得到ep_reward,并且,循环次数加1。
[0179] 步骤A10:若循环次数小于阈值MAX_EP_STEPS,转步骤A1;否则,转步骤A11。
[0180] 步骤A11:验证训练效果数据,首先计算验证数据的日期数valid_days,设置日期date=0。
[0181] 步骤A12:在验证数据中,取出日期date的时间片slice_begin到时间片slice_begin+m个流量数据,包括每个时间片的前所述预设个数的时间片的历史数据s,以及当前时间片的实际流量值ry,设置变量p=0。
[0182] 步骤A13:对于当前时间片slice_begin+p,取出网络历史流量值st,当前时间片实际流量值ryt,当前时间片的前一个时间片使用的网络预测流量值lastflow_valid,将网络环境状态变量mig复制到mig_valid变量。
[0183] 步骤A14:将网络历史流量值st输入当前时间片对应的actor值网络模型,计算当前时间片的预测网络流量值a。
[0184] 步骤A15:使用预测网络流量值a、实际值ryt、环境变量mig_valid、当前时间片的前一个时间片的预测流量值lastflow_valid,计算网络能耗e、被动迁移次数mc和被动迁移失败的次数fc,并将这三个值保存至变量multienergy_valid、multimigcount_valid和multifailcount_valid中。
[0185] 步骤A16:使用multienergy_valid、multimigcount_valid和multifailcount_valid对能耗、被动迁移次数和被动迁移失败次数进行标准化,使用标准化值计算环境反馈即时奖励r,并将环境反馈即时奖励r求和得到ep_reward_valid。
[0186] 步骤A17:计算使用预测网络流量值a和前一个时间片预测流量值lastflow_valid,对mig_valid实施(主动)迁移。
[0187] 步骤A18:将预测网络流量值a保存至前一个时间片网络流量预测值lastflow_valid中。
[0188] 步骤A19:p=p+1,若变量p小于m,转步骤A13;否则,转步骤A20。
[0189] 步骤A20:date=date+1,若日期date小于valid_days,转步骤A12;否则,转步骤A21。
[0190] 步骤A21:对验证数据计算的奖励值ep_reward_valid计算均值,若该均值大于变量max_valid,将当前actor值网络模型保存至文件,并更新max_valid值为ep_reward_valid。
[0191] 步骤A22:i=i+1,若迭代次数i小于阈值MAX_EPISODES,转步骤A1;否则,转步骤A23。
[0192] 步骤A23:slice_begin=slice_begin+1,若时间片slice_begin小于时间片总个数time_step,转步骤A1;否则,训练结束。
[0193] 步骤4:根据训练完成的所述DDPG神经网络进行网络流量预测:
[0194] 本实施例中,步骤4包括如下具体过程:
[0195] 步骤I1:确定当前时间片序号slice_index,取出slice_index对应的actor值网络模型;
[0196] 步骤I2:取出当前时间片之前的预设个数的时间片的网络流量历史值s和实际值ry,将网络环境变量mig复制至变量mig_test中;设置当前时间片增量p=0;
[0197] 步骤I3:取出时间片slice_index+p的网络流量历史值和实际值,将网络流量历史值输入至对应时间片的actor值网络模型,得到预测值a;
[0198] 步骤I4:输入网络流量预测值a、实际值ry、网络环境变量mig_test和前一个时间片预测流量值lastflow,计算网络能耗增量、被动迁移次数和被动迁移失败的次数,并将这三个值保存至变量multienergy_test、multimigcount_test和multifailcount_test中;
[0199] 步骤I5:使用multienergy_test、multimigcount_test和multifailcount_test对能耗、被动迁移次数和被动迁移失败次数进行标准化,使用标准化值计算环境反馈即时奖励r,并将环境反馈即时奖励r求和得到ep_reward_test;
[0200] 步骤I6:使用当前预测网络流量a和前一个时间片预测流量值lastflow,对mig_test实施迁移;
[0201] 步骤I7:将当前预测网络流量a保存至前一个时间片网络流量预测值lastflow中;
[0202] 步骤I8:p=p+1,若时间片增量p小于m,转步骤I3;否则,转步骤I9;
[0203] 步骤I9:对测试数据计算的奖励值ep_reward_test计算均值,并保存,结束。
[0204] 以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围,均应包含在本申请的保护范围之内。