本发明涉及数据处理领域,具体而言,涉及一种应用于游戏的人工智能操作方法和装置。
背景技术:
现有的DQN(Deep Q-Network)算法是DeepMind团队通过结合深度学习和增强学习来学习实时游戏Atari操作策略的算法。针对游戏领域中,DQN算法可以使用卷积神经网络(CNN)来直接处理游戏画面,进而预测下一步最佳的操作策略,并通过Q-Learning算法调整优化目标。通过测试可知,当将DQN算法应用在49个Atari游戏中时,有29个Atari游戏超过了人类选手的表现。
尽管DQN算法在29个Atari游戏中超过了人类选手的表现,但是,在一些策略性比较强的游戏中,例如,吃豆人(Pac Man)上DQN算法表现较差,具体的表现就是缺乏对游戏操作策略的规划能力,例如,不能很好的规避游戏中的危险。
针对上述的问题,目前尚未提出有效的解决方案。
技术实现要素:
本发明实施例提供了一种应用于游戏的人工智能操作方法和装置方法和装置,以至少解决现有技术中人工智能操作算法对游戏操作策略的规划能力较差的技术问题。
根据本发明实施例的一个方面,提供了一种应用于游戏的人工智能操作方法,包括:接收客户端发送的状态信息,其中,所述状态信息用于指示所述客户端的当前游戏状态;通过建立的模型获取动作指示信息,其中,所述动作指示信息用于指示所述当前游戏状态下的下一个动作,所述模型通过所述客户端中的多个动作组合训练得到,每个所述动作组合包括多个先后执行的动作;将所述动作指示信息发送给所述客户端。
根据本发明实施例的另一方面,还提供了一种应用于游戏的人工智能操作装置,包括:接收单元,用于接收客户端发送的状态信息,其中,所述状态信息用于指示所述客户端的当前游戏状态;获取单元,用于通过建立的模型获取动作指示信息,其中,所述动作指示信息用于指示所述当前游戏状态下的下一个动作,所述模型通过所述客户端中的多个动作组合训练得到,每个所述动作组合包括多个先后执行的动作;发送单元,用于将所述动作指示信息发送给所述客户端。
在本发明实施例中,在获取到客户端的当前游戏状态之后,通过建立的模型获取用于指示当前游戏状态下的下一个动作的动作指示信息,并将动作指示信息发送给客户端,以便客户端中的电脑角色可以执行上述动作指示信息所指示的下一个动作。这样,通过预先训练得到的模型,可以使得在获取电脑角色所执行的下一个动作的过程中采用的策略更接近人类玩家的策略,提高了对游戏操作策略的规划能力,进而解决了现有技术中人工智能操作算法对游戏操作策略的规划能力较差的技术问题。此外,由于模型是预先建立的,因此,对于实时型的游戏,采用本申请的实施例中的应用于游戏的人工智能操作方案可以在提高电脑角色的人工智能能力(例如,获取电脑角色所执行的下一个动作的过程中采用的策略)的基础上,进一步缩短获取电脑角色所执行的下一个动作所需的时间,也就是说,本申请的实施例中的应用于游戏的人工智能操作方案,既具有良好的对游戏操作策略的规划能力,又具有较短的执行时间,更加适于实时型的游戏。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的应用于游戏的人工智能操作方法的硬件环境的示意图;
图2是根据本发明实施例的一种应用于游戏的人工智能操作方法的流程图;
图3是根据本发明实施例的一种应用于游戏的人工智能操作系统的示意图;
图4是根据本发明实施例的一种游戏帧数据的预处理方法的流程图;
图5是根据本发明实施例的一种模型的示意图;
图6是根据本发明实施例的一种训练模型的训练方法的流程图;
图7是根据本发明实施例的应用于游戏的人工智能操作装置的示意图;以及
图8是根据本发明实施例的一种服务器的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请涉及到的专业术语的解释:
增强学习:增强学习关注的是agent在一个环境中采取一些动作并获得收益的场景,它的目标是优化多部决策过程累计收益。
深度学习(Deep Learning):通过叠加多层神经网络以获得更强性能的机器学习算法。
蒙特卡洛树搜索(Monte Carlo Tree Search):一种model-free的增强学习算法,通过仿真的方式来选择下一步采取的动作,并使得累计的收益最大。
DQN(Deep Q-Network):结合深度学习和Q-Learning算法,用于解决实时游戏中动作决策的算法。
Atari游戏:80年代的视频游戏,现在被用于作为增强学习的性能测试集。
实施例1
根据本发明实施例,提供了一种可以通过本申请装置实施例执行的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明实施例,提供了一种应用于游戏的人工智能操作方法。可选地,在本实施例中,上述应用于游戏的人工智能操作方法可以应用于如图1所示的终端102和服务器104所构成的硬件环境中。如图1所示,终端102通过网络与服务器104进行连接,上述网络包括但不限于:移动通信网络、广域网、城域网或局域网,终端102可以是手机终端,也可以是PC终端、笔记本终端或平板电脑终端。
图1中示出的硬件环境系统的主要工作原理是:
在本发明实施例中,终端102中安装有客户端,安装有客户端的终端102向服务器104发送客户端的状态信息,其中,客户端的状态信息用于指示客户端在当前时刻的当前游戏状态。服务器104在获取到状态信息之后,将根据建立的模型获取用于指示当前游戏状态下的下一个动作的动作指示信息。服务器104在获取到动作指示信息之后,将获取到的动作指示信息发送至客户端所在的终端102。
上述客户端可以为任意游戏的客户端,例如,“王者荣耀”游戏的客户端。当用户在终端102中运行该游戏时,会向游戏服务器(即,服务器104)发送当前游戏状态,例如,发送的当前游戏状态为“电脑角色受到玩家攻击”。游戏服务器104在获取到“电脑角色受到玩家攻击”这条状态信息之后,根据建立的模型获取用于指示“电脑角色受到玩家攻击”之后的下一个动作的动作指示信息,例如,“电脑角色受到玩家攻击”之后的下一个动作为“电脑角色释放技能”。服务器104在获取到该动作指示信息之后,将该动作指示信息发送至客户端中,以指示电脑角色执行“电脑角色释放技能”的动作。
需要说明的是,在本发明实施例中,上述模型通过客户端的多个动作组合训练得到的,因此,通过上述模型为客户端获取到的动作指示信息所指示的下一个动作,更加接近人类玩家在当前游戏状态下通过游戏操作策略所做出的下一个动作,即,通过预先训练得到的模型,可以使得在获取电脑角色所执行的下一个动作的过程中采用的策略更接近人类玩家的策略。当客户端中的电脑角色执行该动作指示信息指示的动作之后,增强了与玩家的对抗性,使得玩家感觉上是与另一个玩家在进行游戏对抗,这极大地提高了玩家的游戏兴趣。
图2是根据本发明实施例的一种应用于游戏的人工智能操作方法的流程图,以下结合图2对本发明实施例所提供的应用于游戏的人工智能操作方法做具体介绍,如图2所示,该应用于游戏的人工智能操作方法主要包括如下步骤S202至步骤S206:
步骤S202,接收客户端发送的状态信息,其中,状态信息用于指示客户端的当前游戏状态。
在本发明实施例中,可以通过服务器接收客户端发送的状态信息,其中,客户端为任意游戏的客户端,例如,“王者荣耀”的客户端。服务器获取到的状态信息用于指示客户端当前游戏状态,例如,“王者荣耀”客户端的当前游戏状态。
上述当前游戏状态可以但不限于包括客户端中的电脑角色和/或玩家的当前游戏状态,例如,电脑角色受到玩家攻击,或者,电脑角色攻击玩家等状态。
步骤S204,通过建立的模型获取动作指示信息,其中,动作指示信息用于指示当前游戏状态下的下一个动作,模型通过客户端中的多个动作组合训练得到,每个动作组合包括多个先后执行的动作。
上述已建立的模型有多种,可选地,在本发明实施例中,预先建立的模型可以为卷积神经网络模型(CNN)。卷积神经网络模型在进行测试之前,可以使用客户端中多个动作组合作为训练样本,并通过训练样本对卷积神经网络模型进行训练,进而通过学习算法来调整CNN中神经元间的连接权,使得网路输出更加符合实际。
在对CNN进行大量训练之后,就可以采用该模型获取用于指示当前游戏状态下的下一个动作的动作指示信息。服务器在获取到动作指示信息之后,就可以执行下述步骤S206,即将动作指示信息发送至客户端。
步骤S206,将动作指示信息发送给客户端。
在本发明实施例中,在获取到客户端的当前游戏状态之后,通过建立的模型获取用于指示当前游戏状态下的下一个动作的动作指示信息,并将动作指示信息发送给客户端,以便客户端中的电脑角色可以执行上述动作指示信息所指示的下一个动作。这样,通过预先训练得到的模型,可以使得在获取电脑角色所执行的下一个动作的过程中采用的策略更接近人类玩家的策略,提高了对游戏操作策略的规划能力,进而解决了现有技术中人工智能操作算法对游戏操作策略的规划能力较差的技术问题。此外,由于模型是预先建立的,因此,对于实时型的游戏,采用本申请的实施例中的应用于游戏的人工智能操作方案可以在提高电脑角色的人工智能能力(例如,获取电脑角色所执行的下一个动作的过程中采用的策略)的基础上,进一步缩短获取电脑角色所执行的下一个动作所需的时间,也就是说,本申请的实施例中的应用于游戏的人工智能操作方案,既具有良好的对游戏操作策略的规划能力,又具有较短的执行时间,更加适于实时型的游戏。
通过上述描述可知,在本发明实施例中,在接收客户端发送的状态信息之前,首先需要建立模型,如果建立的模型为卷积神经网络模型,那么就需要对建立的模型进行训练。具体地,训练过程是使用客户端中的多个动作组合对模型进行训练,其中,多个动作组合为在客户端中执行事件得到事件结果所需的全部动作组合。
具体地,在对模型进行训练时,可以将多个动作组合作为训练样本,然后,对该训练样本进行训练。在对训练样本进行训练的过程中,会预先设定好期望值,然后,将训练结果与期望值进行比较,其中,当训练结果不满足期望值时,可以通过调整模型中的相关参数的方式使得训练结果更加符合期望值。
如果上述建立的模型为CNN模型时,可以通过多个动作组合对该CNN模型进行训练,当训练结果不满足期望值时,可以通过调整CNN中神经元间的连接权,进而使得训练结果更加符合期望值。
在本发明实施例中,多个动作组合为客户端中执行事件得到事件结果所需的全部动作组合。例如,上述事件为“与玩家对战事件”,即,电脑角色与玩家进行对战,那么此时,执行“与玩家对战事件”的事件结果包括:“对战失败”和“对战胜利”。假设,在执行“与玩家对战事件”并获取上述事件结果所需要的全部动作包括:动作1、动作2、动作3和动作4。此时,多个动作组合即为上述动作1、动作2、动作3和动作4的全部动作组合,例如,动作组合1包括:动作1、动作2、动作3和动作4;动作组合2包括:动作1、动作2、动作4和动作3;动作组合3包括:动作1、动作3、动作2和动作4;动作组合4包括:动作1、动作3、动作4和动作2等。在获取上述多个动作组合之后,就可以通过上述多个动作组合对模型进行训练。例如,通过上述多个动作组合对CNN模型进行训练。
需要说明的是,现有技术中,预测游戏的下一动作时,是通过DQN算法来预测下一步的最佳动作。但是,采用DQN算法进行预测时,仅能预测下一步的动作,并不能预测下一步的后续动作。然而,在本发明的实施例中,可以对执行事件所需的多个动作组合所对应的事件结果进行预测。
可选地,使用客户端中的多个动作组合对模型进行训练包括:重复执行以下步骤,直到遍历完客户端执行事件得到事件结果所需的全部动作组合;
训练步骤:使用当前动作对模型进行训练;
判断步骤:判断当前动作是否存在下一个动作;
获取步骤:若存在下一个动作,则获取下一个动作,并将下一个动作作为当前动作。
具体地,在使用多个动作组合对模型进行训练时,可以首先使用多个动作组合中的当前动作对模型进行训练。在使用当前动作对模型进行训练之后,判断在多个动作组合中是否存在下一个动作;如果判断出在多个动作组合中存在下一个动作,那么将下一个动作作为当前动作,继续判断当前动作是否存在下一个动作。
需要说明的是,如果判断出在多个动作组合中存在当前动作的下一个动作,并且下一个动作的数量为多个。此时,在存在多个下一个动作时,可以从多个下一个动作中选择最优的一个作为下一个动作;或,在存在多个下一个动作时,可以从多个下一个动作中随机选择一个作为下一个动作。
可选地,最优的一个动作是指当电脑角色执行该动作时,事件结果为“对战胜利”的概率高于执行其他动作的概率。
在本发明实施例中,可以以概率ε从多个下一个动作中随机选择一个作为下一个动作;或者,通过CNN模型以概率1-ε从多个下一个动作中选择最优的一个作为下一个动作。
例如,上述多个动作组合:[动作1、动作2、动作3和动作4];[动作1、动作2、动作4和动作3];[动作1、动作3、动作2和动作4];[动作1、动作3、动作4和动作2]。首先执行训练步骤,即使用当前动作对模型进行训练,其中,通过上述多个动作组合可知,第一个当前动作为动作1。因此,首先使用动作1对模型进行训练,并在训练之后,判断动作1是否存在下一个动作,其中,通过多个动作组合可知,在动作1之后的下一个动作包含:动作2和动作3。由于下一个动作的数量为多个,因此,可以在动作2和动作3中随机选择一个作为下一动作,或者,从动作2或动作3中选择最优的一个作为下一个动作。假设,电脑角色在执行动作2之后的获取“对战胜利”的事件结果的概率高于执行动作3之后的获取“对战胜利”的事件结果的概率,此时,就可以将动作2作为下一个动作。
在本发明的一个可选实施方式中,使用客户端中的多个动作组合对模型进行训练,具体为:获取客户端中的游戏界面的帧数据,其中,上述帧数据用于指示上述动作组合;使用上述帧数据对所述模型进行训练;或,获取客户端中的当前状态参数,其中,上述当前状态参数用于指示上述动作组合;使用上述当前状态参数对模型进行训练。可选地,上述当前状态参数包括但不限于:客户端中用于表示玩家和/或电脑角色当前一个或一组操作的参数、客户端中用于表示游戏角色的战斗能力的参数,例如,游戏中某角色的血数,所拥有的技能等参数。
进一步地,在使用客户端中的游戏界面的帧数据对模型进行训练时,需要通过MCTS算法对获取到的游戏每帧数据进行预处理,然后,将预处理之后的数据作为训练样本,对模型进行训练。
具体地,在通过MCTS算法对获取到的每个游戏帧数据进行预处理时,首先每隔n帧选择1帧来进行处理,优选地,可以每隔3帧选择1帧来进行处理,跳过中间的游戏帧数据。然后,将游戏帧数据由RGB表示转换为灰阶图(gray)。再将游戏帧数据转换为灰阶图之后,将游戏帧数据进行裁剪,例如,裁剪游戏区为160*160像素的区域,并缩小为84*84。接下来,在像素级别减去图片均值,例如将像素缩放到[-1,1]范围,最后,将连续m帧数据组合起来,例如,将连续4帧数据组合起来,生成84*84*4的输入数据。
在本发明的一个可选实施方式中,接收客户端发送的状态信息,具体为:接收客户端的当前界面中的帧数据,其中,上述状态信息包括上述帧数据;或者,接收客户端的当前状态参数,其中,上述状态信息包括上述当前状态参数。
当模型训练完成之后,就可以通过该模型进行预测,例如,将获取到的客户端当前游戏界面中的帧数据作为该模型的输入,并将该模型的输出作为动作指示信息。或者将接收客户端的当前状态参数作为该模型的输入,并将该模型的输出作为动作指示信息。
综上,现有技术中,深度学习和增强学习算法互相结合之后的DQN算法在Atari游戏中获得较大的突破,在很多游戏上的表现都有优于人类的表现,但同时在一些策略性比较强的游戏,比如,吃豆人(Pac Man)上表现较差,具体的表现就是缺乏对策略的规划能力,比如不能很好的规避危险。然而,MCTS算法相比Q-Learning算法具有较强的策略规划能力,但是MCTS的执行时间比DQN算法要高几个数量级,不适直接用于Atari这样的实时游戏。本发明实施例提出的应用于游戏的人工智能操作方法,是一种利用离线策略搜索的深度学习算法,既具有良好的策略规划能力,又具有较短的执行时间,更加适用于实时型游戏。
图3是根据本发明实施例的一种应用于游戏的人工智能操作系统的示意图,从图3中可以看出,“王者荣耀客户端”即为上述客户端,策略选择服务器即为上述任一服务器。
如图3所示,在游戏进行时,王者荣耀的游戏客户端会把当前游戏的状态信息通过网络发送到策略选择服务器上。策略选择服务器在获取到状态信息之后,将通过模型选择出的动作指示信息,并将该动作指示信息返回给王者荣耀的游戏客户端。在本发明实施例中,策略选择服务器中设置有已训练的模型,例如,CNN模型,其中,该模型通过上述实施例中的训练方法进行训练,此处不再赘述。
图4是根据本发明实施例的一种游戏帧数据的预处理方法的流程图,如图4所示,该方法包括如下步骤:
步骤S401,判断当前帧是否为跳转帧;其中,如果判断出当前帧不是跳转帧,则执行下述步骤S402,否则,继续执行步骤S401;
在本发明实施例中,可以每隔n帧选择1帧来进行处理,优选地,可以每隔3帧选择1帧来进行处理,跳过中间的游戏帧数据(即,跳转帧)。因此,服务器首先判断当前游戏帧数据是否为跳转帧,如果不是跳转帧,那么执行下述步骤S402,如果判断出当前游戏帧数据为跳转帧,则继续判断下一个游戏帧数据是否为跳转帧。
步骤S402,将游戏帧数据由RGB表示转换为灰阶图;
步骤S403,对转化为灰阶图的游戏帧数据进行裁剪或缩放;
在本发明实施例中,将非跳转帧的游戏帧数据由RGB表示转换为灰阶图(gray)。再将游戏帧数据转换为灰阶图之后,将游戏帧数据进行裁剪,例如,裁剪游戏区为160*160像素的区域,并缩小为84*84。
步骤S404,对裁剪或缩放之后的游戏帧数据进行白化处理。
在本发明实施例中,在像素级别减去图片均值,例如将像素缩放到[-1,1]范围,最后,将连续m帧数据组合起来,例如,将连续4帧数据组合起来,生成84*84*4的输入数据。
需要说明的是,在本发明实施例中,在对裁剪或缩放之后的游戏帧数据进行白化处理之后,可以叠加4帧,并重新执行上述步骤S401。
图5是根据本发明实施例的一种模型的示意图,如图5所示的模型为卷积神经网络模型的示意图。
如图5所示,卷积神经网络(CNN)的具体架构包括:输入层、卷积层、全连接层和输出层。
其中,CNN网络的输入层为输入的数据是游戏帧数据,例如,通过上述实施例中得到的84*84*4的游戏帧数据。第一个卷积层包含16个8*8的filter,stride为4,并且第一个卷积层的激活函数为tanh。第二个卷积层包含32个4*4的filter,stride为2,并且第二卷积层的激活函数也是tanh。全连接层为256个激活单元,激活函数为relu,最终的输出层输出的为可选的游戏动作,例如,输出18个可选的游戏动作(即,动作指示信息)。
图6是根据本发明实施例的一种训练模型的训练方法的流程图,如图6所示,该方法包括如下步骤:
步骤S601,生成训练样本数据;在本发明实施例中,可以通过MCTS算法对获取到的客户端中的游戏界面的帧数据进行预处理,并将处理之后的数据作为训练样本数据,具体数据过程中在图4中已进行描述,此处不再赘述。
步骤S602,通过训练样本数据对模型进行训练;在本发明实施例中,可以通过上述的数据预处理过程和深度学习架构学习一个CNN分类器(即,CNN模型)。然后,使用训练样本数据对该模型对进行训练。
步骤S603,启用概率训练模型;
步骤S604,根据概率训练模型中指示的第一概率控制模型选择动作;
步骤S605,根据概率训练模型中指示的第二概率随机选择动作;
在本发明实施例中,可以使用ε-greedy概率训练模型策略,以概率ε(第二概率)选择随机动作,以概率1-ε(第一概率)使用训练获得的CNN分类器做动作选择。
步骤S606,将选择的动作作为训练样本数据。
在选择得到动作之后,将返回步骤S602中,即继续通过训练样本数据对模型进行训练。
本发明实施例提出了一种应用于游戏的人工智能操作方法,该方法利用了离线策略搜索的深度学习算法,该深度学习算法既具有良好的策略规划能力,又具有较短的执行时间,更加适用于实时游戏。当将本发明实施例提供的应用于游戏的人工智能操作方法应用在Atari游戏上时,相比传统的DQN算法,本发明实施例在多个游戏上的游戏得分均能高出10%以上。例如,在王者荣耀产品上,传统DQN算法训练获得模型在策略选择上表现较差,比如,走线和团战的时机选择,打龙还是清理兵线的时机选择等。然而,本发明实施例利用了MCTS生成的训练样本,在策略选择上表现更加接近人类玩家。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
在本发明的一个可选的实施例中,以“王者荣耀”网络游戏为例来描述本发明实施例中的应用于游戏的人工智能操作方法。需要说明的是,本发明实施例中的应用于游戏的人工智能操作方法还可以应用于其他游戏,本发明实施例对此不做限定。
在“王者荣耀”的游戏引擎中完成根据当前游戏状态自动确定动作指示信息。例如,游戏中电脑玩家控制的电脑角色(例如,关羽)在《王者荣耀》中破坏对方的钻石雕像。在破坏钻石雕像的过程中,电脑角色会遇到对方守卫钻石雕像的玩家角色(由玩家控制,例如,张飞),此时,电脑角色可以攻击该玩家角色。在攻击玩家角色的过程中,客户端就可以随时将当前游戏状态发送至服务器中,服务器按照上述实施例中描述的应用于游戏的人工智能操作方法进行处理,确定出动作指示信息,进而服务器将动作指示信息发送给客户端,其中,上述动作指示信息用于指示当前游戏状态下的下一个动作。
例如,客户端将电脑角色攻击玩家角色时的攻击状态发送给服务器,服务器在获取到攻击状态之后,就可以根据攻击状态确定电脑角色的下一动作,假设,根据攻击状态确定的下一动作为使用技能A,那么服务器就可以将该用于指示下一动作(使用技能A)的动作指示信息发送给客户端,客户端在接收到该信息之后,就可以控制电脑角色在游戏中使用技能A。
在本实施例中,以“王者荣耀”游戏为例,将本发明实施例提出的应用于游戏的人工智能操作方法应用在网络游戏《王者荣耀》中,能够利用应用于游戏的人工智能操作方法(离线策略搜索的深度学习算法),确定当前游戏状态下的下一动作,既具有良好的策略规划能力,又具有较短的执行时间,使得更加适用于实时型游戏。
实施例3
根据本发明实施例,还提供了一种用于实施上述应用于游戏的人工智能操作方法的应用于游戏的人工智能操作装置,该应用于游戏的人工智能操作装置主要用于执行本发明实施例上述内容所提供的应用于游戏的人工智能操作方法,以下对本发明实施例所提供的应用于游戏的人工智能操作装置做具体介绍:
图7是根据本发明实施例的应用于游戏的人工智能操作装置的示意图,如图7所示,该应用于游戏的人工智能操作装置主要包括:接收单元701,获取单元703和发送单元705,其中:
接收单元701,用于接收客户端发送的状态信息,其中,状态信息用于指示客户端的当前游戏状态。
在本发明实施例中,可以通过接收单元701接收客户端发送的状态信息,其中,客户端可以为任意游戏的客户端,例如,“王者荣耀”游戏的客户端。服务器获取到的状态信息用于指示客户端的当前游戏状态,例如,“王者荣耀”客户端的当前游戏状态。可选地,本发明实施例的应用于游戏的人工智能操作装置可以但不限于为服务器,或者为位于服务器内部的装置。
上述当前游戏状态可以但不限于包括客户端中的电脑角色和/或玩家的当前游戏状态,例如,电脑角色受到玩家攻击,或者,电脑角色攻击玩家等状态。
获取单元703,用于通过建立的模型获取动作指示信息,其中,动作指示信息用于指示当前游戏状态下的下一个动作,模型通过客户端中的多个动作组合训练得到,每个动作组合包括多个先后执行的动作。
上述已建立的模型有多种,可选地,在本发明实施例中,预先建立的模型可以为卷积神经网络模型(CNN)。卷积神经网络模型在进行测试之前,可以使用客户端中多个动作组合作为训练样本,并通过训练样本对卷积神经网络模型进行训练,进而通过学习算法来调整CNN中神经元间的连接权,使得网路输出更加符合实际。
在对CNN进行大量训练之后,就可以采用该模型获取用于指示当前游戏状态下的下一个动作的动作指示信息。在获取到动作指示信息之后,就可以执行上述实施例中的步骤S206,即将动作指示信息发送至客户端。
发送单元705,用于将动作指示信息发送给客户端。
在本发明实施例中,在获取到客户端的当前游戏状态之后,通过建立的模型获取用于指示当前游戏状态下的下一个动作的动作指示信息,并将动作指示信息发送给客户端,以便客户端中的电脑角色可以执行上述动作指示信息所指示的下一个动作。这样,通过预先训练得到的模型,可以使得在获取电脑角色所执行的下一个动作的过程中采用的策略更接近人类玩家的策略,提高了对游戏操作策略的规划能力,进而解决了现有技术中人工智能操作算法对游戏操作策略的规划能力较差的技术问题。此外,由于模型是预先建立的,因此,对于实时型的游戏,采用本申请的实施例中的应用于游戏的人工智能操作方案可以在提高电脑角色的人工智能能力(例如,获取电脑角色所执行的下一个动作的过程中采用的策略)的基础上,进一步缩短获取电脑角色所执行的下一个动作所需的时间,也就是说,本申请的实施例中的应用于游戏的人工智能操作方案,既具有良好的对游戏操作策略的规划能力,又具有较短的执行时间,更加适于实时型的游戏。
可选地,本发明实施例的应用于游戏的人工智能操作装置还包括:训练单元,用于在接收客户端发送的状态信息之前,使用客户端中的多个动作组合对模型进行训练,其中,多个动作组合为在客户端中执行事件得到事件结果所需的全部动作组合。
通过上述描述可知,在本发明实施例中,在接收客户端发送的状态信息之前,首先需要建立模型,如果建立的模型为卷积神经网络模型,那么就需要对建立的模型进行训练。具体地,训练过程是使用客户端中的多个动作组合对模型进行训练,其中,多个动作组合为在客户端中执行事件得到事件结果所需的全部动作组合。
具体地,在对模型进行训练时,可以将多个动作组合作为训练样本,然后,对该训练样本进行训练。在对训练样本进行训练的过程中,会预先设定好期望值,然后,将训练结果与期望值进行比较,其中,当训练结果不满足期望值时,可以通过调整模型中的相关参数的方式使得训练结果更加符合期望值。
如果上述建立的模型为CNN模型时,可以通过多个动作组合对该CNN模型进行训练,当训练结果不满足期望值时,可以通过调整CNN中神经元间的连接权,进而使得训练结果更加符合期望值。
在本发明实施例中,多个动作组合为客户端中执行事件得到事件结果所需的全部动作组合。例如,上述事件为“与玩家对战事件”,即,电脑角色与玩家进行对战,那么此时,执行“与玩家对战事件”的事件结果包括:“对战失败”和“对战胜利”。假设,在执行“与玩家对战事件”并获取上述事件结果所需要的全部动作包括:动作1、动作2、动作3和动作4。此时,多个动作组合即为上述动作1、动作2、动作3和动作4的全部动作组合,例如,动作组合1包括:动作1、动作2、动作3和动作4;动作组合2包括:动作1、动作2、动作4和动作3;动作组合3包括:动作1、动作3、动作2和动作4;动作组合4包括:动作1、动作3、动作4和动作2等。在获取上述多个动作组合之后,就可以通过上述多个动作组合对模型进行训练。例如,通过上述多个动作组合对CNN模型进行训练。
需要说明的是,现有技术中,预测游戏的下一动作时,是通过DQN算法来预测下一步的最佳动作。但是,采用DQN算法进行预测时,仅能预测下一步的动作,并不能预测下一步的后续动作。然而,在本发明的实施例中,可以对执行事件所需的多个动作组合所对应的事件结果进行预测。
可选地,训练单元用于:重复执行以下模块,直到遍历完客户端执行事件得到事件结果所需的全部动作组合;训练模块,用于使用当前动作对模型进行训练;判断模块,用于判断当前动作是否存在下一个动作;第一获取模块,用于在判断出存在下一个动作的情况下,获取下一个动作,并将下一个动作作为当前动作。
具体地,在使用多个动作组合对模型进行训练时,可以首先使用多个动作组合中的当前动作对模型进行训练。在使用当前动作对模型进行训练之后,判断在多个动作组合中是否存在下一个动作;如果判断出在多个动作组合中存在下一个动作,那么将下一个动作作为当前动作,继续判断当前动作是否存在下一个动作。
需要说明的是,如果判断出在多个动作组合中存在当前动作的下一个动作,并且下一个动作的数量为多个。此时,在存在多个下一个动作时,可以从多个下一个动作中选择最优的一个作为下一个动作;或,在存在多个下一个动作时,可以从多个下一个动作中随机选择一个作为下一个动作。
可选地,最优的一个动作是指当电脑角色执行该动作时,事件结果为“对战胜利”的概率高于执行其他动作的概率。
在本发明实施例中,可以以概率ε从多个下一个动作中随机选择一个作为下一个动作;或者,通过CNN模型以概率1-ε从多个下一个动作中选择最优的一个作为下一个动作。
例如,上述多个动作组合:[动作1、动作2、动作3和动作4];[动作1、动作2、动作4和动作3];[动作1、动作3、动作2和动作4];[动作1、动作3、动作4和动作2]。首先执行训练步骤,即使用当前动作对模型进行训练,其中,通过上述多个动作组合可知,第一个当前动作为动作1。因此,首先使用动作1对模型进行训练,并在训练之后,判断动作1是否存在下一个动作,其中,通过多个动作组合可知,在动作1之后的下一个动作包含:动作2和动作3。由于下一个动作的数量为多个,因此,可以在动作2和动作3中随机选择一个作为下一动作,或者,从动作2或动作3中选择最优的一个作为下一个动作。假设,电脑角色在执行动作2之后的获取“对战胜利”的事件结果的概率高于执行动作3之后的获取“对战胜利”的事件结果的概率,此时,就可以将动作2作为下一个动作。
可选地,第一获取模块包括:第一获取子模块,用于在存在多个下一个动作时,从多个下一个动作中选择最优的一个作为下一个动作;或,第二获取子模块,用于在存在多个下一个动作时,从多个下一个动作中随机选择一个作为下一个动作。
可选地,训练单元包括:第二获取模块,用于获取客户端中的游戏界面的帧数据,其中,上述帧数据用于指示上述动作组合;使用上述帧数据对所述模型进行训练;或,第三获取模块,用于获取客户端中的当前状态参数,其中,上述当前状态参数用于指示上述动作组合;使用上述当前状态参数对模型进行训练。可选地,上述当前状态参数包括但不限于:客户端中用于表示玩家和/或电脑角色当前一个或一组操作的参数、客户端中用于表示游戏角色的战斗能力的参数,例如,游戏中某角色的血数,所拥有的技能等参数。
进一步地,在使用客户端中的游戏界面的帧数据对模型进行训练时,需要通过MCTS算法对获取到的游戏每帧数据进行预处理,然后,将预处理之后的数据作为训练样本,对模型进行训练。
具体地,在通过MCTS算法对获取到的每个游戏帧数据进行预处理时,首先每隔n帧选择1帧来进行处理,优选地,可以每隔3帧选择1帧来进行处理,跳过中间的游戏帧数据。然后,将游戏帧数据由RGB表示转换为灰阶图(gray)。再将游戏帧数据转换为灰阶图之后,将游戏帧数据进行裁剪,例如,裁剪游戏区为160*160像素的区域,并缩小为84*84。接下来,在像素级别减去图片均值,例如将像素缩放到[-1,1]范围,最后,将连续m帧数据组合起来,例如,将连续4帧数据组合起来,生成84*84*4的输入数据。
可选地,接收单元包括:第一接收模块,用于接收客户端的当前界面中的像素;或者,第二接收模块,用于接收客户端的当前游戏状态。
当模型训练完成之后,就可以通过该模型进行预测,例如,将获取到的客户端当前游戏界面中的帧数据作为该模型的输入,并将该模型的输出作为动作指示信息。或者将接收客户端的当前状态参数作为该模型的输入,并将该模型的输出作为动作指示信息。
实施例4
根据本发明实施例,还提供了一种用于实施上述应用于游戏的人工智能操作方法的服务器。
图8是根据本发明实施例的一种服务器的结构框图,如图所示,该服务器可以包括:一个或多个(图中仅示出一个)处理器801、存储器803、以及传输装置805,如图8所示,该终端还可以包括输入输出设备807。
其中,存储器803可用于存储软件程序以及模块,如本发明实施例中的应用于游戏的人工智能操作方法和装置对应的程序指令/模块,处理器801通过运行存储在存储器803内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用于游戏的人工智能操作方法。存储器803可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器803可进一步包括相对于处理器801远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置805用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置805包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置805为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器803用于存储应用程序。
处理器801可以通过传输装置805调用存储器803存储的应用程序,以执行下述步骤:
接收客户端发送的状态信息,其中,状态信息用于指示客户端的当前游戏状态;通过建立的模型获取动作指示信息,其中,动作指示信息用于指示当前游戏状态下的下一个动作,模型通过客户端中的多个动作组合训练得到,每个动作组合包括多个先后执行的动作;将动作指示信息发送给客户端。
处理器801还用于执行下述步骤:使用客户端中的多个动作组合对模型进行训练,其中,多个动作组合为在客户端中执行事件得到事件结果所需的全部动作组合。
处理器801还用于重复执行以下步骤,直到遍历完客户端执行事件得到事件结果所需的全部动作组合:使用当前动作对模型进行训练;判断当前动作是否存在下一个动作;若存在下一个动作,则获取下一个动作,并将下一个动作作为当前动作。
处理器801还用于执行下述步骤:在存在多个下一个动作时,从多个下一个动作中选择最优的一个作为下一个动作;或,在存在多个下一个动作时,从多个下一个动作中随机选择一个作为下一个动作。
处理器801还用于通过执行下述步骤来使用上述客户端中的多个动作组合对上述模型进行训练:获取上述客户端中的游戏界面的帧数据,其中,上述帧数据用于指示上述动作组合;使用上述帧数据对上述模型进行训练;或,获取上述客户端中的当前状态参数,其中,上述当前状态参数用于指示上述动作组合;使用上述当前状态参数对上述模型进行训练。
处理器801还用于通过执行下述步骤来接收客户端发送的状态信息:接收上述客户端的当前界面中的帧数据,其中,上述状态信息包括上述帧数据;或者,接收上述客户端的当前状态参数,其中,上述状态信息包括上述当前状态参数。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
实施例5
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于存储本发明实施例的应用于游戏的人工智能操作方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于移动通信网络、广域网、城域网或局域网的网络中的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S1,接收客户端发送的状态信息,其中,状态信息用于指示客户端的当前游戏状态;
S2,通过建立的模型获取动作指示信息,其中,动作指示信息用于指示当前游戏状态下的下一个动作,上述模型通过客户端中的多个动作组合训练得到,每个动作组合包括多个先后执行的动作;
S3,将动作指示信息发送给客户端。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。