學習使用OpenAI Retro - E2 - Open-AI和NEAT教程

Find AI Tools
No difficulty
No complicated process
Find ai tools

學習使用OpenAI Retro - E2 - Open-AI和NEAT教程

目录

  • 介绍
  • 安装 OpenAI Retro
  • 创建环境
  • 运行游戏
  • 设置动作
  • 观察游戏画面
  • 获取回报和状态
  • 更改奖励机制
  • 安装 Python Neat
  • 使用神经网络
  • 结论

介绍

欢迎大家来到我关于如何使用 OpenAI Retro 和各种神经网络的教程的第二集。今天我们将从非常简单的环境交互开始,基本上向您展示如何使用 OpenAI 网络。虽然它非常简单,但我们会一步一步地讲解,并尽力让您理解每个函数的作用。之后,如果时间允许,我们将安装 Python Neat,并开始学习使用它。不过,这部分内容会更加复杂些,所以如果您还没看过上一集中有关如何设置 Retro Gym 环境的内容,我建议您回去看一下。当然,您也可以直接访问 OpenAI Retro GitHub 上的相关资源。在开始之前,我们需要返回到上次创建的教程文件夹,如果您按照上次的做法,那么就代表您创建了一个虚拟环境。接下来,我们要运行以下命令:source bin/activate,这样就可以激活我们的虚拟环境了。您可以看到,我们在上一集已经安装好了 Gym Retro,并且还安装了其他相关组件。好了,到目前为止,这是我们要安装的全部内容。

安装 OpenAI Retro

要开始使用 OpenAI Retro,我们需要先导入 Retro 库,它是 OpenAI Gym Retro 环境的核心。导入 Retro 的方法非常简单,只需要一个命令即可。

import retro

接下来,我们需要创建一个环境,用来加载游戏和相应的状态。具体的创建方法如下。

env = retro.make(Game='Sonic the Hedgehog - Genesis', state='Green Hill Zone Act 1')

您可以在 Gym Retro 文件夹中找到游戏和状态的名称。打开文件夹之后,进入 retro/data 目录,在里面可以找到各种游戏环境。对于我们的示例,我们选择了 Sonic the Hedgehog 这个游戏,并指定了它的状态为 Green Hill Zone Act 1。如果您希望指定其他的状态文件,只需要将它们放入相应的文件夹并在命令中进行指定即可。

创建环境

一旦我们完成了环境的创建,接下来我们就需要开始运行游戏了。为了确保一切正常运行,我们可以先检查一下是否有错误。

env.reset()

如果没有显示任何错误信息,就表示环境创建成功。接下来,我们需要定义一个变量 done,用于判断游戏是否结束。

done = False

运行游戏

游戏的运行是通过 step 函数实现的,这个函数会在每一帧中进行一次操作。这里,我们需要定义一个动作来控制游戏中的按钮。对于 Sonic the Hedgehog 游戏来说,有12个按钮可供我们使用。

action = env.action_space.sample()

这里的 env.action_space.sample() 函数可以随机生成一个有效的按钮操作。不过我们先不使用这个函数,而是先用它来测试一下是否能使游戏运行起来。运行以下命令,您会看到一系列的数字,表示随机生成的按钮操作。

print(action)

当按钮操作准备就绪后,我们就可以开始游戏的运行了。

observation, reward, done, info = env.step(action)

设置动作

在游戏中,我们可以通过绘制画面来观察游戏的运行情况。使用 render() 函数可以实现这个功能。

env.render()

这样,您就可以看到 Sonic 在游戏中的动态了。注意,我们当前使用的是随机操作,所以 Sonic 只会随机移动。如果您想直接指定操作,而不是使用随机操作,可以将操作赋给 action 变量,如下所示。

action = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0]

这是一个示例操作,让 Sonic 向右移动。运行以下代码,您可以看到 Sonic 开始向右移动,并在完成三次操作后停止。

for _ in range(3):
    observation, reward, done, info = env.step(action)
    env.render()

观察游戏画面

如果我们想要获取游戏画面作为观察对象,可以使用 observation 变量来实现。打印出 observation,您将得到游戏画面的形状信息。

print(observation.Shape)

在 Sonic 游戏中,游戏画面的形状为 2243203,其中 224 表示高度,320 表示宽度,3 表示颜色通道数。接下来,我们可以打印出其他与游戏相关的信息,比如回报值、游戏是否结束等等。

print(reward)
print(done)
print(info)

更改奖励机制

在游戏中,我们可以通过修改奖励机制来调整游戏的难度。在 Sonic 游戏中,默认的奖励机制是根据得分来计算的。我们可以通过修改 Scenario 文件来更改奖励机制。让我们打开 scenario 文件 retro/data/stable/SonicTheHedgehog-Genesis.json,将奖励机制更改为 X。这个奖励机制基于 Sonic 的水平位置。我们将奖励设置为 1,这样 Sonic 将会向右移动,并获得相应的回报。

安装 Python Neat

下一步,我们将安装 Python Neat,用它来运行神经网络。安装命令如下。

pip install neat-python

安装完成后,我们可以开始使用神经网络了。

使用神经网络

使用神经网络是获取 Sonic 的操作指令的一种常用方式。神经网络会输出一个包含12个按钮的操作向量。您可以根据神经网络的输出来控制 Sonic 的移动。这里只是简单介绍了一下神经网络的使用方式,具体的实现过程将在下一集中展开。

结论

在本教程中,我们学习了如何使用 OpenAI Retro 和神经网络来玩转 Sonic the Hedgehog。从设置环境到运行游戏,再到使用神经网络进行操作,我们逐步掌握了整个过程。希望这个教程对您有所帮助,并能够激发您继续深入学习的兴趣。在下一集中,我们将学习如何使用 Python Neat 运行神经网络,并进一步优化 Sonic 的操作。请继续关注!

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.