首页 > 其他分享 >强化学习-DQN改进及一些强化学习路由优化论文笔记

强化学习-DQN改进及一些强化学习路由优化论文笔记

时间:2024-04-11 13:58:52浏览次数:29  
标签:bisect transition 网络 学习 DQN DRL 链路 强化 节点

RL

  • 通用超参数

DQN改进

Duel Structure

在这里插入图片描述

VS→该state在当前policy下的value

QSA→该state进行这个action在当前policy下的value

advantage = VS - QSA

裁剪区域的确定?

34194按行输出min,33193min为90*90

Replay buffer

background knowledge

[bisect Module]
python自带的二分查找的包

重要函数

基本使用

bisect.bisect_left(2)//返回2左端index
bisect.bisect()//与bisect_right()相同
bisect.bisect_right()//返回右端index

bisect with list

在一个increasing array插入一个元素并仍保持有序

def list_insert(arr,num):
	ind = bisect.bisect_left(arr,num)
	arr.insert(ind,num)

a = [0,1,2,2,2,3,4]
list_insert(a,2.1)

[Sum Tree]
概念

Sum Tree 线段树,结构是二叉树,父节点是子节点的和,且只有度为0和2的情况。

可以认为叶结点表示一个相连的区间,每个叶节点的数值表示该区间长度,此时可以轻易找到任意值的对应区间的叶节点

Basic Replay Buffer

  • 记录新加入的transition→存储在list中
  • 忘记太久之前的transition→用deque数据自动遗忘,也可以覆盖list中已存在的transition
  • 从存储的记忆中抽样→用random.sample()抽样

Proportion-based Replay Buffer

Sum Tree用于记录和更新cumulative weight以进行快速采样,时间复杂度为O(logn)新功能:

  • 一个Sum Tree储存和更新每个transition的weight
  • 更新Sum Tree的方法

Rank-based Repley buffer

需要知道每个transition的td_error的rank1以调整weight,基于该rank需要计算和储存分割点,从而进行抽样,复杂度为o(n),新功能:

  • 1.对于所有transition TD_error及对应rank的存储
  • 2.更新rank的方法

由于训练过程中有大量TDerror变更,以及新加入的transition,快速更新rank需要一直维持记录一个排好序的所有TD-error的序列,这样才能在o(logn)的时间内确定rank,否则每个新样本加入时更新rank都需要O(n)的时间

快速抽样的方法是在有序TD-error的序列上抽样在对应到具体的transition,此处有俩种存储方式

  • 将transition与TD-error一起储存在tuple中
  • 将transition储存在list中,将其index和TD-error一起存储到tuple中

第一钟方式缺点:当我们删除transition时,会需要O(n)时间寻找应该删除的rank和TD-error。选择第二种存储方式,locate时间复杂度为o(1),具体如下

  • 与之前的方式类似,建立一个list存储transition
  • 建立另一个list存储transition对应rank
  • 建立第三个list储存TD-error,transition index的tuple

删改操作时间复杂度O(n)

  • gnn meets rl

    https://github.com/knowledgedefinednetworking/DRL-GNN/blob/master/DQN/README.md

  • sp

    OSPF:OSPF 即开路最短路径优先,依据该规则,网络会把数据流转发在长度最短的路径上,

    由于没有考虑链路的传输能力,个别链路容易陷入拥塞。

    MCFCSP:多物网络流流约束最短路径方案将链路的传输能力作为约束条件,在保证网络不出现

    拥塞的条件下传输数据流。

    KSP:k 路最短路径方案会在两节点对间选择前 k 条最短的路径作为路由路径对数据流完成转发操作。

    多路径路由(ECMP)**:**在多个传输路径上均匀地分配流量

  • rsir

    在这里插入图片描述

  • 牵引控制

    DRL算法分类:基于下一跳控制的 DRL 路由方案、基于逐个数据流路径调整的 DRL 路由方案和基于全网链路权重调整的路由方案

    通过分析网络拓扑特征,结合牵引控制理论,选取部分链路作为代表链路,DRL对代表链路生成控制信号,结合网络路由算法扩展到全网路由。

    优点:避免输出动作空间过大,解决DRL维度灾难问题,策略更加健壮

    牵引链路选取:由于牵引控制理论目前尚未对复杂网络的具体牵引控制元素选择做出选择,设计启发式算法选取牵引节点

    • 在线路由策略部署阶段主要分为 3 个环节:

      1. 网络信息收集

        OpenFlow端口数据量统计字段结合采集间隔,近似计算相应端口的数据吞吐量,形成牵引链路的流量视图,作为DRL 神经网络的输入参数

      2. 智能策略生成:每个输出层对应于一个牵引链路的权重

      3. 策略执行

        默认将所有链路权重设置为 1,用DRL输出更新相应链路权重,通过 Floyd-Warshall 算法计算路由。

    DRL算法: TD3

    state为网络中链路的吞吐量信息

    action对应于牵引链路的权重

    reward综合考虑路由策略在平均时延、负载均衡和抖动等

  • Scalable DRL

    中心性的概念类似于描述一个顶点与其他顶点的关系的图中的度的概念,该链路与其他链路共享更多的转发路径,即具有较高的中心性。

    在ScaleDRL中,我们根据每个链路的中心性来选择关键链路。根据所有链路的中心性值按降序排序,并从排序的链路列表中选择中间的k个链路作为关键链路。

    • DRL:ACKTR

      行为网络以网络状态作为输入,其输出作为动作a

      批评网络以网络状态和临时动作a作为输入,对临时策略生成评价值。奖励r用于更新批评者网络。

      状态:每个链路上的流量强度分布

      动作:a^|L|·d,表示关键链接的数量,其中|L|表示关键链接的数量,d表示每个流的候选路径数。

      奖励:使用平均端到端延迟作为评估TE策略的度量标准。

  • Scalable Routing

    优点:提高路由性能和对拓扑变化的弹性。

    ScaleDeep将网络的节点分为两类:驱动节点和跟随节点。驱动节点是可以模拟网络运行的关键节点,采用钉扎控制理论进行选择,其余节点为跟随节点。

    通过从驱动节点轮询网络信息,DRL代理可以有一个近似的网络全局视图。调整驱动节点的链路权值,以动态更新路由策略。

    驱动节点选择的启发式算法:以不同的选择概率分配不同程度的节点,然后根据选择概率选择驱动节点。根据节点的程度分配(分类?)不同概率的节点,然后根据其概率选择驱动节点。

    DRL:ddpg

    DRL框架使用了两种类型的神经网络:门控递归单元(GRU)和前馈神经网络。GRU是一种先进的递归神经网络(RNN),善于从输入数据中提取与时间相关的信息。

    状态:状态是网络状态信息表示的吞吐量矩阵大小t×n,其中t表示时间步长的长度,d表示流类型的数量,和n表示总数的交通强度

    奖励r:网络中所有流的平均流完成时间

  • 基于深度强化学习的软件定义网络 QoS 优化

    优点:保证了端到端传输时延和分组丢失率,而且提高了 22.7%的网络负载均衡程度,增加了 8.2%的网络吞吐率。

    解决:基于启发式算法的 QoS 优化方案因参数与网络场景不匹配出现性能下降的问题

    方案:首先将网络资源和状态信息统一到网络模型中,然后通过长短期记忆网络提升算法的流量感知能力,最后基于深度强化学习生成满足 QoS 目标的动态流量调度策略。

    状态:某一次网络测量时网络中的流请求信息和所有链路的时延和利用率信息

    动作:各节点对之间可用转发路径的分流比重

    奖赏:优化目标是最小化网络使用率U。r=-U。

    LSTM 网络负责对网络状态信息 s 进行预处理生成隐含状态 h,并将该隐含状态传输给 Actor 和 Critic 架构中的神经网络,提高神经网络的决策的效率和准确性;Actor 和 Critic 架构中的神经网络依据LSTM网络提供的网络状态数据生成动作,并更新内部网络参数。

标签:bisect,transition,网络,学习,DQN,DRL,链路,强化,节点
From: https://blog.csdn.net/comekeywords/article/details/137633651

相关文章

  • (数据科学学习手札159)使用ruff对Python代码进行自动美化
    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes1简介大家好我是费老师,在日常编写Python代码的过程中,由于个人经验及编程习惯上的差异,有些人写出的代码可读性很高,一眼看上去就非常整洁易懂,而有些人写出的代码则十分“潦草随意”,......
  • 文献学习-33-一个用于生成手术视频摘要的python库
    VideoSum:APythonLibraryforSurgicalVideoSummarizationAuthors: LuisC.Garcia-Peraza-Herrera,SebastienOurselin,andTomVercauterenSource: https://arxiv.org/pdf/2303.10173.pdf这篇文章主要关注的是如何通过视频摘要来简化和可视化手术视频,以便于数......
  • 《统计学习方法》第一章
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、统计学习分类1.基本分类1.1监督学习1.2无监督学习1.3强化学习1.4半监督学习和主动学习2.模型分类2.1概率模型与非概率模型2.2线性与非线性2.3参数化和非参数化模型3.算法分类4.技巧......
  • 从零开始学习C语言 第一篇如何学习C语言
    想必大家和我一样,都是在B站上大学,或者报一些网课,我自己学习下来发现“鹏哥C语言”(B站上搜鹏哥C语言)是一个很不错的网课,里面有专属于你的问答群,四五个老师服务你一个人,并且有问必答,除了编程方面的,学习、生活方面的问题都可以和他们沟通,他们会像长者一样毫无保留地为你传道授业解......
  • 机器学习—特征工程(三)
    什么是特征工程特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。意义︰会直接影响机器学习的效果特征工程的位置与数据处理的比较pandas:—个数据读取非常方便以及基本的处理格式的工具sklearn:对于特征的处理提供了强大的接......
  • 机器学习—无量纲化和降维(四)
    什么是特征预处理?通过一些转换函数将特征数据转换成更加适合算法模型的特征数据过程1包含内容数值型数据的无量纲化:归一化标准化2特征预处理APIsklearn.preprocessing为什么要进行归一化or标准化?特征的单位或者大小相差较大,或者某特征的方差相比其他的特征......
  • markdown学习(基础语法)
    Markdown学习标题三级标题四级标题字体字体斜体字体加粗字体斜体加粗划线字体引用一个向右箭头用于引用分割线三个-符号:三个*符号:图片超链接点击跳转到力扣列表abcabc表格右键插入即可代码javac++c#......
  • Markdown学习Day01
    MarkDown学习标题两个#号加空格加内容三级标题三个#号加空格加内容四级标题四个#号加空格加内容最多类推到六级标题字体HelloHello头尾双*加粗Hello头尾单*斜体Hello头尾三*斜体加粗Hello头尾双~删除线引用拥抱美好新生活引用=>符号加空格分割线三......
  • 学习Source Generators之打包成Nuget使用
    前面我们简单的实现了一个从swagger生成实体类的Generator,在实际使用中,通过nuget包引用使用会更方便,那么本篇文章将介绍如何将Generator打包成Nuget来使用。打包Nuget这里我们将GenerateClassFromSwagger.Analysis打包成Nuget进行使用。首先需要修改项目文件。修改项目文件在......
  • 深度学习-nlp-循环神经网络RNN--69
    目录1.概述2.RNN的模型参考:https://zhuanlan.zhihu.com/p/308449051.概述输出会反馈到输入的神经网络:循环神经网络(RecurrentNeuralNetworks,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域。在前面讲到的DNN和CNN中,训练样本的输入和输出......