我知道机器如何学习玩 Atari 游戏(Breakout):Playing Atari with Reinforcement Learning。使用同样的技术,甚至可以玩 FPS 游戏(Doom):Playing FPS Games with Reinforcement Learning。进一步的研究甚至调查了多智能体场景(Pong):深度强化学习的多智能体合作与竞争。
在深度强化学习的背景下,对于感兴趣的用户,甚至还有另一篇很棒的文章(简单且初学者必读):Demystifying Deep Reinforcement Learning。
我对这些结果感到兴奋,并立即想在一些简单的“棋盘/纸牌游戏场景”中尝试它们,即为一些简单的游戏编写 AI 以了解更多关于“深度学习”的知识。当然,认为我可以在我的场景中轻松应用上述技术是愚蠢的。以上所有示例均基于卷积网络(图像识别)和其他一些假设,可能不适用于我的场景。
我有两个主要问题。
如果你有一个纸牌游戏并且 AI 应该从它的手上打出一张牌,你可以将这些牌(以及其他东西)视为当前的游戏状态。您可以轻松定义某种神经网络并将卡片数据提供给它。在一个微不足道的情况下,卡片只是编号。我不知道适合的网络类型,但我想深度强化学习策略可以很容易地应用。
但是,如果手牌数量不变,我只能想象这一点。在上述示例中,例如,像素的数量也是恒定的。如果玩家可以拥有不同数量的牌怎么办?如果玩家可以拥有无限数量的牌,该怎么办?当然,这只是一个理论问题,因为没有游戏有无限数量的牌。
在最初的例子中,动作空间是恒定的。如果行动空间不是,你能做什么?这或多或少源于我之前的问题。如果你有 3 张牌,你可以打牌 1、2 或 3。如果你有 5 张牌,你可以打牌 1、2、3、4 或 5 等。这在纸牌游戏中也很常见,即不允许打牌。可以用负奖励来解决这个问题吗?
那么,可以使用哪些“技巧”,例如始终假设具有“填充值”的卡片数量恒定,这仅适用于非无限情况(无论如何都不现实,甚至人类也无法很好地玩)?是否有文章已经研究过这些事情?