演化强化学习:Wuji: Automatic Online Combat Game Testing Using Evolutionary Deep Reinforcement Learning

0 摘要

这篇文章的摘要没有提到很多感兴趣的东西,一句话概括就是 Wuji模型可以使用深度强化学习去进行游戏测试,是一个多任务智能体,不仅要通关游戏,还要尽可能的去探索游戏,找到游戏中的bug 。

1 Introduce

在这一部分,作者介绍了一些传统游戏测试的方式,还介绍了一些深度强化学习在游戏领域的例子比如Alpha go,但是这些模型是以赢得游戏为目的,而不是去尽可能的探索游戏,找到bug。所以作者设计了Wuji模型,通过两个策略去指导智能体学习,分别是 任务完成策略和任务探索策略。
Wuji模型结合了 进化策略优化、深度强化学习(DRL)、多目标优化算法(MOO)进行训练,在这个过程中,进化策略优化和多目标优化算法会指导智能体进行探索,深度强化学习则指导智能体赢得游戏。
具体来说,在每次演化迭代中,总体首先执行交叉和变异,考虑两个目标(即探索状态和完成任务)。然后,种群中的每个策略将通过 DRL 单独训练,以增强完成任务的能力。接下来,将MOO与非主导排序一起用于选择一组更好的策略作为下一个进化的种子种群。通过迭代地优化人群,可以探索和测试更多游戏状态。

如下图所示,对于这个吃金币的游戏,使用DRL训练的智能体往往会选择最短路径(虚线箭头部分)并不能很好的去探索整个地图,也就是红色的点或者黄色的点很难被探索到,假设这些点都是bug的话,那么使用深度强化学习训练的智能体,在找bug这个方面是有所欠缺的。
演化强化学习:Wuji: Automatic Online Combat Game Testing Using Evolutionary Deep Reinforcement Learning_第1张图片

5 Automate Game Testing

(1)算法主要流程

在原文中DRL模型选择了A2C网络,种群总数设置为30,交叉率100%,变异率1%
		1、首先随机初始化策略P(DNN网络参数初始化)
		2、将初始化的策略P 进行 交叉变异 通过对适应度进行打分选出 更为优秀的后代P`  (涉及4个算法下面会提到)
		3、P`送入深度强化学习模型(A2C)中进行训练,经过优化可以得到 另一组后代 Q
		4、将P`∪Q进行策略选择,得到最终的后代P,并进行迭代。

(2)详细解释

得分函数

在上述过程中EMOO用于改进多样状态探索,而DRL有助于提高完成游戏任务的能力。
我们对两个任务分别进行打分
对于探索任务: E S G Π = 1 m ∑ i = 1 m ( s i z e ( ∣ ∣ G ( A i ) ∣ ∣ S ) ) ES^Π_G=\frac{1}{m}\sum_{i=1}^m(size(||G(A_i)||_S)) ESGΠ=m1i=1m(size(∣∣G(Ai)S))
其中G(A)s表示当前游戏时刻的状态

简单说就是,玩了m次游戏,平均每次游戏出现多少个状态。
比如上图那个小人吃金币的游戏,如果小人一直在绕圈子,那么每次的画面就会变多
也就是状态变多了。那一直绕圈子可以理解为小人一直在探索bug的过程。

对于通关任务:
R S G Π = 1 m ∑ i = 1 m ( R W ( G , A i ) ) RS^Π_G=\frac{1}{m}\sum_{i=1}^m(RW(G,A_i)) RSGΠ=m1i=1m(RW(G,Ai)) 其中: R W ( G , A i ) = ∑ t ∈ 1... n γ t − 1 r t RW(G,A_i)=\sum_{t∈1...n}\gamma^{t-1}r_t RW(G,Ai)=t1...nγt1rt也就是折扣回报

主要算法

交叉编译算法:

演化强化学习:Wuji: Automatic Online Combat Game Testing Using Evolutionary Deep Reinforcement Learning_第2张图片

2-9行 从策略P中随机选择两个策略Π,将更好策略保留下来P1,用同样的方法选择出P2
11行 让P1 和 P2 进行交叉得到 P3
12行 策略P3 进行变异
13行 将策略P3 放入更优秀的子代 P`中
## 直到集合P收集完足够的策略(种群大小) 结束循环

选择算法:

粗略表述:
演化强化学习:Wuji: Automatic Online Combat Game Testing Using Evolutionary Deep Reinforcement Learning_第3张图片
根据上图我们可以看到处在越外圈,那么这个策略应该是越好,横轴表示赢得游戏的策略的表现得分,纵轴表示探索表现得分,我们进行选择时,优先选择外圈的F1,F2… 如果此时的人口总数容纳不下,则对这个圆弧上的点进行筛选。筛选原则: 先把最能赢得游戏的点和最能探索的点收入,然后再把与其他点最不同的点收入。
然后这个边界我们叫做帕利托边界,也就是这个圆弧。

(1)确定帕利托边界
演化强化学习:Wuji: Automatic Online Combat Game Testing Using Evolutionary Deep Reinforcement Learning_第4张图片

2行 遍历所有的策略集合P
3行 选择P中的策略P1,P中的策略都比P1,加入集合F  (这里的P1其实不只是一个策略)
4行 把F加入到P`
5行 从P中把F删掉
直到P中没有其他的元素,循环结束

(2)选择新一代个体算法
演化强化学习:Wuji: Automatic Online Combat Game Testing Using Evolutionary Deep Reinforcement Learning_第5张图片

2行 把所有的策略,进行帕利托边界的确定(就是上面那个算法)
3行 遍历所有的帕利托边界
4行 如果新选择个体的数量 + 帕利托边界里的个体数量 没有 超过 最大值的话
5行		把帕利托边界全部加入新个体
6行	如果不是的话
7行	使用选择算法进行筛选
9行 最大值达到之后跳出循环,也就是选择好了新个体们P`

(3)选择帕利托边界中个体算法
演化强化学习:Wuji: Automatic Online Combat Game Testing Using Evolutionary Deep Reinforcement Learning_第6张图片

1行 将每个策略的初始差异值设为0   因为后面进行策略选择是看他和相邻策略的差异来选择
2行 所有策略的探索得分进行拍戏
3行 所有策略的赢得游戏得分进行排序
4-5 将探索和赢得游戏的两个策略设置为差异最大 ,因为首先优先选择这两个策略,之前提到过
7-8 找到对应同一个策略的在不同组的得分的索引值
9行 计算这个策略和周围两个策略的差异值,分别是在 探索组和赢得游戏组 进行计算并相加
10 基于这种计算方式下的所有排序返回。

你可能感兴趣的:(人工智能,神经网络,算法)