OpenAI 的 Gym 和 Universe 在棋盘游戏领域有多强大?

人工智能 强化学习 开放式 健身房
2021-10-27 05:54:05

我是电脑棋盘游戏的忠实粉丝,我想制作 Python 国际象棋/围棋/将棋/曼卡拉程序。听说过强化学习,我决定看看 OpenAI Gym。

但首先,我想知道,是否有可能使用 OpenAI Gym/Universe 来创建一个几乎与 Stockfish 一样强大的国际象棋机器人,并创建一个与 AlphaGo 一样出色的围棋机器人?

OpenAI值得学习吗?

1个回答

OpenAI 的 Gym 是一个标准化的 API,可用于强化学习,适用于一系列有趣的环境,您可以轻松地免费访问其中的许多环境。它使用起来非常简单,如果您想使用 Python 进行任何深度的 RL 练习,IMO 值得学习。您可以使用它来确保您对 Q 学习等基本算法有很好的理解,独立于并且在您考虑在棋盘游戏环境中使用 RL 之前。

在处理多个代理时,Gym 和 Universe 存在限制。API 的设计并没有真正考虑到这一点。例如,没有简单的方法可以将两个代理添加到环境中,您必须编写一个新环境并在其中附加一个相反的代理。这仍然是可能的,并且不一定是一个糟糕的想法(这取决于您要调查的训练设置)。

如果你想研究经典的两人游戏,并编写像 AlphaGo 和 Stockfish 这样的机器人,那么我会指出:

  • 玩游戏的机器人经常大量使用可以询问未来潜在游戏状态的计划。OpenAI 的 Gym 不会阻止你这样做,但它没有任何帮助。

  • AlphaGo 的算法是公开的,有很多不错的教程在大多数情况下,遵循其中之一并开发自己的机器人训练代码会比尝试将 OpenAI 解决方案适应单代理游戏更快。

  • 对于任何游戏,您可以找到的最大的节省时间可能是为您实施棋盘、棋子和游戏规则的规则引擎。如果 Gym 已经为您希望机器人玩的游戏提供了游戏环境,则可能值得检查 Gym 代码以查看其集成的内容,然后尝试自己使用相同的库,但不要直接使用 Gym 环境。

  • 许多体面的游戏算法根本不使用 RL。您可以将它们中的大多数构建为搜索(寻找最佳移动)加上启发式(评级移动或位置),并且通常可以为执行每个子任务的算法做出独立的选择。您可以应用 RL 让机器人学习游戏启发式,然后使用更传统的搜索(例如negamax)在游戏过程中做出决策。或者您可以使用任何您喜欢的游戏分析来生成启发式方法。非常简单的游戏,例如井字游戏(英国的 noughts 和 crosss),如果 X 获胜,则启发式为 +1,如果 O 获胜,则为 -1,否则为 0,并且仍然可以通过极小极大搜索来快速解决完美玩。

  • DeepMind 的 AlphaGo 使用MCTS的变体进行搜索算法,这可以被认为是一种 RL 技术,但那里的定义有点模糊 - 可以更安全地说 AlphaGo 将 MCTS 作为选择的搜索技术用于两个自我对弈训练和积极对抗任何其他对手。