详解DROO论文中的order-preserving quantization method(保序量化方法)

本文介绍了一种利用深度强化学习解决无线充电移动边缘计算网络中任务卸载决策和资源分配的方法。关键部分是保序量化技术,它能从深度神经网络生成的松弛卸载动作中生成多种有序卸载决策,以优化学习过程。作者还对比了保序量化与KNN算法在强化学习中的应用效果。
摘要由CSDN通过智能技术生成

一、论文概述

1.原文GitHub链接

Deep Reinforcement Learning for Online Computation Offloading in Wireless Powered Mobile-Edge Computing Networks

2.原文大意

论文作者提出了一种深度强化学习方法解决了边缘计算中的任务卸载决策和资源分配问题。
整体分为两大部分:
(1)卸载动作的生成:例如有3个设备,则卸载策略可表示为[1,0,1](均为二进制数据,即0或1),即第一台设备和第三台设备将计算任务卸载到边缘服务器执行,第二台设备自身执行计算任务;
(2)卸载策略的更新:根据经验回放缓冲池中的数据更新网络参数,从而优化卸载决策(细节不再赘述,不是本文重点)。

二、保序量化方法

1.概述

此方法应用在上述提到的卸载动作生成部分。
上述提到的第一部分——卸载动作生成的步骤是:首先使用DNN生成一个一维向量,一维向量的每个值范围在0~1之间,原文称其为relaxed offloading action,注意此时就要用到保序量化方法了,由于本文采用的是深度强化学习的思想,故而我们需要自己探索出几种可能的卸载决策作为强化学习中的action,由于DNN只能生成一个action,所以接下来我们就要根据刚刚DNN生成的relaxed offloading action再生成几种卸载决策作为强化学习中的action来训练。
在上述根据relaxed offloading action生成k种卸载决策时就要用到本文的重点——保序量化方法。

2.计算过程

我们假设relaxed offloading action[0.2,0.4,0.7,0.9],将要生成的卸载决策个数K = 4
根据下列步骤进行生成:
(1)第一个卸载决策x1 根据上述的relaxed offloading action直接计算,当对应位置的值大于0.5则为1,反之则为0。那么第一个卸载决策x1[0,0,1,1]
(2)剩余的三个卸载决策则稍微复杂一些,我们首先要计算relaxed offloading action其中值与0.5的差值的绝对值,然后将其进行由小到大排序,得到[0.4,0.7,0.2,0.9]
(3)接下来的三个卸载决策则根据(2)中计算的结果计算。具体的:第二个卸载卸载决策则依赖[0.4,0.7,0.2,0.9]中的第一个数,第三个卸载决策依赖于第二个数,以此类推。则最多可以生成N个卸载决策,但到底具体怎么算出来的呢,有下面四种情况:

简单来说,就是relaxed offloading action对应位置上的值和(2)中算出来的一维向量中的某一个数进行比较(生成第k个卸载决策的时候就和第k - 1个数进行比较),最后可得剩余三个卸载决策为:x2 = [0, 1, 1, 1], x3 = [0, 0, 0, 1], x4 = [1, 1, 1, 1]。(原文在此部分的公式详解在4.2后半部分中)

三、总结

保序量化方法和KNN算法类似,都是根据一条数据生成k个相似数据,但KNN是生成给定数据附近的k组数据,保序量化方法是生成相互之间具有更大距离的k组数据,这样更有利于强化学习算法的实现,论文原作者也对这两种方法进行了对比试验,结果验证了这一猜想。

参考文献

[1] L. Huang, S. Bi and Y. -J. A. Zhang, “Deep Reinforcement Learning for Online Computation Offloading in Wireless Powered Mobile-Edge Computing Networks,” in IEEE Transactions on Mobile Computing, vol. 19, no. 11, pp. 2581-2593, 1 Nov. 2020, doi: 10.1109/TMC.2019.2928811.
keywords: {Wireless communication;Task analysis;Wireless sensor networks;Resource management;Fading channels;Computational complexity;Reinforcement learning;Mobile-edge computing;wireless power transfer;reinforcement learning;resource allocation},

  • 38
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
好的,以下是实现上述功能的 SQL 代码: 1. 创建一个存储过程 proc_student,用来查看 student 表的所有信息。 ```sql CREATE PROCEDURE proc_student AS BEGIN SELECT * FROM student; END; ``` 2. 执行存储过程 Droo_student.* ```sql EXECUTE Droo_student.*; ``` 3. 创建一个带参数的存储过程 proc_select,参数为学生的学号,通过该存储过程可查看任何指定学生的信息。 ```sql CREATE PROCEDURE proc_select @student_id INT AS BEGIN SELECT * FROM student WHERE student_id = @student_id; END; ``` 4. 执行存储过程 proc_select ```sql EXECUTE proc_select @student_id = 1001; ``` 5. 删除所有新建的存储过程。 ```sql DROP PROCEDURE proc_student; DROP PROCEDURE proc_select; ``` 6. 了解触发器的基本概念和类型,了解创建触发器的 SQL 语句的基本语法,以及查看、修改和删除触发器的 SQL 命令的用法。 触发器是一种特殊的存储过程,它可以在数据库表的数据发生指定事件时自动执行。触发器可以用来实现各种自动化的数据库操作,例如数据校验、记录数据变更等。 触发器分为两种类型:行触发器和语句触发器。行触发器是对每一行数据的操作进行触发,而语句触发器是对整个语句的操作进行触发。 创建触发器的 SQL 语句的基本语法如下: ```sql CREATE TRIGGER trigger_name ON table_name [AFTER/INSTEAD OF] {INSERT, UPDATE, DELETE} AS BEGIN -- 触发器执行的操作 END; ``` 查看触发器的 SQL 命令如下: ```sql SELECT * FROM sys.triggers; ``` 修改触发器的 SQL 命令如下: ```sql ALTER TRIGGER trigger_name ON table_name [AFTER/INSTEAD OF] {INSERT, UPDATE, DELETE} AS BEGIN -- 修改后的触发器执行的操作 END; ``` 删除触发器的 SQL 命令如下: ```sql DROP TRIGGER trigger_name; ```
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值