【人工智能】博弈搜索(极小极大值、α-β剪枝)

1. 极小极大值算法

人工智能中 "博弈" 通常专指博弈论专家们称为有完整信息的、确定性的、轮流行动的、两个游戏者的零和游戏(如国际象棋)。术语中,这是指在确定的、完全可观察的环境中两个 Agent必须轮流行动,在游戏结束时效用值总是相等并且符号相反。例如下国际象棋,一个棋手贏了,则对手一定是输了。正是 Agent 之间效用函数的对立导致了环境是对抗的。

博弈的游戏通常被 AI 作为一个好的问题来进行研究主要是因为:

  • 玩家需要向人一样的智慧
  • 游戏可能非常复杂(如象棋、围棋)
  • 需要在一定的时间限制内做出决策
  • 游戏是容易被定义的而且可以重复
  • 游戏完全可观察并且有有限的环境
  • 可以直接将人与AI进行比较

以井字棋为例我们可以得到下面的博弈树:

通过以上博弈树可以得知游戏的终止会有两种结果MAX得到+1,MIN就会是-1,MAX是-1,MIN就会是+1,也就是一名玩家最大化结果,另一名玩家的结果就会最小。

假设两个玩家(MAX为计算机、MIN为其对手)都发挥最佳效果,那么在计算机移动后,对手将选择最小化(但对于对手来说是最有利的操作)的移动,由此可得计算机应在考虑其移动和对手的最佳移动的情况下选择最佳移动,如下图所示:

如上图所示计算机在根节点有四种选择方式,每种选择之后其对手又有不同种选择方式,在其对手选择完成后就会进入终止状态产生结果,计算机 (MAX) 为确保自己所获利益最大,应当选择B、C、D、E中最大的值,因为对手 (MIN) 总会选择对自己最有利的决策,所以B值的由来是F、G中的最小值、C的由来是H、I、J的最小值,由此就可以得到了极小极大值的算法,极小代表的是在计算机 (MAX) 决策后其对手 (MIN) 总会选择对于计算机 (MAX) 来说获利最小的操作,极大值代表的是计算机 (MAX) 需要在所有的决策中(所有的极小值中),选择最大的值,通过以上分析可得运用递归的方法是比较容易实现以上操作的,具体伪代码如下:

cpp 复制代码
function MINIMAX_DECISION(state) returns an action
	inputs: state,current state in game
	return the a in Actions(state) maximizing MIN-VALUE(RESULT(a,state))

function MAX-VALUE(state) returns a utility value
	if TERMINAL-TEST(state) then return UTILITY(state)
	v = -∞
	for a,s in SUCCESSORS(state) do 
		v = MAX(v,MIN-VALUE(s))

function MIN-VALUE(state) returns a utility value
	if TERMINAL-TEST(state) then return UTILITY(state)
	v = ∞
	for a,s in SUCCESSORS(state) do 
		v = MIN(v,MAX-VALUE(s))

从如上代码中可以得到 MAX-VALUE 函数与 MIN-VALUE 函数相互调用,通过深度优先搜索与逆向的归纳实现了极小极大值算法流程。

2. α-β剪枝

假设有如下博弈搜索树:

其正常的深搜顺序如下所示:

但根据极小极大值算法来看,我们发现有些搜索是没有必要进行的,请看以下分析:

查看上图得知,MAX已完成了对第一个子节点的搜索,此时 MAX 在未搜索到其它节点的情况下的选择应该是大于等于3的 (目前所得到的极小极大值为3)。

继续对第二个子节点进行搜索,但在第二个子节点的孩子节点搜到 2 时,我们就得知第二个子节点的值只会 ≤2 ,比第一个节点的值要小,因为我们要在所有子结点中选择最大值,因此在搜完第二个子节点的 2 节点之后,第二个子节点的孩子节点就没有搜索的必要了。

但如果在搜索第三个节点时搜索到了值为 14 的节点,剩余的节点是还要继续搜索的,因为我们不知道第三个子节点的最小孩子节点是多少,所以需要继续搜索。

以上过程只是展示了 MAX 在搜索中的剪枝过程,同理我们也可以得到 MIN在搜索时,也可以利用同样的优化方案,此时我们就可以得到 α-β 剪枝的伪代码:

cpp 复制代码
function ALPHA-BETA-SEARCH(state) returns an action
	v = MAX-VALUE(state,-∞,+∞)
	return the action in ACTIONS(state) with value v

function MAX-VALUE(state,α,β) returns a utility value
	if TERMINAL-TEST(state) then return UTILITY(state)
	v = -∞
	for each a in ACTIONS(state) do
		v = MAX(v,MIN-VALUE(RESULT(s,a),α,β))
		if v ≥ β then return v
		α = MAX(α,v)
	return v
	
function MIN-VALUE(state,α,β) returns a utility value
	if TERMINAL-TEST(state) then return UTILITY(state)
	v = +∞
	for each a in ACTIONS(state) do
		v = MIN(v,MAX-VALUE(RESULT(s,a),α,β))
		if v ≤ α then return v
		β = MIN(β,v)
	return v

其中 α 表示到目前为止路径上发现的 MAX 的最佳 (即极大值) 选择,β表示到目前为止路径上发现的 MIN 的最佳 (即极小值) 选择。

相关推荐
SickeyLee1 小时前
产品经理的成长路径与目标总结
大数据·人工智能
叫我:松哥1 小时前
python案例:基于python 神经网络cnn和LDA主题分析的旅游景点满意度分析
人工智能·python·神经网络·数据挖掘·数据分析·cnn·课程设计
2202_756749692 小时前
01 基于sklearn的机械学习-机械学习的分类、sklearn的安装、sklearn数据集及数据集的划分、特征工程(特征提取与无量纲化、特征降维)
人工智能·python·机器学习·分类·sklearn
SoFlu软件机器人2 小时前
飞算科技:以原创之力,开启Java开发新纪元与行业数智变革
人工智能·科技
沫儿笙2 小时前
OTC焊接机器人节能技巧
大数据·人工智能·机器人
西柚小萌新3 小时前
【人工智能agent】--服务器部署PaddleX 的 印章文本识别模型
人工智能
金融小师妹3 小时前
AI量化模型解析黄金3300关口博弈:市场聚焦“非农数据”的GRU-RNN混合架构推演
大数据·人工智能·算法
NewCarRen3 小时前
数据驱动的自动驾驶虚拟测试方法
人工智能·机器学习·自动驾驶
金融小师妹3 小时前
基于LSTM-GRU混合网络的动态解析:美联储维稳政策与黄金单日跌1.5%的非线性关联
大数据·人工智能·算法
海岸线科技3 小时前
汽车供应链PPAP自动化审核指南:如何用AI实现规则精准匹配与文件智能校验
人工智能·自动化·汽车