简介: 该项目基于强化学习,训练蛇吃环境中存在的食物。
下面给出了一个示例 gif,您可以了解我们将要构建的内容。
AI驱动的蛇
要了解我们如何使用 pygame 手动构建这个蛇 2D 动画模拟,请点击链接:
在构建基本的蛇游戏之后,现在我们将专注于如何将强化学习应用于它。
我们必须在这个项目中创建三个模块:
- 环境(我们刚刚构建的游戏)
- 模型(移动预测的强化模型)
- 代理(环境和模型之间的中介)
模块链接
算法:
我们在棋盘上随机放置了蛇和食物。
- 使用 11 个值计算蛇的状态。如果有任何条件为真,则将该值设置为0,否则设置1。
如何定义 11 个状态
基于当前的 Head 位置代理将计算 11 个状态值,如上所述。
-
获得这些状态后,代理会将其传递给模型并执行下一步操作。
-
执行下一个状态后计算奖励。奖励定义如下:
- 吃食物:+10
- 游戏结束:-10
- 其他:0
-
更新 Q 值(稍后将讨论)并训练模型。
-
在分析了算法之后,现在我们必须建立思想来继续编码这个算法。
该模型:
神经网络模型
该模型是使用 Pytorch 设计的,但您也可以根据自己的舒适度使用 TensorFlow。
我们正在使用具有11 大小输入层和具有 256 个神经元和3 个神经 元 输出的 密集层的密集神经网络 。 您可以调整这些超参数以获得最佳结果。
模型如何工作?
- 游戏开始,Q值随机初始化。
- 系统获取当前状态 s。
- 它基于 s,随机或基于其神经网络执行一个动作。在训练的第一阶段,系统经常选择随机动作来最大化探索。后来,该系统越来越依赖其神经网络。
- 当 AI 选择并执行动作时,环境会给予奖励。然后,代理到达新状态并根据贝尔曼方程更新其 Q 值。
<