对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】

  本节这里我们讨论的是确定的、完全可观测、序贯决策、零和游戏下的对抗搜索。

  所谓零和博弈是博弈论的一个概念,属非合作博弈。指参与博弈的各方,在严格竞争下,一 方的收益必然意味着另一方的损失,博弈各方的收益和损失相加总和永远为“零”,双方不存在 合作的可能。

  对抗搜索(Adversarial Search)一般指的是博弈双方会阻止对方收益最大化,也称为博弈搜索(Game Search)。在博弈游戏中经常会碰到,比如围棋这种零和游戏。智能体(agents)之间通过竞争实现相反的利益。

  对抗搜索主要有三种:最大最小搜索(Minimax Search)、Alpha-Beta剪枝搜索(Pruning Search)和蒙特卡洛树搜索(Monte-Carlo Tree Search)。

最小最大搜索

  最小最大搜索是在对抗搜索中最为基本的一种让玩家来计算最优策略的方法.。在开始之前我们需要定义如下基本概念:

对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】_第1张图片

  以Tic-Tac-Toe游戏的对抗搜索 为例,如下图所示:

对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】_第2张图片

  上图中的MAXMIN可以看作是两个对手,MAX希望游戏的终局得分高,MIN希望游戏的终局得分低。其所形成游戏树的叶子节点有9!=362880种。

minimax算法

  那minimax算法大体的工作流程是怎样的呢?我们给出如下例子:

对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】_第3张图片

  如果最后一排是终止节点,那么MIN则会选择其中最小的数值,如上图中红色框中所选择出来的数值。而MAX会从MIN选择最小的数值之后从中选择一个最大的数值3

  用人话来逻辑理解一下:从最糟糕的情况中选择一个最好的情况。比如让你选择掉100块钱还是50块钱,两种情况都不好,但是你依旧会选择掉50块钱这一个相对来说不那么糟糕的情况。

  在minimax算法里面,MAX会选择后续玩法最大的一种玩法。而MIN会选择后续玩法里面最小的一种玩法。两者轮流竞争。

对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】_第4张图片

  minimax的算法非常简单有效的对抗搜索算法,如果计算资源足够的话,这种算法可返回最优结果。但是就是这个计算资源可能会导致在对一些复杂的情况下无法穷举,无法在有效时间内返回结果。

  由此后人改进提出了:用alpha-beta pruning算法来减少搜索节点;或者对节点进行采样、而非逐一搜索 (蒙特卡洛树搜索)。

alpha、beta剪枝搜索

  一种对最小最大搜索进行改进的算法,即在搜索过程中可剪除无需搜索的分支节点,且不影响搜索结果。该算法需要尽量去剪除那些不用搜索的节点。

  那如何来剪枝呢?

对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】_第5张图片

  如上图所示,假设我们已近搜完了 B B B节点,得到其最小收益为3,然后开始搜 C C C节点,当搜到2的时候,剩下的两个46就没有必要搜索下去了,因为不管接下来搜到什么,整个 C C C得出来的结果都会比 B B B的结果3要小。

  可以看出,如果对于一颗非常巨大的树来说,如果可以剪枝一部分对搜索结果没有影响的分支,将会大大提高搜索的效率。

  整个的搜索流程可展示为下图所示过程:

对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】_第6张图片

  那alphabeta剪枝搜索中的AlphaBeta又是什么呢?

  • Alpha值 α \alpha α:假设 n n nMIN节点,如果 n n n的一个后续节点可提供的收益小于 α \alpha α,则 n n n及其后续节点可被剪枝。因为你是MIN节点,搜到一个更小的节点对手不会这么干,所以没必要搜索下去。
  • Beta值 β \beta β:假设 n n nMAX节点,如果 n n n的一个后续节点可获得收益大于 β \beta β,则 n n n及其后续节点可被剪枝。因为你是MAX节点,搜到一个更大的节点虽然你自己很喜欢,但是对手也不会让你这么干的。

  每个节点有两个值,分别是 α \alpha α值和 β \beta β值。节点 α \alpha α β \beta β值在搜索过程中不断变化。其中 α \alpha α从负无穷大逐渐增加、 β \beta β从正无穷大逐渐减少,如果一个节点中 α > β \alpha > \beta α>β,则该节点的后续节点可剪枝。

对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】_第7张图片

  • Alpha、Beta剪枝算法伪代码

  AlphaBeta剪枝算法的伪代码如下图所示:

对抗搜索之【最大最小搜索】【Alpha-Beta剪枝搜索】_第8张图片

  • 剪枝本身并不会影响算法输出结果。节点先后次序会影响剪枝效率。

我的微信公众号名称:深度学习先进智能决策
微信公众号ID:MultiAgent1024
公众号介绍:主要研究深度学习、强化学习、机器博弈等相关内容!期待您的关注,欢迎一起学习交流进步!

你可能感兴趣的:(博弈论)