AI自动化测试:技术原理、平台搭建与工程实践
上QQ阅读APP看书,第一时间看更新

4.2.2 逆强化学习

什么是逆强化学习?为了回答这个问题,我们首先回顾一下强化学习的重要知识。在强化学习中,首先要根据特定游戏设计奖励函数,比如在跑酷类游戏中,角色在每一局游戏跑的距离就可以看作游戏的奖励,强化学习算法会收集当前游戏的状态、角色移动的距离和执行的动作,根据新收集的数据更新模型参数,如果当前执行的动作获得正向奖励,则下次遇到同样游戏状况时,增加该动作的概率。这看上去很容易,但在实际操作中,设计奖励函数对研究者有一定难度,需要考虑游戏角色多种状态下应该给予多大的奖励,而强化学习训练出来的AI效果对奖励函数非常敏感,往往需要长时间的尝试才能设计出比较理想的奖励函数,且在复杂游戏中,很难设计高效的奖励函数。为了解决这个问题,研究者提出了逆强化学习算法,其能根据专家录制的样本推导潜在的奖励函数,避免人工设计,降低了研究者的使用门槛。

逆强化学习假设专家在执行特定任务时,其决策是接近最优的,所以我们需要找到一个奖励函数,使专家策略累积的奖励期望大于其余策略产生的奖励期望。确定奖励函数之后,再使用强化学习训练模型,即强化学习使用的奖励函数是根据专家示例推导学习得到的。

逆强化学习步骤如下:第一步,随机初始化模型参数;第二步,使用该模型与游戏环境进行交互,输入当前游戏状态,输出要执行的动作,将收集的样本与专家录制的样本进行对比,根据专家样本得到奖励期望最大的奖励函数;第三步,通过奖励函数进行强化学习,提升模型的游戏水平。如果AI策略和专家策略差异较小,则停止训练,否则回到第二步,继续学习奖励函数。可以看出逆强化学习需要不断迭代更新奖励函数,每更新一次奖励需要采用强化学习推导新的游戏策略,这也说明逆强化学习比一般的强化学习算法更耗时。

为了减少逆强化学习的训练时间,研究者提出了生成对抗模仿学习算法,其采用生成器和判别器的思路,要求生成器生成的游戏样本要尽可能接近专家录制的游戏样本,而判别器用于区分专家样本的精度。这样避免了逆强化学习中反复用强化学习训练模型,有助于模型的快速训练。

与行为克隆相比,逆强化学习由于与游戏环境交互,能扩充大量样本,从而提升了模型的策略,但正因为其必须与环境交互,所以训练时间远高于行为克隆所需时间。如果需要AI有很好的表现且对训练时长不太敏感,则可以尝试逆强化学习的方法。