首页 > 编程语言 >异步游戏环境下该如何使用强化学习算法进行训练

异步游戏环境下该如何使用强化学习算法进行训练

时间:2024-10-27 21:57:59浏览次数:4  
标签:异步 游戏 下该 agent 算法 line 强化

在使用强化学习算法进行训练时默认的都是使用同步的游戏环境,即agent手段environment的一个observation后environment是不继续向下执行的而是等待agent返回执行动作后再继续执行的,这种agent和environment在运行时保持着同步串行方式的运行模式则是同步游戏环境,而如果environment发送给agent当前observation后不进入阻塞状态等待agent返回动作而是继续向下执行的方式则是异步游戏环境模式。


本文讨论的就是异步游戏环境下该如何使用强化学习算法进行训练。


异步游戏环境对强化学习算法的训练有着较高的难度,因为游戏环境不等待agent的动作返回而agent在进行action计算的时候会有一定的时间延迟,这样必然导致agent难以获得连续时间下的observation,由此必然导致强化学习算法收敛上的困难,这种困难程度和agent计算action时所造成的与环境交互的时延长短正相关;因为我们知道在gym环境下会在游戏环境过于确定的情况下通过加入frame skip和sticky action的方式增加随机性,由此可见agent和environment交互时适当的随机性是有利于强化学习算法训练的,但是如果这个时延过长造成过大随机性,那么必然影响算法训练的性能。

对于游戏环境异步所导致的训练困境更像是一种刻舟求剑的现象。

不过由于很多游戏环境本身就存在着一定的时序连贯性,如赛车游戏等等,同时由于强化学习训练本身也是可以接受一定的随机性的,因此只要这种情况下agent返回action的时延不是过大那么对算法训练造成的影响就不会很大;如果要减少这种时延,或许提高agent的action计算速度是最为直接的方法,但是这个方法往往是最难实现的,即使尽量减少这个过程中由于计算数据迁移所形成的耗时也难以明显改善这个问题。

对于on-line的强化学习算法,不论是on-policy的还是off-policy的强化学习算法,这种异步的游戏环境都对算法的训练造成了极大的挑战。为此,off-line的强化学习算法或许是解决该问题的一个有前途的选项,我们可以使用一些简单模型(比如遗传算法的neat算法或3层MLP神经网络)来收集环境数据,或者结合model-based的RL算法,或许也是可以有更好的表现的,总之,该种问题对于on-line的强化学习是难以克服的调整,我们在难以直接减少agent返回action时的时延,那么我们可以适当的考虑使用off-line的强化学习算法。当然,如果这种异步游戏环境造成的时延是算法可用接受的,那么对于on-line的on-policy的A2C算法还是off-policy的DQN算法,其实也都是可以解决的。


本文对于异步游戏环境问题的解决提出了一个设想,那就是使用off-line的强化学习算法来进行解决,此时进行数据采样的方法可以使用简单的模型进行(比如3层MLP的AC算法),同时这个过程中也可以对进行数据采样的on-line算法进行适当的训练,以此提高数据收集的质量,在环境数据收集好后就可以使用on-line的算法进行解决了,同时这个过程也是可以循环迭代的,也就是说这个on-line转off-line的过程也可以是不断循环的,比如在每次循环结束时都使用off-line获得的模型来反向优化on-line模型,以此进一步提高算法训练性能。



强化学习算法library库:(集成库)

https://github.com/Denys88/rl_games

https://github.com/Domattee/gymTouch

个人github博客地址:
https://devilmaycry812839668.github.io/

标签:异步,游戏,下该,agent,算法,line,强化
From: https://www.cnblogs.com/xyz/p/18509096

相关文章

  • 低功耗4G模组:RSA算法示例
    ​今天我们学习合宙低功耗4G模组Air780EP_LuatOS_rsa示例,文末【阅读原文】获取最新资料。一、简介RSA算法的安全性基于:将两个大质数相乘很容易,但是想要将其乘积分解成原始的质数因子却非常困难。关联文档和使用工具:LuatOS固件获取rsa-demoLuatools下载调试工具......
  • RNC 中选择传感器算法的一些思路
    通过寻优算法,来自动计算最佳的传感器位置。这里用遗传算法示例:重点有两个,一个是约束,另一个是适应度函数输入设定输入x是一个0,1向量,0代表没有选取此处的通道,1代表选用了此处的通道注意x应该是整数,所以在函数中需要设置IntCon的数值,代表此处的索引需要是int类型%指......
  • 100种算法【Python版】第14篇——Pollard‘s Rho 质因数分解算法
    本文目录1基本原理2算法步骤3数学示例4python代码1基本原理Pollard’sRho算法是由约翰·波拉德(JohnPollard)于1975年提出的一种用于整数因数分解的概率算法。它以高效性和实现简洁著称。核心原理伪随机序列生成:利用一个简单的迭代函数生成一个伪随机......
  • 【从零开始的LeetCode-算法】713. 乘积小于 K 的子数组
    给你一个整数数组nums和一个整数k,请你返回子数组内所有元素的乘积严格小于k的连续子数组的数目。示例1:输入:nums=[10,5,2,6],k=100输出:8解释:8个乘积小于100的子数组分别为:[10]、[5]、[2]、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。需要注意的是[10,5,2]并不......
  • 【从零开始的LeetCode-算法】649. Dota2 参议院
    Dota2的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇)Dota2参议院由来自两派的参议员组成。现在参议院希望对一个Dota2游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项:禁止一名参议员的权利:参议员可以让另一位......
  • 有哪些学习算法的网站推荐
    标题:有哪些学习算法的网站推荐摘要:探索算法学习的途径,1、Coursera提供多样化的计算机科学课程;2、LeetCode面向编程挑战;3、KhanAcademy免费资源丰富;4、edX多校联盟课程;5、Codecademy互动式学习。特别是Coursera,作为学术与实践并重的平台,集合了斯坦福大学、密歇根大学等名校的算......
  • 经典算法思想--并查集
    前言 (最近在学习Java,所有函数都是用Java语言来书写的)前言部分是一些前提储备知识在并查集(Union-Find)数据结构中,rank(中文称为“秩”)是用来表示树的高度或深度的一种辅助信息。它的主要作用是优化合并操作,以保持并查集的结构尽可能扁平,从而提高查询效率。秩的具体定义......
  • 机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
    1.基础算法常见面试篇1.1过拟合和欠拟合常见面试篇一、过拟合和欠拟合是什么?二、过拟合/高方差(overfiting/highvariance)篇2.1过拟合是什么及检验方法?2.2导致过拟合的原因是什么?2.3过拟合的解决方法是什么?三、欠拟合/高偏差(underfiting/highbias)篇3.......
  • 算法汇总整理篇——回溯与图论的千丝万缕及问题的抽象思考
    回溯算法(重中之重)回溯法解决的问题都可以抽象为树形结构,集合的大小就构成了树的广度,递归的深度就构成了树的深度。(回溯的核心:分清楚什么数据作为广度,什么数据作为深度!!!!!)voidbacktracking(参数){if(终止条件){存放结果;return;}for......
  • 代码随想录算法训练营day27| 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃
    学习资料:https://programmercarl.com/0122.买卖股票的最佳时机II.html#算法公开课贪心PART2学习记录:122.买卖股票的最佳时间2(求最大利润,贪心:把所有正数相加;后一天与当天的股票价格差值,若为正就加入利润,若为负,则不加)点击查看代码classSolution:defmaxProfit(self,pr......