一种基于深度强化学习的最优流量分割的方法和系统与流程

文档序号:31729218发布日期:2022-10-05 01:26阅读:122来源:国知局
一种基于深度强化学习的最优流量分割的方法和系统与流程

1.本发明涉及通信领域,特别是涉及一种基于深度强化学习的最优流量分割的方法和系统。


背景技术:

2.随着网络规模的不断扩大,数据包在网络中传输的路由也变得错综复杂,当遇到突发业务导致某个节点或者链路发生拥塞时,需要将流量分割到不同的节点上。如何根据路由的权重设置流量分割比例无论对于路由器还是整个网络来说都是至关重要的。
3.如图1所示的网络拓扑结构为有权图,每个圆圈表示一个路由器节点,连线表示两个路由器节点间具有可达的链路,连线的权重为该链路上所分配的流量权重。传统的做法主要是人为的配置各路由的分割比例。当网络环境发生复杂变化时,固定的分割比例无法满足网络需求,无法评估网络中路由器之间的联动性,无法评估整体网络的性能。所以,随着网络用户的日益递增,网络环境将变得越来越复杂,如何能根据真实的网络状态而动态的生成最优流量分割比例成为未来技术的一个挑战。
4.鉴于此,如何克服现有技术所存在的缺陷,解决网络环境动态变化时最优流量分割比例发生变化的现象,是本技术领域待解决的问题。


技术实现要素:

5.针对现有技术的以上缺陷或改进需求,本发明解决了动态网络环境下最优流量分割的问题。
6.本发明实施例采用如下技术方案:
7.第一方面,本发明提供了一种基于深度强化学习的最优流量分割的方法,具体为:获取所有需要进行流量分割的路由器的当前状态,建立路由器状态矩阵;使用每次流量分割后的全部路由器状态矩阵迭代建立训练数据集,训练数据集的输出为全网链路的状态四元组,所述状态四元组具体为[路由器状态矩阵,权重向量,平均吞吐量,下一时刻路由器状态矩阵],其中权重向量为对每个下一跳路由器流量分割的比例;以流量规划后指定数量周期中每个路由器的平均吞吐量之和为reward,对强化学习模型进行训练,使用训练后的模型对每一个路由器进行流量分割;根据流量分割将数据包发送至下一路由器节点后,获取下一时刻路由器状态矩阵,对训练数据集进行迭代更新,并使用更新后的训练数据集重新训练模型。
[0008]
优选的,强化学习模型具体包括:所述强化学习模型的策略包括基于策略actor的学习和基于值函数q的学习,强化学习模型的输入为全网的路由器状态矩阵,actor的输出为当前路由器到相邻路由器所有可能的权重向量集合,q为流量分割后根据全网所有路由器的平均吞吐量之和获得的评分。
[0009]
优选的,权重向量具体包括:对于每一个路由器,流量分割的权重向量取值范围为[0,1],所有权重向量的和为1。
[0010]
优选的,使用每次流量分割后的全部路由器状态矩阵迭代建立训练数据集,具体包括:随机选择一组权重向量作为初始权重向量,将初始权重向量对应的状态四元组作为训练数据集的初始数据;每次路由器将数据包传输至下一节点后,将整个网络拓扑的状态四元组增加到训练数据集中,对训练数据集进行迭代更新。
[0011]
优选的,使用每次流量分割后的全部路由器状态矩阵迭代建立训练数据集,还包括:对每个路由器生成至少一个[0,1]区间中的随机数,所有生成的随机数之和为1,使用生成的随机数作为该路由器的权重向量初始值。
[0012]
优选的,以流量规划后指定数量周期中每个路由器的平均吞吐量之和为reward,具体包括:将所有路由器的平均吞吐量作为当前周期的reward,以每次流量分割后指定数量周期中每个周期全网的平均吞吐量作为该次流量分割的reward。
[0013]
优选的,建立路由器状态矩阵,具体包括:获取每个路由器的状态向量,将所有路由器的状态向量组成状态矩阵,其中,所述状态矩阵中每一行为一个路由器的状态向量,每一列为状态向量中的一个字段,所述路由器状态向量的包括每个路由器当前时间点所在的时间段、带宽、当前负载、时延、速率和配置指标中的至少二项。
[0014]
优选的,对强化学习模型进行训练,具体包括:使用离线数据对强化学习模型进行预训练;和/或,使用实时数据对强化学习模型进行在线迭代。
[0015]
另一方面,本发明提供了一种基于深度强化学习的最优流量分割的系统,具体为:控制器获取所有路由器的状态,将当前所有路由器的状态矩阵输入训练后的强化学习模型中,根据第一方面提供的方法获取输出的权重向量,并发送至路由器;路由器根据接收到的权重向量进行流量分割,将数据包发送到下一节点,并将自身状态发送至控制器;控制器使用路由器的最新状态生成下一时刻路由器状态矩阵,将包含下一时刻状态矩阵的状态四元组加入训练数据集中,并使用更新后的训练数据集对强化学习模型进行训练。
[0016]
优选的,控制器获取所有路由器的状态,具体包括:控制器向所有路由器发送路由器状态向量采集指令,每个路由器将自身当前的状态向量发送至控制器,控制器根据所有路由器的状态向量生成全网路由器的状态矩阵;控制器向所有路由器发送链路状态采集指令,每个路由器将自身当前的链路状态发送至控制器,控制器根据全网路由器的链路状态确定强化学习模型的action set;当路由器按照权重向量进行流量分割,传输数据包到下一节点后上报控制器,控制器向上报的路由器发出吞吐量提交指令和路由器状态向量采集指令,上报的路由器将自身当前吞吐量和状态矩阵发送至控制器,控制器生成下一时刻路由器状态矩阵。
[0017]
与现有技术相比,本发明实施例的有益效果在于:使用深度强化学习模型,根据全网路由器的状态矩阵动态进行所有路由器的流量分割,获取指定数量周期中平均吞吐量最大的流量分割策略,并根据每次分割后新的状态矩阵对训练数据集进行迭代。通过该方式,可以根据网络中所有链路的当前状态变化以及训练数据集的迭代实现最优的流量分割的动态规划,并以多个周期的平均吞吐量之和作为规划目标以获取长期受益最高的流量分割方案。
附图说明
[0018]
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使
用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019]
图1为本发明实施例某个具体场景中使用的网络结构拓扑示意图;
[0020]
图2为本发明实施例提供的一种基于深度强化学习的最优流量分割的方法流程图;
[0021]
图3为本发明实施例某个具体场景中某时刻的路由器状态矩阵示意图;
[0022]
图4为本发明实施例某个具体场景中某时刻的动作集合示意图;
[0023]
图5为本发明实施例中使用的多步存储数据模型示意图;
[0024]
图6为本发明实施例提供的另一种基于深度强化学习的最优流量分割的方法流程图;
[0025]
图7为本发明实施例中使用的强化学习模型示意图;
[0026]
图8为本发明实施例中使用的actor-critic算法模型示意图;
[0027]
图9为本发明实施例中使用的神经网络模型示意图;
[0028]
图10为本发明实施例提供的一种基于深度强化学习的最优流量分割的系统架构示意图;
[0029]
图11为本发明实施例提供的一种基于深度强化学习的最优流量分割的系统工作时序图;
[0030]
图12为本发明实施例提供的一种基于深度强化学习的最优流量分割的系统工作流程图;
[0031]
图13为本发明实施例提供的一种基于深度强化学习的最优流量分割的系统工作流程图。
具体实施方式
[0032]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0033]
本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
[0034]
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
[0035]
实施例1:
[0036]
传统的流量分割大多是基于网络的拓扑结构,如今在大数据时代,基于数据驱动的流量分割成为一大热点。本实施例提供的流量分割方法,依托网络自身产生的大数据,采用深度强化学习算法学习网络环境中包含的流量特征,动态计算全网最优流量分割比例,可以有效降低网络时延、提高网络的吞吐量。
[0037]
如图2所示,本发明实施例提供的基于深度强化学习的最优流量分割的方法具体步骤如下:
[0038]
步骤101:获取所有需要进行流量分割的路由器的当前状态,建立路由器状态矩
阵。
[0039]
为了获得对于全网最优化的流量分割比例,需要根对网络中的每一个路由器(router)状态进行分割和评估。因此,首先要获取每个路由器的状态向量。在具体实施中,状态向量的参数可以选择与路径选择有关的各种属性,例如:每个路由器当前时间点所在的时间段、带宽、当前负载、时延、速率和配置指标中的至少二项。
[0040]
为了便于神经网络模型的统一处理,在获取到每个路由器的状态向量后,还可以将所有路由器的状态向量组成状态矩阵(router matrix),状态矩阵中每一行为一个路由器的状态向量,每一列为状态向量中的一个字段,每个路由器对应一个状态向量,多个路由器的状态向量组合成状态矩阵,采用路由器的状态矩阵作为深度强化学习的输入。状态矩阵信息包含了全网所有的路由器的状态信息,也包含了数据包在传输时流量分割的特征。深度学习算法就是对此数据进行特征提取,并将路由器状态矩阵映射到最优流量分割比例。
[0041]
如图3所示,为具体使用场景中某时刻的路由器状态矩阵,各字段的属性含义如下。
[0042]
router_id:路由器id。用于对路由器进行唯一标识。
[0043]
timestamp:当前时间点所在的时间段。具体实施中,可以根据需要划分时间段作为路径规划、状态获取、回报评估的周期。例如可以把一天分成24个时段,此时timestamp取值[1,24]。
[0044]
bandwidth:路由器的带宽。
[0045]
load:路由器的当前负载,具体数值可以使用最大负载的百分比,取值[1,100]。
[0046]
time_delay:路由器的时延数据。
[0047]
rate:路由器的速率数据。
[0048]
performance:路由器的配置指标,如cpu算力、可用存储空间大小等,可以使用综合评价值进行量化表示。
[0049]
为了便于进行计算,输入强化学习模型以及保存在训练数据集中的路由器状态矩阵数据格式如下。
[0050][0051]
其中每一行为一个router的当前状态向量。
[0052]
m:代表网络的router个数,取值为正整数。
[0053]
n:代表每一个router当前的状态信息的维度个数,与状态向量的维度数一致。
[0054]
xmn:代表当前router的一个属性值。
[0055]
为了避免训练数据集和流量分割数据冲突,对于每一个状态矩阵,各行路由器的顺序,以及每一行中路由器状态向量的顺序,进行模型训练和实际的流量分割时需要保持一致。例如,固定按照router_id的顺序进行排列,并按照固定的数据结构保存每个路由器的状态向量。当网络中路由器的数量发生变化时,需要先使用更新后的状态矩阵重新对强化学习模型进行训练,再使用训练后的模型进行流量分割。
[0056]
步骤102:使用每次流量分割后的全部路由器状态矩阵迭代建立训练数据集,训练
数据集的输出为全网链路的状态四元组。
[0057]
本实施例提供的方法中,需要根据路由器状态矩阵中各状态向量的值对每个路由器的可用流量进行分割计算,以分割后路由器分配至每个相邻路由节点的流量比例为计算结果,以全网的平均吞吐量作为评价流量分割结果的标准,在使用强化学习模型进行训练和预测时,需要包含上述数据。另外,在本实施例提供的方法中,为了使各路由器的流量分配能够尽可能提供更长周期的未来收益,不仅需要关注流量分割后的即时网络状态,还需要关注后续几个周期的路由器状态,将多个周期的状态进行综合评估,因此,还需要获取到执行流量分割后的下一时刻路由器状态矩阵,作为下一周期的流量分割预测的输入,通过多周期受益的综合评估提高路径规划的准确度。因此,本实施例中,训练数据集使用的状态四元组具体为[路由器状态矩阵,权重向量,平均吞吐量,下一时刻路由器状态矩阵]
[0058]
状态四元组中,权重向量(weight vector)为对每个下一跳路由器流量分割的比例。为了充分利用每个路由器的全部流量资源,因此将每个路由器的可用流量视为1进行分配。进行流量分割后,对于每一个路由器,流量分割的权重取值范围为[0,1],所有权重的和为1。
[0059]
步骤103:以流量规划后指定数量周期中每个路由器的平均吞吐量之和为reward,对强化学习模型进行训练,使用训练后的模型对每一个路由器进行流量分割。
[0060]
强化学习的报酬(reward)是算法里重要的一项指标,选择一个合适的reward可以让模型尽快收敛。本实施例提供的方法中,采用网络中所有路由器的平均吞吐量(throughput)作为回报,即数据包从每个路由器被分流到相邻路由器后所有路由器的吞吐量的平均值作为评价流量分割结果的标准,不需要关注数据包是否已经到达目标节点。全网的平均吞吐量越高,表明该流量分割比例下网络传输效率越高,因此可以将所有路由器的平均吞吐量作为当前周期的reward。当数据包通过本次流量分割后的分配比例再从每个路由器传输到相邻路由器后,所有路由器的平均吞吐量作为下一状态的回报。为了使强化学习选择一个流量分割的action后未来的长期收益最大,所以使用未来t+n+1个周期的所有平均吞吐量之和进行收益评价,以每次流量分割后指定数量周期中每个周期全网的平均吞吐量作为该次流量分割的reward。具体实施中,进行收益评价的周期数n可以根据实际需要进行确定。
[0061]
在强化学习中,智能体会根据当前环境状态选择一个动作(action),这个动作属于动作集合(action set)。在本实施例提供的方法中,当前动作集合包含从当前路由器到下一跳所有可能的路由器的权重集合,即从当前路由器到所有相邻路由器的权重向量。
[0062]
如图4所示,动作集合为从路由器id1到所有相邻路由器的流量分割比例。权重向量中每一个值代表的是流量分割的比例,取值范围是[0,1]。图中各属性的含义如下。
[0063]
s_routerid:源路由器id。
[0064]
n_router_w:相邻路由器对应的权重。
[0065]
图4中,包含了源路由器id1对于4个相邻路由器的三种流量分割策略,分别为[0.3,0.3,0.2,0.2]、[0.4,0.15,0.25,0.2]、[0.18,0.32,0.28,0.22],三种分割方式所有流量权重的和都为1。
[0066]
为了便于进行策略选择,在本实施例的具体实施场景中,强化学习模型的策略包括基于策略actor的学习和基于值函数q的学习,强化学习模型的输入为全网的路由器状态
矩阵,actor的输出为当前路由器到相邻路由器所有可能的权重向量集合,q为流量分割后根据全网所有路由器的平均吞吐量之和获得的评分。
[0067]
进行流量分割时,强化学习的ai随机从action set中选择一个action进行执行,并对执行结果根据reward进行评估,最终输出收益最大的action,即全网指定周期内平均吞吐量最大的流量分割方案。每一个算法对应一个路由器的流量分割方案,输出一组流量分割权重向量。
[0068]
步骤104:根据流量分割将数据包发送至下一路由器节点后,获取下一时刻路由器状态矩阵,对训练数据集进行迭代更新,并使用更新后的训练数据集重新训练模型。
[0069]
在本实施例提供的方法中,强化学习的reward是一个长期的收益,代表当前actor根据当前环境选择一个action后的t+n+1时刻所获得的回报。所以在获取样本数据时,需要将t+1至t+n+1时刻的平均吞吐量都存入训练数据集中,以便于进行迭代计算。为了便于存储和使用,在实际实施场景中,可以使用如图5所示的多步存储数据模型,将各周期对应的状态四元组存入数据库中,在训练模型和进行路径规划时可以方便的从数据库中批量取出t到t+n+1时刻的数据。
[0070]
经过本实施例中提供的步骤101-步骤104后,即可根据当前网络的实时状态,使用ai算法动态生成最优的流量分割策略,有效降低网络时延、降低误码率、提高吞吐量,获得较长周期内的最佳网络规划效果。
[0071]
本实施例提供的方法中,由于需要使用t+n+1个周期的数据进行收益评估,在步骤102建立训练数据集时,不仅需要使用当前t周期的数据,还需要使用t周期至t+n+1周期的所有数据,因此,需要在每次进行流量分割并完成数据传输后,对训练数据集中的数据进行迭代更新。具体的,如图6所示,使用每次流量分割后的全部路由器状态矩阵迭代建立训练数据集,具体包括。
[0072]
步骤201:随机选择一组权重向量作为初始权重向量,将初始权重向量对应的状态四元组作为训练数据集的初始数据。
[0073]
使用强化学习模型进行流量分割时,将当前路由器到所有相邻路由器的权重向量作为action set,随机选择一组权重向量作为action开始评估,并将当前t周期的路由器状态矩阵所对应的状态四元组作为训练数据集的初始数据。
[0074]
步骤202:每次路由器将数据包传输至下一节点后,将整个网络拓扑的状态四元组增加到训练数据集中,对训练数据集进行迭代更新。
[0075]
进行路径规划时,获取reward的时间点是数据包到达相邻路由器时。对于流量分割来说,下一时刻,即t+1周期,是指数据包从当前路由器节点已经发送到下一路由器节点后,此时再次获取的状态矩阵,即为状态四元组中的下一时刻路由器状态矩阵。重复执行步骤202,直至获取到t+n+1周期的状态四元组,即完成了一组训练数据的获取。在实际运行过程中,对下一个周期进行路径规划时,t=t+1,在训练数据集中去除无需使用的t周期的数据,加入最新的(t+1)+n+1周期的数据,即可获得新的训练数据集。
[0076]
经过步骤201-步骤202,即可迭代获取训练数据集,实现多周期收益的长期评估。
[0077]
进一步的,对于获取到的训练数据,可以使用0均值、归一化、pca、白化等方法进行预处理,进一步提高训练数据集的准确度和训练效率。
[0078]
本实施例中,由于网络动态变化,训练数据集也根据每个周期路径规划的结果动
态变化,因此,需要使用随着时间迭代的训练数据集对强化学习模型进行多次训练。
[0079]
(1)在实际使用之前,可以使用离线数据对强化学习模型进行预训练,以提高初始阶段的路径规划效率和准确度。在产生训练数据的时候,可以通过random函数生成n个和为1的随机数,每个随机数即为权重向量的一个值,代表相邻节点的流量分割比例。实际使用中,为防止产生的随机数太多,可以设置每个随机数取小数点后一位。由于所有权重向量的和必须为1,因此可以使用如下规则产生与相邻路由器数量相同的权重向量。当相邻路由器数量为n时:第一个生成的随机小数=random(0,1),第二个生成的随机小数=random(0,1-第一个生成的随机小数),第三个生成的随机小数=random(0,1-第一个生成的随机小数-第二个生成的随机小数)
……
第n个生成的随机小数=random(0,1-第一个生成的随机小数-第二个生成的随机小数
……‑
第(n-1)个生成的随机小数)。
[0080]
(2)在实际进行路径规划时,为了确保规划出的路径与实际情况相符,需要使用实时数据对强化学习模型进行在线迭代。在进行流量分割的时候,每一个模型对应的是一个路由器节点。如果一个网络有100个节点,那么只需要100个模型进行计算,模型数量相对较少,因此在通常的实施场景中,为了确保流量分割的准确性,可以全部使用真实数据作为训练数据集。在某些特殊场景中,也可以根据需要使用gan等对数据集进行扩展。
[0081]
通过上述两种方法单独使用和结合使用,都可以完成强化学习模型的训练,使其能够规划出符合最大预期收益的流量分割策略。
[0082]
本实施例提供的基于深度强化学习的最优流量分割的方法,依托网络自身产生的大数据,采用深度强化学习算法学习网络环境中包含的路由特征,从而动态计算全网的流量分割策略,可以有效降低网络时延、提高网络的吞吐量。
[0083]
实施例2:
[0084]
在实施例1中提供的基于深度强化学习的流量分割的方法中,使用了强化学习模型来进行深度强化学习。本实施例中,提供一些可用的神经网络模型的具体配置方法和参数。在实际实施中,可以参考以下参数,根据实际需要进行具体的神经网络模型选择和配置。
[0085]
步骤103中,使用强化学习来学习流量分割的权重向量。可以使用如图7所示的强化学习模型,强化学习中的智能体(agent)与环境(environment)互动并采取了动作(action)后,当前状态变为下一个时间点的状态(state),并得到了报酬(reward)。如果采取的动作是正面的(positive)则获得较高的回报,智能体将增加下次遇到类似环境时选择这个动作的概率。反之,如果采取的动作是负面的(negative)则获得较低的回报或者负的分数,智能体将减少下次遇到类似环境时选择这个动作的概率。
[0086]
优选方案中,可以使用actor-critic算法学习最优流量分割,但不限于此方法。如图8所示的原理图,actor-critic是一种玩家评论家模型,它集成了“基于策略的学习”和“基于值函数的学习”的优点。actor负责学习策略,q函数负责给学习到的策略评分,评分越高代表actor学习的策略越好。训练时根据梯度上升更新q的参数,再用q学习到的参数去更新actor的参数,再用actor的参数去更新q的参数,直到整个网络收敛。
[0087]
具体实施中,可以使用神经网络(neural network,简写为nn)作为actor和q的网络。如图9所示的网络结构图,actor和q是一个大的网络。整个模型的输入是路由器状态矩阵(router matrix),actor的输出是action set里的某一个,即一组权重向量。q的输出是
评分,评分越高越好。当模型收敛时,算法便能根据当前输入(路由器状态矩阵)选择一组权重向量而使q输出一个较大的值。即算法根据当前网络环境找到一组流量分割策略,使网络得到的回报(平均吞吐量)最大。在训练时先估计q的参数,再固定住q来更新actor的参数。使用梯度上升算法来更新actor,即
[0088]
在计算action的时候,采用噪声参数的方法。即,使用q网络参数加上噪声的来生成action。这样做的好处是可以让模型系统性的学习action而不是随机的去学习。此时学到的action就是让最大化。
[0089]
进一步的,因为实施例1提供的方法中,强化学习的reward是一个长期的收益,代表当前actor根据当前环境选择一个action后的t+n+1时刻所获得的回报。所以在获取样本数据时,可以使用如图5所述的多步存储数据模型,需要将t+1和t+n+1时刻的平均吞吐量都要存进数据库。这样做的好处是,在训练模型时就比较方便从数据库中批量取出t到t+n+1时刻的数据。
[0090]
当前时刻的r
t
为数据包从源路由器传输到目标路由器后网络的平均吞吐量,t+n+1时刻的r
t+n+1
为数据包从源路由器传输到目标路由器后网络的平均吞吐量。这时的目标函数就是使使q(s
t
,a
t
)接近当前时刻的r
t
到t+n+1时刻的r
t+n+1
加上t+n+1时刻的是target网络,初始值为q。训练时,需要固定的参数来更新q的参数。
[0091]
强化学习的reward是算法里重要的一项指标,选择一个合适的reward可以让模型尽快收敛。实施例1的方法中,采用网络中所有路由器的平均吞吐量作为回报,即数据包从当前路由器传输到下一个路由器后所有路由器的吞吐量的平均值作为当前的reward。当数据包再按照新的流量分割从当前路由器传输到下一个路由器后,所有路由器的平均吞吐量作为下一状态的回报。因为,强化学习是选择一个action后使未来的长期收益最大,所以reward是未来t+n+1的所有平均吞吐量之和。
[0092]
进一步的,为了更精确的预测action对未来收益的影响,还可以增加折扣因子γ,代表当前的action对未来收益的影响程度,当前的动作对离当前时间点越远的节点影响越小。γ可以根据实际情况取值,一般为(0,1)。
[0093]rt
=average(throughput_r1+throughput_r2+throughput_r3+
……
+throughput_rn)
[0094][0095]
throughput_rn:代表第n个路由器的吞吐量,单位可以使用mbps。
[0096]rt
:代表系统当前时间周期一条路径上所有路由器的平均吞吐量。
[0097]rt
:代表系统的长期期望收益,即这次选择对未来的影响,即整体的reward,为所有路由器上t+n+1周期内的平均吞吐量加权求和。
[0098]
γ:为折扣因子。
[0099]
通过上述公式,可以完成对reward的计算,获取到当前流量分割状态下的收益值用于进行评估。
[0100]
actor-critic算法的智能体actor及q-function均是神经网络模型。具体实施中
可以采用卷积神经网络或其他可用的神经网络。如图8所示,智能体π与环境互动从而学习知识,q-function负责根据π学习到的结果进行打分,进而学习到更好的π

,再将π

赋值给π,如此不断迭代学习,直至收敛。在训练时先估计q的参数,再固定住q来更新π的参数。使用梯度上升算法来更新π,即如图9所示,智能体actor与q-function均是神经网络。actor和q是一个整体的网络。actor的输出为动作集合中的值,即权重向量。q的输出是一个标量,代表分数。在计算action的时候,采用噪声参数的方法。即,使用q网络参数加上噪声的来生成action。此时学到的action可以使最大化。
[0101]
以下提供一组可用的模型训练方式及参数,在实际使用中,可以根据需要对步骤和参数进行调整。
[0102]
模型的超参数配置如下:学习率为0.001;batch size为32;优化器为adam;卷积核大小为3*3。
[0103]
训练方式如下:
[0104]
(1)初始化q-function q和target q-function令
[0105]
初始化actorπ和target actor令
[0106]
(2)在每个episode中,对于每一个时间步骤t:
[0107]
基于actorπ,根据当前的状态s
t
做出动作a
t
,即a
t
=π(s
t
)。
[0108]
获得reward r
t
并进入新的状态s
t+1

[0109]
存储(s
t
,a
t
,r
t
,s
t+1
)到内存中。
[0110]
从内存中批量取出(s
t
,a
t
,r
t
,

,s
t+n
,a
t+n
,r
t+n
,s
t+n+1
)多个样本数据。
[0111]

[0112]
更新q的参数,使q(s
t
,π(s
t
))接近y。
[0113]
更新π的参数,最大化q(s
t
,π(s
t
)),
[0114]
每进行c个时间步骤后,
[0115]
通过上述方式,可以完成对深度强化学习模型的训练,使其能够根据输入进行流量分割。
[0116]
通过上述神经网络模型的选择和参数设置,可以获取到实施例1中需要使用的强化学习模型,建立和训练基于深度强化学习的流量分割模型。
[0117]
实施例3:
[0118]
在上述实施例1至实施例2提供的基于深度强化学习的最优流量分割的方法的基础上,本发明还提供了一种可用于实现上述方法的基于深度强化学习的最优流量分割的系统。
[0119]
如图10所示,是本发明实施例的系统架构示意图,其中包括一个或多个控制器(controller),以及所有需要进行路径规划的路由器。图10的网络拓扑为有权图,每个圆圈表示一个路由器节点,节点间连线表示可到达的网络链路,每个连线的权重表示该相邻路由器所分割流量的权重向量,权重会随着最优流量分割的重新规划而动态变化。
[0120]
控制器内可以包含保存训练数据集的数据存储单元和进行深度强化学习的ai算
法单元。控制器和路由器之间通过消息交互,从而获取网络的路由器状态矩阵并存储在数据存储单元的数据库(database)中。离线训练时,ai算法从数据库中获取训练数据并更新模型的参数。在线应用时,ai算法根据网络中路由器状态矩阵实时的计算最优流量分割,并由控制器通过分段路由(segment routing,简写为sr)将最优流量分割下发给路由器。
[0121]
根据实施例1提供的方法,流量分割的整个时序包含两重迭代,第一个是数据采集迭代,由控制器和路由器交互完成,采集到的数据保存在控制器的数据存储单元中。第二个是ai算法迭代,由控制器中的ai算法单元完成。其中,ai算法迭代又包含gan的训练迭代、深度强化学习迭代、在线应用迭代。
[0122]
如图11所示的时序图,控制器和路由器可以通过以下动作完成数据采集和流量分割。
[0123]
控制器获取所有路由器的状态,将当前所有路由器的状态矩阵输入训练后的强化学习模型中,根据权利要求1-8中任一项的方法获取输出的权重向量,并发送至路由器;
[0124]
路由器根据接收到的权重向量进行流量分割,将数据包发送到下一节点,并将自身状态发送至控制器;
[0125]
控制器使用路由器的最新状态生成下一时刻路由器状态矩阵,将包含下一时刻状态矩阵的状态四元组加入训练数据集中,并使用更新后的训练数据集对强化学习模型进行训练。
[0126]
具体的,可以使用如图12所示的具体步骤完成动态实时最优流量分割。
[0127]
步骤301:控制器向路由器发送router_vector request消息。
[0128]
步骤302:路由器通过router_vector response消息把自己的状态向量发给控制器。
[0129]
步骤303:控制器计算路由器状态矩阵。
[0130]
步骤304:控制器将路由器状态矩阵通过get_weight_vector request消息发送给实时学习系统(real time learning system,简写为rtls)。
[0131]
步骤305:实时学习系统调用之前训练好的ai算法输出流量分割结果,并通过get_weight_vector response消息将最优分割比例发送给控制器。
[0132]
步骤306:控制器通过sr消息把权重向量发送给路由器。
[0133]
步骤307:路由器按照此流量分割比例传输数据包到下一个节点,并告知控制器。
[0134]
步骤308:控制器向路由器发送router_throughput request消息。
[0135]
步骤309:路由器发送自身的吞吐量给控制器。
[0136]
步骤310:控制器向路由器发送router_vector request消息。
[0137]
步骤311:路由器发送下一时刻的状态向量给控制器。
[0138]
步骤312:控制器计算全网的平均吞吐量。
[0139]
步骤313:控制器计算下一时刻的路由器状态矩阵。并将此次的状态四元组[路由器状态矩阵,权重向量,平均吞吐量,下一时刻路由器状态矩阵]存储到数据存储单元的数据库中,以增加数据库中的训练数据集。
[0140]
通过步骤301-步骤313完成一次路径规划后,返回步骤301进行循环,不断迭代产生训练数据,将训练数据反传给数据库进行存储,并使用存储的数据不断迭代训练模型,不断迭代在线应用,直至整个系统稳定。
[0141]
在具体实施过程中,需要控制器和路由器进行指令消息交互,以完成数据采集迭代。
[0142]
控制器向所有路由器发送路由器状态向量采集指令,每个路由器将自身当前的状态向量发送至控制器,控制器根据所有路由器的状态向量生成全网路由器的状态矩阵;
[0143]
控制器向所有路由器发送链路状态采集指令,每个路由器将自身当前的链路状态发送至控制器,控制器根据全网路由器的链路状态确定强化学习模型的action set;
[0144]
当路由器按照权重向量进行流量分割,传输数据包到下一节点后上报控制器,控制器向上报的路由器发出吞吐量提交指令和路由器状态向量采集指令,上报的路由器将自身当前吞吐量和状态矩阵发送至控制器,控制器生成下一时刻路由器状态矩阵。
[0145]
具体的,可以使用如图13所示的具体步骤完成数据采集迭代。
[0146]
步骤401:控制器向路由器发送router_vector request消息。
[0147]
步骤402:路由器通过router_vector response消息把自己的状态向量发给控制器。
[0148]
步骤403:控制器计算路由器状态矩阵。
[0149]
步骤404:控制器向路由器发送link state request消息,路由器通过link state response消息把链路状态信息发送给控制器。
[0150]
步骤405:控制器根据路由器的链路状态信息确定action set,并随机选取权重向量。
[0151]
步骤406:控制器通过sr消息把权重向量发送给路由器。
[0152]
步骤407:路由器按照此权重向量的分割比例传输数据包到下一个节点并告知控制器。
[0153]
步骤408:控制器向路由器发送router_throughput request消息。
[0154]
步骤409:路由器发送吞吐量给控制器。
[0155]
步骤410:控制器向路由器发送router_vector request消息。
[0156]
步骤411:路由器发送下一时刻的状态向量给控制器,用于获取当前时刻路由器的吞吐量和下一时刻路由器状态向量。
[0157]
步骤412:控制器计算网络的平均吞吐量作为reward。
[0158]
步骤413:控制器计算下一时刻的路由器状态矩阵。
[0159]
步骤414:控制器将状态四元组[路由器状态矩阵,权重向量,平均吞吐量,下一时刻路由器状态矩阵]存储到控制器数据存储单元的数据库中。
[0160]
通过步骤401-步骤414完成一次数据采集后,再次回到步骤401,如此循环迭代,控制器不断将采集的数据存储到数据库中,对训练数据集进行迭代。
[0161]
通过上述系统,以及系统中控制器和路由器各自的动作和交互,能够完成实施例1中提供的基于深度强化学习的最优流量分割的方法,实时提供符合当前网络状态的最优流量分割。
[0162]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1