3.4 监督学习训练赛车AI
监督学习是一种常用的机器学习方法,可以通过建立人工神经网络模拟出样本的规律。下面先介绍人工神经网络,再以训练赛车AI模型为例,介绍监督学习的基础知识及落地过程中可能面临的挑战。
3.4.1 人工神经网络
人工神经网络是深度学习的基础,启发于对人类中枢神经系统的观察,是由多个神经元连接在一起组成的网络结构。人工神经网络的神经元和生物上的神经元类似,有多个输入值,经过计算后得到一个输出值。图3.12所示为一个神经元,其输入由n+1个节点组成,每个节点的值分别是[1,x1,x2,…,xn]。神经元的每个输入节点都有一个权重参数。图3.12中神经元的权重参数分别是[b,w1,w2,…,wn]。
图3.12 神经元
输出值t的计算需要两步(激活函数使用sigmoid函数)。
(1)加权求和。z=1×b+x1×w1+x2×w2+…+xn×wn。
(2)激活函数。。
如图3.13所示,多个神经元连接在一起,可以组成一个人工神经网络。复杂的人工神经网络可以模拟出输入数据之间复杂的函数关系。
图3.13 人工神经网络
3.4.2 监督学习介绍及应用场景
监督学习是机器学习的一种,通过提供的数据样本建立一个模型,并用此模型推测新的实例[3]。监督学习广泛应用在文字识别、语音识别、图片识别等方面。以图片识别为例,我们希望机器识别一张图片(图中是猫还是狗)。如图3.14所示,可以把识别过程理解成实现一个函数,函数输入一张图片,输出0或1(假设0代表猫,1代表狗)。这是一个复杂的函数,很难通过数学公式或程序来实现,因此需要用人工神经网络来模拟这个函数。
图3.14 监督学习函数表示
人工神经网络的初始参数是随机的,一开始输出结果的准确率很低。监督学习的训练,需要大量根据猫狗类型分类好的图片作为样本,利用标注样本训练人工神经网络,优化人工神经网络的参数,逐步提高准确率。监督学习是构建AI比较常用的方法,很多游戏AI利用监督学习方法达到了高端人类玩家的水平。
3.4.3 监督学习实现赛车AI
如图3.15所示,在游戏中实现一个赛车AI,可以转换成实现一个函数,输入当前赛车和赛道的特征(Feature),输出在该状态下应该按下什么按键(Keys)。这个函数可以作为赛车AI的控制器。但是这个函数较为复杂,因此使用人工神经网络来模拟这个函数。如果有足够多的样本对这个函数进行训练,理论上就可以实现赛车的控制。
图3.15 监督学习赛车控制模型
● 输入特征Feature,应该提取当前赛车和赛道中,会影响AI决策的相关数据。这些数据越齐全,AI的泛化能力越强。在赛车游戏中,可以采集赛车速度、赛道宽度、赛车和赛道的各种角度等相关参数。复杂的模型可能需要输入图像,可以利用卷积神经网络提取图像的特征信息。
● 输出按键Keys,对应于游戏界面上各操作按钮的按下状态。开发者可以根据游戏的操控系统,给AI设计独立动作空间。
监督学习需要通过大量游戏单局数据,分析不同游戏场景下人类玩家的操作,用来训练模型。因此能否获取大量样本,是选择监督学习方案的关键。如图3.16所示,在赛车游戏中可以利用玩家提供的大量单局录像文件提取样本。利用录像文件中玩家赛车位置、速度等状态信息,结合赛道提取样本的输入特征,该状态下玩家的按键状态即样本的输出信息。
图3.16 数据收集流程
3.4.4 监督学习方案的简要分析
监督学习方案是让AI学习人类玩家的操作的,因此AI的能力上限理论上无法超越样本中的玩家。同时样本的选取会极大地影响AI的能力表现。如果全都使用高端玩家录像的样本(失误少),则缺乏异常样本,训练出来的AI应对异常突发情况的能力比较弱。如果加入中低端玩家的样本,则会拉低整体AI的能力水平。此外,在大部分赛道中,只在某些弯道上使用高阶技巧,因此高阶技巧的样本在整个赛道中的占比少,在训练时容易被忽略。所以在实际项目中,需要对样本进行分类和筛选,并且根据游戏特性设计复杂的网络结构,而不是简单地使用一个全连接网络。例如,先把操控左右和漂移的按键抽象成一个独立的模型,把复位刹车操作抽象成另外的模型,再把两个模型结合起来,从而控制赛车。
除此之外,监督学习方案必须要使用样本来训练模型。一些还没上线的游戏,由于缺少游戏样本,因此无法使用这个方案。