这涉及应用程序形式的一组有限的、非平凡的、组合游戏[M]。可以在此处找到示例游戏。
因为这是一个大众市场的产品,我们不能占用太多的空间,并且人工智能需要能够在本地运行,因为不能假设连接。Android 内核的当前大小为 < 7MB。
目标不是纯粹的 AI 实力,而是可敬的 AI 实力,足以击败高于平均水平的人类玩家。(当前最强、最弱的自动机,使用一些启发式方法,已经能够击败普通人类玩家。)
因为游戏是有限的,所以游戏树最终变得易于处理,允许完美的残局。资源窃取策略和陷阱避免也可以在所有阶段通过浅前瞻来实现,自动机比人类更容易识别这些模式。
在这种情况下,强化将主要用于“将自动机调整为人类玩家的风格”,并在不同的设备上生成不同的自动机,随后它们可以作为人类伙伴的代理相互对抗。
游戏数据可以有效地存储,最初每个位置只需要 2 个字节(值 0-9 和坐标 1-81,尽管坐标的数量会在基本游戏扩展中增加,并且对于较大顺序的游戏板需要 2 个字节,例如作为“武士”数独。)因此,给定游戏的第一个回合只需要 2 个字节,第二个回合字节等,在 81 个单元的游戏板上最多需要 50 到 70 个回合。此外,因为它是一个方形网格,我们可以减少对称性。但即使平均转数为 50,对于 200MB 的游戏,也只有大约 40,000 个游戏。
- 加权开口
我的感觉是,加固将有助于增加开口的重量。如果游戏数据是一个字符串,这些字符串可以进行比较,样本量越小(包含的回合数越少),连接就越多。在这种情况下,顺序无关紧要,只有给定转弯的一组值/坐标。可以使用抽象,因为某些单独的值/坐标是可互换的。我的想法是自动机可以根据以胜利的形式导致理想结果的频率来衡量空缺。
- 加权启发式
由于我们通过启发式获得了良好的初步结果,并且这些是最有效的决策方法,因此我正在考虑对评估函数进行加权,以便某些启发式在不同条件下具有优先权。 (例如,何时扩张与何时整合。何时做出具有直接利益的选择而不是具有长期利益的选择。引入修改基础战略的元战略。)
- 数据库修剪
因为分配的卷将被封顶,所以当信息不再相关时,可能需要“修剪”数据库。(例如,当一个新的策略出现使以前的策略过时。)我们可能还需要一种方法来帮助自动机识别这种情况,因此它不会在不开始尝试的情况下坚持超过两个游戏的潜在过时策略备择方案。
问:在这些限制下,强化学习能否有意义地应用于这些目标?
问:我接近这个的倾向是有用的还是有问题的?
问:有没有我没有考虑过的方法可以在这些限制下适用?