【问题标题】:Tree search based Game AI: How to avoid AI 'wandering'/'procrastination' with sparse rewards?基于树搜索的游戏 AI:如何通过稀疏奖励避免 AI“徘徊”/“拖延”?
【发布时间】:2018-11-13 11:52:24
【问题描述】:

我的游戏 AI 使用了一种算法,该算法根据我可以做出的动作搜索所有可能的未来状态(极小极大 / 蒙特卡罗式)。它使用评分系统评估这些状态,选择得分最高的最终状态并遵循它。

这在大多数情况下都很有效,但在奖励稀少的情况下效果很差。例如:在我右侧 3 个格子上有一个可取的收藏品。自然的解决方案是向右->向右->向右。

但是,我的算法搜索深度为 6。它会找到许多最终收集对象的路径,包括需要超过 3 圈的路径。例如,它可能会找到一条路径:up->right->down->right->right->down,而不是在第 5 回合收集对象。

由于在这两种情况下,最终的叶节点都将对象检测为已收集,因此它自然不会偏爱其中一个。因此,不是在第 1 弯向右走,而是向上、向下或向左走。这种行为会在下一回合准确地重复,因此它基本上会在可收集的物体前随机跳舞,只有运气才会让它踩到它。

这显然不是最理想的,我想修复它,但已经没有如何妥善处理这个问题的想法了。有没有解决这个问题的方法,或者有没有处理这个问题的理论工作?

我尝试过的解决方案:

  • 使其在较早的回合中更重视对象集合。虽然这有效,但要击败评估者的“噪音”,转弯之间的差异必须非常高。回合 1 的评级必须高于 2,回合 2 的评级必须高于 3,等等。回合 1 和 6 之间的差异必须如此之大,以至于最终导致行为极度贪婪,这在大多数情况下是不可取的。在有多个对象的环境中,它最终可能会选择在第 1 回合抓取对象的路径,而不是在第 5 回合和第 6 回合抓取对象的更好路径。

  • 将对象指定为目标并确定其距离。如果不逐个进行,原始问题仍然存在。如果在轮到轮的基础上完成,每轮所需的重要性差异再次使其过于贪婪。这种方法也会降低灵活性并导致其他问题。目标选择不是微不足道的,并且有点破坏了极小极大风格算法的意义

  • 在我的搜索中进行更深入的搜索,以便它总能找到第二个对象。这将花费如此多的计算能力,以至于我不得不做出让步,比如更积极地修剪路径。如果我这样做,我会回到同样的问题,因为我不知道如何让它更喜欢修剪 5 回合版本而不是 3 回合版本。

  • 为上一回合制定的计划提供额外的价值。如果它至少可以遵循次优路径,那么就不会有那么大的问题。不幸的是,这再次必须是一个非常强大的效果,它才能可靠地工作,使其在所有情况下都遵循次优路径,从而损害整体性能。

【问题讨论】:

    标签: artificial-intelligence minimax game-ai monte-carlo-tree-search


    【解决方案1】:

    在衡量移动最后一步的结果时,您是否计算了拾取物体所需的移动次数?

    我想,您正在量化移动动作的每个步骤,如果该步骤导致拾取物体,则给出 +1。这意味着在 3 步中,我可以用你上面的例子拿起物体,并获得游戏场的 +1 状态,但我也可以用 4-5-6-x 步来做到这一点,获得相同的 +1状态。如果在您搜索的深度内只能到达一个对象,您的算法可能会选择随机 +1 状态之一,从而为您提供上述行为。

    这可以通过用负分量化人工智能必须做出的每一个动作来解决。因此,在 3 次移动中获取对象将导致 -2,但在 6 次移动中获取对象将导致 -5。这样,AI 就会清楚地知道,最好以最少的移动量(即 3 次)获得对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      相关资源
      最近更新 更多