fifa足球经理2014脚本 FIFA足球经理

来源:互联网整理发布时间:2025-03-21 16:49:48

在这篇文章中,作者将提供一个简短的描述什么是强化学习,以及他如何将它应用于FIFA足球游戏。由于我们无法访问游戏代码,因此我们只能使用我们在游戏屏幕上看到的内容。在这篇文章中,作者将尝试教机器人学会\"踢\"30码任意球,你可以修改它来尝试其他球法。首先,让我们对强化学习先有个基本的了解,以及如何通过强化学习来制定我们的任意球方案。

什么是强化学习?

与监督学习不同,我们不需要人工标注强化学习中的训练数据。相反,我们要与我们的交互环境进行互动,观察我们互动的结果。我们多次重复这一过程,获得或好或坏的例子(经验)。这就是我们的训练数据。换句话说,我们通过实验而不是模仿来学习。

假设我们的环境处于一种特殊状态S。在采取行动a时,它将变为状态S'。对于这个特定的行为,你在环境中直接观察得到的反馈是R。任何行动过后都会有即时的反馈,除非你停止互动。因此,对于当前状态S,我们将尝试从所有可能的操作来估算出哪些行动将为我们带来最大的近期/未来回报,即Q(s,a),又称Q函数。Q(s,a) = r + γ * Q(s',a')表示我们预期的最终回报。在这里,γ是一个未知因素,表示对未来预测的不确定性。

深度Q学习是一种特殊的强化学习技术,它是深度神经网络学习Q函数的一种特殊方法。它通过给定环境的状态作为该网络的图像输入,试图预测所有可能的行为(如回归问题)的预期最终回报。选择最大预测Q值的动作来作为我们在环境中要采取的行动。因此就有了\"深度Q学习\"这个名字。

如何在FIFA中把深度Q学习和任意球相结合

状态:通过MobileNet CNN处理游戏截图给出了128—维平面特征图。128-dimensional flattened feature map

操作:采取以下可能的操作shoot_low, shoot_high, move_left, move_right。

反馈:如果按下踢球键,比赛得分增加超过200,表示踢进对方球门,r = + 1。如果踢进我方球门,得分保持不变,r = -1。r=0表示双方都没进球。

要求:双层密集网络,以特征图为输入,预测所有4个动作的最终回报。

在机器人与游戏环境交互的强化学习过程中,深度Q学习是它的核心,并还负责预测机器人可以采取的所有可能的行动的预期未来回报。这一模式在整个过程中不断得到训练和更新。

注:如果我们有关于FIFA中踢球方式更充足的数据,我们可以\"玩\"整个游戏了,而不是仅限于任意球。但那或许需要访问我们没有的游戏内部代码。无论如何,让我们充分利用我们所拥有的资源吧。

fifa足球经理2014脚本 FIFA足球经理-第1张

具体操作代码

fifa足球经理2014脚本 FIFA足球经理-第2张

我们将在Python中使用Tensorflow(Keras)等深度学习工具以及OCR中的pytesseract工具来实现代码操作。下图提供了git链接,并在存储库描述中提供了需求设置说明。

具体链接:

https://github.com/ChintanTrivedi/DeepGamingAI_FIFARL

作者推荐下面的代码。只是为了方便读者理解,也为了简洁起见,作者删除了一些不重要的代码。运行时请使用git中的完整代码。现在让我们看一看下面代码的四个主要部分。

1.与游戏环境的交互

我们没有任何现成的API可以让我们访问代码。那么,让我们来做我们自己的API吧!我们将使用游戏的截图观察状态,模拟按键在游戏环境中采取行动,光学字符识别来读取我们在游戏中得到的反馈信息。在FIFA,我们有三种主要的方法:observe(),act(),_get_reward()和一个额外的方法is_over()来检查是否有任意球。

2,收集训练数据

在整个训练过程中,我们希望存储我们的所有得到的信息。我们将用它作为深度Q学习模型的训练数据。因此,对于我们所采取的每一个操作,我们都会将<s,a,r,s'>以及game_over标志一起存储。深度Q学习模型学习的目标标签是每个动作的最终反馈信息。这也是我们回归问题的实数。

3.训练过程

现在让我们开始训练我们的深度Q学习模型。首先,我们得在探索(在游戏中采取随机行动)和开发(采用我们的模型预测行动)中保持平衡。这样,我们就可以在游戏中进行反复试验,以获得不同的体验。而参数epsilon就是平衡探索和开发的呈指数下降的因素。起初,当我们什么都不知道的时候,我们想做更多的探索。然而随着经验的增加,我们现在更多是想做开发。

在本文中,作者只对模型进行了训练。由于时间和性能的限制,作者只做了1000代的训练。但在未来,作者想把它推向至少5000代。

4.模型定义和训练过程

深度Q学习的过程核心是具有ReLU激活的双层密集/完全连接网络。它将128维特征映射作为输入状态,并为每个可能的动作输出4个Q值。具有最大预测Q值的动作是根据网络针对给定状态的策略所需采取的行动。

这是执行此代码的起点,但你必须确保FIFA在第二台显示器上以窗口模式运行,并且在技能中:射击菜单下加载了任意球练习模式。确保游戏控件与你在FIFA.py脚本中硬编码的密钥同步。

结果

虽然机器人尚未掌握所有不同类型的任意球,但它已经很好地学习了一些情况。它几乎可以在没有球员的情况下射进球门。然而,在面对少数情况时,它还会不断出错。不过这种情况发生的次数正在下降。

fifa足球经理2014脚本 FIFA足球经理-第3张

如上图所示,训练1000次后,平均进球率从30%提高到50%。这意味着目前的机器人在其所尝试的任意球中大约有一半得分(作为参考,一个人的平均得分在75%-80%之间)。的确,足球运动有太多不确定的因素,这使得学习变得非常困难。

结语

总的来说,作者认为即使没有达到人类的表现水准,结果也是相当令人满意的。从监督学习到强化学习有助于减轻收集训练数据的痛苦。如果有足够的时间去探索,它将表现得更好。然而,当遇到不熟悉的情况时,它并不能很好的应对。

这使作者相信,将其作为一个回归问题来表述,既不能外推,也不能作为监督学习中的分类问题。也许两者的结合可以解决这两种方法的弱点。也许这就是我们在为游戏构建人工智能的时候看到的最好的结果。

https://www.86iis.cn/bk/