像AlphoGo一样应用强化学习进行游戏对战

我们可以训练AI在游戏中打败人类 , 可能是因为它很有趣 , 正好如AlphoGO一样
像AlphoGo一样应用强化学习进行游戏对战
文章图片
您是否曾经想玩战锤 , 但发现设置游戏并与其他玩家一起玩太费力了?您是否希望自己可以一遍又一遍地与AI对战 , 磨练自己的技能并尝试其他策略?本文将展示这一切 。
强化学习——它是什么?
视频游戏AI等控制任务最著名的训练方法是强化学习 。 强化学习 , 简称RL , 是一种深度学习技术 , 其中多个代理在竞争环境中执行任务 。 随着时间的推移 , 这些代理会得到奖励和强化 , 以诱导所需的行为 。 有了足够的计算能力和结构良好的奖励方案 , 就会出现令人难以置信的行为 。
像AlphoGo一样应用强化学习进行游戏对战
文章图片
这与监督学习大不相同 , 监督学习将大量标记数据输入机器学习模型 , 并将输出与真实情况进行比较 。 游戏AI代理在如此动态的环境中运行 , 几乎不可能生成和标记如此大量的数据 , 更不用说理解它了 。 不断变化的输入会影响短期和长期规划 , 而强化学习提供了完成工作的工具 。
对于任何强化学习项目的成功 , 所有数据科学的一般原则都适用:
?大量好的数据会产生更好的结果;
?模拟的质量对于代理学习任何事物都至关重要;
?不惜一切代价避免偏差;
?如果某个信号对问题很重要 , 请直接输入 , 当可以加快速度时 , 不要等待AI发现某些东西;
?较新的神经网络拓扑、训练技术或其他方法会有所帮助 , 但归根结底 , 好的、经过处理的数据将获得更好的结果 。
那么 , 我们将如何做到这一点?
Gym是一个RL框架——本质上是一组常见的API , 大多数流行的深度学习模型都可以插入其中 。
它的明确目的是创建进行强化学习的标准虚拟环境 。 这方面的一些例子包括Atari游戏、平衡摆、国际象棋环境等等 。
OpenAIGym非常简单 。 从本质上讲 , 它是一个框架 , 可以轻松构建或使用标准环境 , 因此我们可以衡量不同ML模型在同一任务上的执行情况(基准测试) 。 我们程序的顶层将继承基础Environment类 , 并且未来的某一天将被世界上每个人工智能研究人员所消耗 。
另外 , 需要朋友的40k玩家 。
量化状态
游戏的整个状态需要存储 , 通过动作更新 , 然后再次输入我们的强化学习代理 。 这在OpenAIGym世界中被称为观察——观察被反馈到模型中以了解刚刚发生的事情 。 这意味着我需要模拟与游戏玩法相关的所有内容——棋盘的大小、地形的位置、模型底座的大小、剩余的伤口、模型是否是车辆、是否会爆炸等等 。
像AlphoGo一样应用强化学习进行游戏对战
文章图片
为了让Gym代理能够理解数据 , 必须使用Spaces对其进行结构化 。 空格是框架可以理解的标准类型 。 它们基本上归结为:
?离散值(枚举或整数)
?盒子(N维空间 , 连续或离散)
?布尔值
?将上述类型组织成有意义的块的方法 , 例如字典和元组
我想存储的游戏状态是分层的、面向对象的模式 , 其中每个不同的项目都包含在一个对象中 。 我目前的计划是开发我自己的Warhammer40k引擎(目前正在开发中 , 将在后续文章中进行概述) , 并简单地维护一个翻译层 , 其中包含我自己的动态模式与固定sch的任何差异OpenAIGym使用的ema 。
步骤和操作类型
Gym环境最重要的功能是step() 。 代理调用step()告诉程序使用它的动作、模拟结果并更新观察结果 。
step()是时间上的单个步骤 , 即动作之间的时间段 。 给定代理的指定动作 , 这是真正的战锤40k游戏进行的地方 。

相关经验推荐