3.5 强化学习训练赛车AI
强化学习方法基于环境的反馈来决策行动,通过训练一个模型来得到最大化的预期利益。下面以训练赛车AI为例,介绍如何利用强化学习方法,让赛车AI在赛道中不断尝试各种操作逐步提升能力。
3.5.1 强化学习的介绍及应用场景
强化学习[4]是让AI根据环境的反馈自主学习提高的方法,与监督学习基于样本找规律的方法不同。强化学习广泛应用在围棋、游戏、机器人等领域。2016年,战胜顶尖职业棋手李世石的围棋AI Alpha Go就是利用强化学习实现的。强化学习的思路是让AI不断地进行尝试,对行为结果给予奖惩反馈,AI根据反馈进行优化。使用强化学习,需要从待解决的问题中提取出状态(State)、动作(Action)和动作回报(Reward)。
● 状态:当前要解决问题的状态。例如,围棋棋盘的盘面状态,即黑白棋子的分布情况。
● 动作:当前状态下可以做的行为。例如,在下围棋过程中,当前能下的某一步棋子。
● 动作回报:在某个状态下做某个行为得到的回报。例如,在下围棋时下了这步棋后赢了比赛,则Reward=100;输了比赛,则Reward=-100。
图3.17所示为强化学习原理。首先初始化AI,AI从环境中获得初始状态S0,并根据S0做出动作A0。动作A0会导致环境状态的变更;然后根据状态变更的好坏给出动作回报R0;最后AI根据{S0,A0,R0}调整参数。环境状态变更后,环境变成新的状态S1,根据新的状态又可以得到A1和R1,如此循环下去。以围棋AI[5]Alpha Go为例,Alpha Go就是用深度神经网络模拟的策略函数,输入棋盘布局,输出下一步落子位置的。强化学习的训练过程就是,获得当前棋盘信息,AI计算出下一步落子位置,如果这步赢了就获得一个正的Reward,输了就获得一个负的Reward;如果还不确定输赢,则根据局势给个评分Reward。因为刚刚那步棋,盘面已经有了变化,于是得到新的状态,根据新的状态计算新的动作,得到新的Reward,如此循环下去。
图3.17 强化学习原理
3.5.2 强化学习实现赛车AI
腾讯互动娱乐事业群游戏AI研究中心与《QQ飞车手游》项目组合作研发的深度强化学习赛车AI,根据竞速类游戏的特点进行MDP建模,采用了深度强化学习技术进行训练,得到的赛车AI在某些赛道可以达到玩家Top 1%(车神)水平。使用强化学习实现赛车AI,首先需要对游戏进行MDP建模,即设计游戏的状态(State)、动作(Action)、动作回报(Reward),如下。
● 状态:能表示当前游戏状态的信息,可以是游戏画面,或者是赛道信息、速度、角度、氮气等。
● 动作:游戏的控制行为,可以直接使用能输入的按键,如左转、右转、漂移等。
● 动作回报:控制的好坏,如正反馈加分,碰撞或逆行等负反馈扣分。
最终希望得到一个AI或策略函数(Policy),输入状态,输出动作。如图3.18所示,策略函数可以通过深度神经网络进行模拟。
图3.18 策略函数
如图3.19所示,强化学习训练过程就是初始化策略函数(Policy),在游戏起步时得到初始状态S0,策略函数根据S0计算出动作A0,用A0控制赛车。游戏更新一帧,则根据这一帧赛车的行驶情况计算动作回报R0。因为游戏更新,游戏状态变成新的状态S1,利用S1计算出A1,运行游戏得到R1。如此,可以得到游戏运行过程中的大量样本数据{S0,A0,R0}、{S1,A1,R1}……。一边运行得到新样本数据,一边利用这些数据优化更新策略函数,从而得到更好的策略效果。
图3.19 强化学习训练过程
3.5.3 强化学习方案简要分析
强化学习过程看起来简单,但是实际落地在项目时,会有很多需要处理的问题。例如,一个动作的价值需要一段时间才能体现出来,Reward只是当前动作结束后的反馈结果,不能代表动作的长远价值,那么动作的长远价值如何体现?这里面就涉及Bellman方程和Reward回传的问题。因为赛车游戏只看完成赛道的时间,不关心中间过程,只有冲线后才能得到Reward,所以Reward回传的路径很长,需要大量的训练时间,才能回传到初始状态。此外,AI只追求最终结果,不关心具体操作情况,所以最终训练出来的AI可能操作频率非常高,超出人类操作的极限。还有可能出现一些操作或失误不像人类的情况。这些问题都需要花费时间进行优化,游戏才能达到较好的上线效果。虽然强化学习技术的挑战较大,但是它可以突破传统游戏AI方法的限制,探索出超越人类顶尖玩家的AI,同时发掘更多新奇的玩法体系。通过大量的探索训练,我们可以发现游戏漏洞或平衡性问题,可以辅助验证新赛车、新角色的数值合理性。