我如何构建玩 Whot! 纸牌游戏的 AI 模型
Source: Dev.to

Problem Statement
任务是构建一个实用的 AI 模型,使其能够在人类水平上玩 Whot! 纸牌游戏。
Whot! 是技巧与运气的结合:技巧在于你是否懂得如何有效利用手中的牌,运气则在于你是否比对手更幸运地抽到更多有利的特殊牌。
Introduction
随着人工智能的不断进步,似乎几乎没有什么是 AI 不能影响的。
我们希望构建一个可以面向公众部署的 AI 模型,具备玩 Whot! 纸牌游戏的能力。这个愿景孕育了 Whot! AI。
该项目也可用于揭开 AI 的神秘面纱。你可能认为 AI 是遥不可及、庞大的存在,但其实你可以自己构建 AI。如果你稍微学习一下统计学,那么机器学习(AI 的一个子集)就类似于使用已有数据集和你的统计知识来预测未来。例如,在某些条件下价格为 $1000,那么在新条件下价格会如何变化?
Whot! AI
全新的 Whot! AI 是一个能够玩 Whot! 纸牌游戏的模型。该模型采用一种称为 强化学习 (Reinforcement Learning, RL) 的机器学习方法进行训练。
- 强化学习让 AI 代理接触环境,并通过直接与环境交互来学习。
- 这是一种 无监督 的学习方式,不需要标记数据进行训练。
在典型的监督学习中,我们会收集带标签的数据(即我们知道数据的提问和答案)。例如,我们可能会问:
- 这只动物体重是否很小?
- 它有胡须吗?
- 它有长尾巴吗?
- 它的脸是圆形还是椭圆形?
- 它的体重是多少千克?
通过回答这些问题,我们可以构建一个模型,将动物图像分类为狗或猫。当我们拥有足够的数据时,这种方法效果良好;否则,构建可信的 AI 模型就会非常困难。
对于像 Whot! 这样的规则驱动游戏,收集此类数据在实际操作中几乎不可能,使用传统监督学习来训练一个 100 % 正确遵守规则的 AI 也是不可行的。
如果叫牌是 Circle 7,而模型预测出 Star 7,则游戏规则被破坏。因此,监督学习并不适用于此类应用。
Source: …
强化学习与 Whot! AI
这个障碍可以通过强化学习来突破!2016 年,AlphaGo 由 Google DeepMind 使用强化学习(RL)开发,击败了世界冠军李世石。强化学习不仅应用于游戏,还用于金融(例如欺诈检测)和机器人技术。
强化学习的一大美妙之处在于,我们不需要告诉智能体如何去做某件事;只需告诉它要实现什么目标,它会自行学习如何实现。
工作原理
- 环境 – AI 智能体被放置在一个环境中(例如 Whot! 游戏)。
- 状态 – 环境的当前情况(例如当前的叫牌、抽牌堆的大小、你的手牌数量、对手的手牌数量)。
- 动作 – 在给定状态下“正确”或最合适的操作。
示例
如果叫牌是 Pick Two,且你手中有一张 Pick Two 卡,则有两种有效动作:
| 动作 | 描述 |
|---|---|
| 1 | 打出一张 Pick Two 卡进行防守。 |
| 2 | 从抽牌堆抽两张牌。 |
这些动作会产生 状态价值 和 状态-动作价值 函数。我们的目标是推导出一个策略,记作 π(Pi),它将给定的状态映射到一个动作。一旦拥有这样的策略,就可以构建一个能够玩 Whot! 的 AI。
最初,AI 可能不知道任何状态的正确动作,因此它可以随机采取合法动作。随着时间推移,它会停止随机行动,转而选择能够最大化奖励的动作。这个过程会构建一个 Q 表(可以把它想象成数据库表),智能体在需要行动时会查询该表。对于任意状态,它会查找奖励最高的动作。
当状态空间变得庞大且连续时,Q 表会失效,这时我们采用 Q 网络 方法,利用深度学习。Q 网络相比静态表能够更好地进行泛化。
奖励设计
核心思路是设计一个奖励函数,引导智能体的学习过程:
- 正向奖励(例如 +1)——当智能体采取了好的动作时给予,例如在拥有 Pick Two 卡时防守 Pick Two。
- 负向奖励(例如 ‑1)——当智能体采取了不好的动作时给予,例如本可以防守却抽了两张牌。
这些奖励就像反馈:“好孩子!你做得很好!”对应正向动作,而对负向动作则是温和的“不要”。
Whot! 的强化学习
代理在每一步后会收到 奖励(正向)或 惩罚(负向)。它的学习策略通过 Bellman 方程 进行更新。代理不断进行游戏,获取反馈,并改进其策略。此过程可以重复 10 000 个回合 或更多。
对于随机的 Whot! 游戏,模型训练了 50 000 个回合。在训练期间,代理学会:
- 避免会产生负向奖励的动作。
- 偏好会产生正向奖励的动作。
在训练回合结束后,代理应能够以最优方式与游戏环境交互。
示例:机器人强化学习
考虑训练机器人 跟随领舞者的舞步:
- 人类舞者(领舞)执行一个动作(例如,举手)。
- 机器人最初随机做出一个动作。
- 如果机器人的动作 与 领舞者 不匹配,它会收到 负向奖励。
- 如果机器人的动作 与 领舞者 匹配,它会收到 正向奖励。
将此过程重复成千上万次,机器人即可学会正确的舞蹈动作。
传统基于规则的引擎与强化学习
要训练一个 AI 模型来玩 Whot!,我们需要一套游戏规则,这些规则来自 基于规则的引擎。
- 你目前正在玩的 Whot! 游戏本身就是一个基于规则的引擎:规则被显式编程,计算机严格遵循这些规则。
- 我们在训练期间使用该引擎作为对手。RL 代理首先与基于规则的引擎对战,然后与自身对战,通过奖励函数不断积累经验。
训练结果(50 000 局):
| 结果 | 胜利次数 |
|---|---|
| 首先出完所有牌 | 28 315 |
| 通过计数获胜 | 18 095 |
| 总计 | ≈ 46 410(≈ 92 % 胜率) |
AI 代理的表现超越了训练它的基于规则的引擎,表明它已经学习到了比手工构造的对手更深层的模式和策略。传统引擎是一个强大的对手——它会显式计算出在最长连胜中应出的最佳牌(例如 HoldOn、Suspension、General Market、PickTwo、Check up!)。能够超越这样的对手,说明该代理具备 泛化 超出工程化规则的能力。
下载并测试模型
您可以通过下载 Android 应用来尝试该模型:
该应用包含:
- 传统的基于规则的引擎(经典电脑对手)。
- 通过蓝牙、Wi‑Fi 和在线模式的多人游戏支持。
我们希望您以全新的方式享受 Whot!。请试玩、评分并撰写评论。谢谢!
开发者专用
-
Training notebook:
-
Card image‑recognition notebook:
