强化学习 五子棋算法

本文深入探讨了在五子棋游戏中应用强化学习算法,主要讲解了蒙特卡洛树搜索(MCTS)、UCT算法、Minimax算法与纳什均衡、alpha beta剪枝以及估值函数。通过这些方法,可以有效地减少计算复杂度,提升AI决策的效率和质量。
摘要由CSDN通过智能技术生成

本文会以AI五子棋展开,讲解一些强化学习中博弈方向的算法。
全文只涉及算法讲解,不会展现代码。

蒙特卡洛树搜索 MCTS

随着计算机算力的发展,利用随机采样的样本值来估计真实值的蒙特卡洛方法 (Monte Carlo method) 得到了充分的发挥与利用。

以随机采样估计π的大小
如上图用蒙特卡洛方法以模拟面积比例,达到求出π的近似值的目的。

以五子棋举例,在不考虑任何其他算法与规则的情况下,我们在一个棋局的空位黑白交替随机落子,直至其中一方获胜或满棋盘。在这样的随机尝试中我们会记录双方胜负并在有足够大量的数据时依据胜率评价其中的每一步。这样的算法好处巨大,它可以在理想情况下求出每一步的理论最大胜率解。

蒙特卡洛树搜索 (The monte carlo search tree) 又称随机抽样或统计试验方法,属于计算数学的一个分支。在蒙特卡洛方法的基础上,我们利用树结构来更加高效的进行结点值的更新和选择。

蒙特卡洛树搜索算法

一般来说,蒙特卡洛树搜索会有一个根结点。像这样的根结点会有模拟后续选择的子结点若干个。
蒙特卡洛树搜索
以五子棋为例,若以正中的H8位为根结点,棋盘大小为15 * 15,那么根结点的后续子结点就会有15 * 15 - 1个。五子棋盘
若是随机落子,那么这15 * 15 - 1中的某一个子结点会继续被分配15 * 15 - 2个子结点。在棋局结束时,我们会利用反向传播将结果返回各个参与结点,并以胜率评价该结点。随着数据量的增加,每一步棋(每个结点)的胜率会被更加完善。

看起来已经大功告成,不过,这样下来,我们的空间和时间复杂度会随着回合数n变得越来越高,节点个数会达到接近 22 5 n 225^n 225n. 这样的算法明显需要耗费极大的计算空间。所以,我们将要用到UCT算法及基于minimax算法的alpha beta剪枝来减少结点的个数,同时,我们还可以用到一些小窍门,比如用估值函数来省去不必要的尝试。

上限置信区间算法 UCT

UCT算法(Upper Confidence Bound Apply to Tree)是UCB算法(Upper Confidence Bound)在蒙特卡洛树搜索中的算法。UCB算法的背景起源于一种多臂老虎机(Multi-Armed Bandit),可以追溯到上世纪三十年代。老虎机
多臂老虎机问题描述如下:

  1. 老虎机有K个摇臂,每个摇臂以一定的概率吐出金币,且概率是未知的
  2. 玩家每次只能从K个摇臂中选择其中一个,且相邻两次选择或奖励没有任何关系
  3. 玩家的目的是通过一定的策略使自己的奖励最大,即得到更多的金币

要是你是一个手持筹码的赌徒,如何才能在付出最少的情况下找出回报概率最大的老虎机摇臂?UCB算法很好地解决了这个问题。想象一下,要是我们想要找出高回报的老虎机摇臂,就必须先把所有的老虎机摇臂尝试到一定次数,再根据回报率将回报率高的摇臂的尝试机会加大一些,直到数据足以确定出最高回报率的摇臂。UCB算法公式也就类似于以上的思考方法。

UCB算法公式:

A = V i + C ∗ l n

Meta-Zeta是一个基于强化学习五子棋(Gobang)模型,主要用以了解AlphaGo Zero的运行原理的Demo,即神经网络是如何指导MCTS做出决策的,以及如何自我对弈学习。源码+教程.zip【项目资源】:包含前端、后端、移动开发、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源,毕业设计等各种技术项目的源码。包括C++、Java、python、web、C#、EDA等项目的源码。 【适用人群】:适用于希望学习不同技术领域的初学者或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。 【项目质量】:所有源码都经过测试,可以直接运行。功能在确认正常工作后才上传。 【项目资源】:包含前端、后端、移动开发、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源,毕业设计等各种技术项目的源码。包括C++、Java、python、web、C#、EDA等项目的源码。 【适用人群】:适用于希望学习不同技术领域的初学者或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。 【项目质量】:所有源码都经过测试,可以直接运行。功能在确认正常工作后才上传。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值