• 美文
  • 文章
  • 散文
  • 日记
  • 诗歌
  • 小说
  • 故事
  • 句子
  • 作文
  • 签名
  • 祝福语
  • 情书
  • 范文
  • 读后感
  • 文学百科
  • 当前位置: 柠檬阅读网 > 范文 > 正文

    藏族久棋的一种两阶段计算机博弈算法

    时间:2023-02-17 18:25:05 来源:柠檬阅读网 本文已影响 柠檬阅读网手机站

    李霞丽,陈彦东,杨子熠,张焱垠,吴立成

    (中央民族大学 信息工程学院, 北京 100081)

    藏族久棋是规则复杂且独特的民间棋类运动,是在西北地区“方棋”的基础上,融合汉、藏、蒙古、回族等多民族文化创新发展而形成,兼具竞技性与趣味性[1]。计算机博弈研究的大多数棋盘类游戏具有全局统一的规则,胜负判定规则单一(比如围棋、国际象棋等),藏族久棋明显不同于上述棋盘类游戏。首先,藏族久棋对弈包括布局和战斗2个阶段,每个阶段具有独特的规则;
    其次,藏族久棋的胜负判定有若干种不同的情况。因此,藏族久棋特别适合作为计算机博弈研究的载体,其博弈研究是一个崭新而富有挑战的领域。不同于麻将[2]、德州扑克[3]等非完备信息博弈类游戏,藏族久棋与围棋[4]、国际象棋[5]等属于完备信息博弈类游戏。围棋、国际象棋等学术研究成果较多,而藏族久棋的博弈研究尚处于起步阶段,可供参考的文献较少。

    当前见诸文献的藏族久棋博弈算法包括基于专家知识的方法[6]、小样本机器学习方法[7]、时间差分强化学习算法(time-difference,TD)[8]、不依赖人类专家知识的深度强化学习算法[9]、基于分段评估方法[10]等。藏族久棋博弈研究虽然具有一定的进展,但是存在以下问题:棋谱数据和专家知识匮乏;
    从零开始学习的深度强化学习算法自对弈速度慢、训练效率低;
    博弈智能体的棋力水平不高,落后于人类高级选手。

    针对上述问题,论文提出了藏族久棋的两阶段计算机博弈算法,为布局阶段设计基于卷积神经网络和蒙特卡洛树搜索的自对弈算法,为战斗阶段设计基于领域知识的Alpha-Beta剪枝算法。实验表明,论文提出的两阶段算法具有较强的自学习能力,胜率明显高于全局使用Alpha-Beta剪枝算法,使用该算法的博弈智能体能够战胜人类一段棋手。

    论文的第一部分对藏族久棋规则进行介绍,第二部分对藏族久棋博弈及相关研究进行分析,第三部分介绍用于布局阶段的基于卷积神经网络和蒙特卡洛树搜索的自对弈算法,第四部分介绍用于战斗阶段的基于领域知识的Alpha-Beta剪枝算法,第五部分是实验设计及结果分析,最后是工作总结与展望。

    久棋分为布局和战斗2个阶段,参考西藏藏棋协会使用的全国藏棋比赛规则,藏族久棋的具体规则如下。

    1.1 布局阶段行棋规则

    棋盘由纵横14条等距离且垂直交叉的平行线构成,所形成的196个交叉点是落子的位置。棋盘中央对角线的两端是布局阶段双方落下第一颗子的地方。久棋棋盘如图1所示。棋子分为黑白2种颜色,各98枚。空枰开局,对弈双方各执一色棋子,轮流交替行棋。在布局阶段,白棋先行,对弈双方可以用己方棋子做成久棋阵型,或者破坏对方的阵型。当棋盘布满棋子后,双方按礼仪交换行棋顺序(黑先白后),同时去掉棋盘中央对角线两端的棋子,进入战斗阶段。

    图1 久棋棋盘

    1.2 战斗阶段行棋规则

    行棋方法一:移动棋子,把棋子从一个交叉点移动到相邻的另一个空位交叉点。每次只能在水平或竖直方向上移动一格。

    行棋方法二:跳跃吃子。移动己方棋子,跳过对方的一枚棋子(不能一次跳过两枚或两枚以上对方的棋子),并且吃掉所跳过的对方的棋子。跳跃吃子又可分为单步跳吃和多步跳吃(两步及两步以上跳吃)。多步跳吃可以随时停止,从而使棋子停在对己方最有利的位置。

    行棋方法三:成阵型吃子,移动或跳跃吃子后,己方形成不同类型的久棋阵型。按规则吃掉对方相应数量的棋子后,交换行棋顺序,轮到对方行棋。例:己方形成一个方阵可以吃掉对方任意一枚棋子。形成几个方阵就可以一次性吃掉对方几枚棋子。己方形成一个枪阵可以吃掉对方任意两枚棋子。

    行棋方法四:当对弈双方中的某一方的棋子数小于或等于棋盘路数时,此方的棋子变成飞子。变成飞子的一方,棋子的移动将不受移动步数(一步一格)的限制,而没有成为飞子的一方则仍然受到移动步数的限制。处于飞子的一方若选择跳跃吃子,只能进行多步跳吃,不允许单步跳吃。

    1.3 藏族久棋胜负判定规则

    1) 当对弈双方中的某一方形成2个或2个以上褡裢阵型且对方无方阵时,判对方负。

    2) 当对弈双方中的某一方的棋子数量小于4时,判对方胜。

    3) 对弈双方中的某一方的棋子虽然较多,但不能进行有效的移动,则判对方胜。

    4) 超过比赛所规定的时间,超时的一方判负。

    2.1 藏族久棋博弈研究现状

    基于专家知识的方法[6]从300局藏族久棋比赛数据中提取棋型,使用基于矩阵的匹配方法进行模式识别,根据专家知识设计不同棋型的进攻和防御策略。但由于数据样本少以及专家知识匮乏,所开发的软件棋力仅略高于人类初学者的水平。

    小样本机器学习方法[7]采用小样本数据推理能力强的贝叶斯网络提取棋型,但由于基础棋阵的数量较少,且棋型之间的拓扑结构依赖专家知识、网络节点间的转换概率缺少行棋间的线性关系,棋力提升受到了限制。

    时间差分算法[8]优化了上限置信区间算法(upper confidence bound apply to tree,UCT),并引用时间差分算法进行策略更新,解决了依赖专家知识设计状态转移策略带来的局限性。但因为模型的算法效率较低以及计算资源不足,藏族久棋博弈程序的棋力提升依然不明显。

    混合深度强化学习模型[9]采用混合时间差分算法结合深度神经网络,不依赖人类知识进行了藏族久棋的自对弈训练。该算法减少了搜索次数,提高了学习效率。但由于自对弈训练的效率很低,训练网络所需要的硬件资源严重不足,久棋程序棋力的提升不明显。

    基于分段评估方法的博弈智能体[10]针对久棋规则的特点,提出了分段评估思路,构造了不同阶段的局面评估方法。该方法依赖于人类构造的知识库,缺少程序“学习”的过程。

    针对上述问题,本文设计的博弈智能体程序通过自对弈生成棋局数据,尽量避免花费大量的人力物力采集棋局数据,试图解决棋局数据样本少的难题。采用深度强化学习方法对久棋的布局阶段进行训练,简化网络模型,实现了在普通的笔记本电脑配置条件下快速训练模型,提升了模型的训练效率。对久棋战斗阶段的棋型评估进行优化,使评估值的设置更加合理。本文提出的分阶段藏族久棋博弈算法将深度强化学习与领域知识相结合,在一定程度上实现了藏族久棋博弈智能体程序“学习”和“思考”,提升了藏族久棋博弈智能体的棋力。

    2.2 自对弈和蒙特卡洛树搜索算法研究现状

    自对弈方法和蒙特卡洛树搜索算法已经成为计算机博弈研究中使用的主流且有效的方法。2013年,自对弈方法由DeepMind公司应用在Atari游戏中[11]。2015年,采用自对弈算法的Atari游戏智能体达到了人类玩家的水平[12]。围棋智能系统 AlphaGo[13]、AlphaGoZero[14]使用蒙特卡洛树搜索算法和深度强化学习进行自对弈训练,分别在2016年、2017年获得巨大成功。与AlphaGo相比,AlphaGoZero极大地缩短了训练时间、降低了计算资源消耗并且提升了模型的学习效果,但仍使用了4个张量处理器(tensor processing unit,TPU)来支持其进行模型训练。2018年,AlphaZero[15]采用深度神经网络与强化学习相结合的方式替代了传统的手工编码和领域知识,使用了数千张TPU进行自对弈训练,在与同时期最强的几个专业棋类智能模型对战中均取得了非常高的胜率。Li等[16]提出具有最大平均输出层(maxmiun-average-output,MAO)的卷积神经网络自对弈方法,并将其应用于围棋中,在同等条件下,所开发的围棋智能系统优于使用残差网络(采用的是ResNet18)开发的围棋系统。混合更新深度强化学习自对弈模型[17]将Sarsa(λ)算法以及Q-Learning算法与深度神经网络相结合,提高了模型自对弈训练的效率,应用在藏族久棋对弈中取得了较好的效果。

    星际争霸[18]、德州扑克[19]、麻将[20]、刀塔[21]等游戏基于深度强化学习进行自对弈训练,均取得了令人瞩目的成绩。Zha等[22]将自对弈深度强化学习用于单人纸牌游戏,证明了自对弈方法对于单人纸牌类游戏也能取得良好的效果。

    上述成功的应用先例表明,深度强化学习和蒙特卡洛树搜索应用于藏族久棋博弈研究是可行的。

    藏族久棋对弈分为布局和战斗2个阶段,每个阶段具有不同的规则。本文充分考虑不同阶段的特点,分别为布局以及战斗阶段设计不同的算法,提出了两阶段博弈算法以提高藏族久棋博弈智能体程序的性能。本部分内容介绍布局阶段设计的基于蒙特卡洛树搜索和卷积神经网络的自对弈算法。

    3.1 卷积神经网络

    卷积神经网络(convolutional neural network,CNN)是一种带有卷积结构的深度神经网络[23-24],能够用来学习并提取图像中的特征信息。在AlphaGo Zero中,卷积神经网络被用来学习围棋棋盘中的特征信息。藏族久棋和围棋具有相似性,棋盘盘面均由黑棋、白棋、空位组成,区别是棋盘尺寸以及下棋规则不同。本文对AlphaGo Zero所使用的深度神经网络结构进行简化调整,构建适用于藏族久棋的卷积神经网络模型。

    所构建的藏族久棋卷积神经网络模型中的策略价值网络,在给定的局面信息下,返回每一个可行动作的概率以及当前局面评分。卷积神经网络的局面信息s使用4个14×14的二值特征平面表示,前2个平面分别表示当前执子方的棋子位置和对手的棋子位置。有棋子的位置用1表示,无棋子的位置用0表示。第三个平面表示对手最近一步的落子位置,也就是整个平面只有一个位置是1,其余全部是0。第四个平面表示的是当前执子方是否先手,如果是先手则整个平面全部为1,否则全部为0。在藏族久棋对弈过程中,先后手影响久棋布局的质量,布局的好坏又对胜负影响较大。在双方局面估分相似的情况下,当前局面的优劣和先后手有较大的关系。

    AlphaGo Zero使用的深度神经网络多至80层,这种大规模网络模型无法在普通笔记本上训练。因此,论文对网络结构进行简化,如图2所示。

    图2 卷积神经网络结构

    在输入层之后的主网络中使用3个3×3的滤波器以及Relu激活函数。在策略(Policy)网络中,使用3个1×1的滤波器,连接一个全连接层,使用Softmax非线性函数直接输出着法的概率;
    价值(Value)网络使用4个1×1的滤波器,连接一个由64个神经元组成的全连接层,再接一个全连接层,使用tanh非线性函数输出[-1,1]之间的局面评分。卷积神经网络模型的损失函数将在3.3.2节介绍。

    3.2 蒙特卡洛树搜索算法

    蒙特卡洛树搜索(monte carlo tree search,MCTS)[25]将蒙特卡洛方法和博弈树搜索算法相结合,通过快速走子模拟近似局面评估,可以有效减少搜索深度,既能降低问题的规模,又能获得求解问题的近似最优性。

    MCTS分为4个步骤:选择、扩展、模拟和反向传播,如图3所示。

    图3 MCTS算法

    借鉴AlphaGo Zero的思想,将卷积神经网络融入到MCTS,使用卷积神经网络引导MCTS搜索,减小了MCTS的规模,降低了计算资源和时间消耗,提高了搜索效率。

    蒙特卡洛搜索树中的每个节点S表示一个局面,且保存四元组信息{N,U,Q,P},如图4所示,N表示当前节点被访问次数,U用于记录UCB上限,Q是经过一个分支所有访问的期望值的平均值(未访问过的分支值为0),P表示当前正在考虑的动作的先验概率。

    图4 原理图示

    1) 选择(Selection):从根节点S0执行搜索,向下搜索L次,到达叶子节点SL,每次搜索时进行动作选择。动作的选择由式(1)确定:

    argmax(U+Q)

    (1)

    式中,U由式(2)确定:

    (2)

    式中,cpuct是一个用来平衡深入挖掘与广泛搜索的权重因子,取值为3.5。N′表示父节点被访问的次数。

    2) 扩展和评估(expansion and evaluation):通过策略、价值网络计算上一步中选择到的叶子节点SL的价值Q(SL)以及从SL节点扩展的新叶子节点的P值。

    3) 回溯(Backup):将节点SL的价值Q(SL)进行回溯更新,更新的结果就是从根节点S0到节点SL的整个搜索路径上搜索到的节点都被更新了一遍。

    4) 真正落子(Play):路径中所有节点统计数据得到更新后(搜索结束后),在根节点S0处选择动作进行落子,根据最新的统计数据产生一个实际的行为π,与访问次数成幂指数比例:

    (3)

    式中,τ表示控制探索的程度,τ越大,探索比例增大。反之,则更多选择当前最优动作。

    3.3 基于卷积神经网络与蒙特卡洛树搜索的自对弈算法

    AlphaGo Zero使用的基于深度强化学习的博弈算法通过训练神经网络完成落子预测和着法选择,极大地提高了树搜索的能力,能够完成更高质量的落子选择,并且具有更强的自我对弈能力。藏族久棋布局阶段的基于卷积神经网络和蒙特卡洛树搜索的自对弈算法借鉴AlphaGo Zero的思想进行自我学习,训练藏族久棋自对弈智能体模型以获得藏族久棋布局阶段的更好表现。

    3.3.1原理

    对于每步棋的当前局面s,使用卷积神经网络前一轮的输出指导蒙特卡洛树的结点扩展与选择。蒙特卡洛搜索树输出着法的概率分布π,称之为搜索概率。搜索概率与卷积神经网络输出的动作概率p相比,能够选择质量更高的着法。因此,MCTS可以看作是策略迭代的提升。在自对弈过程中,不断使用提升过的,基于蒙特卡洛搜索树的策略π进行走棋,最终决出胜负,将最终的自对弈结果z(胜为1,负为-1,平为0)看作当前棋局状态下的局势评估。

    3.3.2自对弈训练

    借鉴AlphaGo Zero的思想,通过定期评估最新模型和历史最优模型的优劣,决定是否更新历史最优模型。自对弈数据始终由最优模型生成,并用于不断更新训练当前最新的卷积神经网络模型。自对弈数据以(s,π,z)形式存储,其中s表示局面,π是搜索概率,z是自对弈的结果。卷积神经网络模型的损失函数定义如下:

    (4)

    式中,T表示转置,c表示参数,θ表示卷积神经网络的权重。第一项是为了优化价值网络输出的预测值v,第二项是为了优化落子概率的预测值p,第三项是为了防止模型过拟合。

    3.3.3自对弈数据的扩充

    整个训练过程中,由于是从零开始生成自对弈棋局数据,且藏族久棋每局对弈时间是五子棋、六子棋的几十倍,因此为了能够在算力非常弱的情况下尽快地训练模型,对棋局数据的扩充显得十分必要。藏族久棋作为黑白棋的一种,其棋盘局面具有对称性,因此通过将存有棋局数据的数组先进行逆时针旋转90°,再水平翻转,保存新生成的棋局数据,并将其用于训练卷积神经网络模型。通过数据扩充在一定程度上能够提高神经网络模型训练数据的多样性和均衡性。

    3.3.4自对弈算法的伪代码

    布局阶段基于卷积神经网络和蒙特卡洛树搜索的自对弈算法的伪代码如下:

    //输入:空模型、棋盘局面信息等

    Input:empty model, board’s information

    //随机初始化神经网络参数

    Initialize neural network weights randomly

    for each iteration i do //每一次迭代

    Initialize state s0 //初始化状态s0

    for each step do

    while computational resource remains do

    MCTS_search( )//蒙特卡洛树搜索

    end

    end

    for each step do

    calculate_the_winner()

    //通过成方计算相对胜负

    store_the_data() //存储数据

    end

    sample_data() //数据采样

    optimize_network_weights()

    //优化神经网络参数

    MCTS_search( )

    v0,s0 <- create_root()

    //创建搜索树的根节点

    //指定的迭代次数和时间范围内

    while within computational budget do

    vl <- TreePolicy(v0)

    //树节点的扩展

    Δ <- DefaultPolicy(s(vl))

    //按默认策略进行模拟

    BackUp(vl,Δ) //反向传播

    return a(BestChild(v0))

    //返回最佳子节点

    calculate_the_winner()

    //若达到终局判断情况

    if(len(states) == width * height) then

    //统计成方个数的变量

    counts_1 <- 0

    counts_2 <- 0

    if(Player1 has a square) then

    counts_1 += 1//对变量进行赋值

    if(Player2 has a square) then

    counts_2 += 1

    winner <- Player1 if counts_1 > counts_2 else Player2

    optimize_networks_weight()

    mini_batch <- random.sample()

    //随机化参数

    state_batch <- get_board_state()

    //获取棋盘的状态

    //获取MCTS返回的搜索概率π

    mcts_probs_batch = get_mcts_probs()

    winner_batch = get_winner_states()

    probs,v <- policy_value(state_batch)

    //对卷积神经网络进行训练

    for i <- 0 to epochs do

    loss,entropy<-train_step(state_batch,mcts_probs_batch,winner_batch)

    //卷积神经网络输出的动作概率p和状态评分预测值v

    new_probs,new_v = policy_value(state_batch)

    如果全程采用单一的算法,藏族久棋博弈树的搜索路径会很长,且不同阶段的博弈树信息处理非常繁杂低效,巨大的状态空间和动作空间导致搜索效率很低。因此,专门为战斗阶段设计基于领域知识的Alpha-Beta剪枝算法,以提高博弈算法的效率。

    4.1 基于领域知识的Alpha-Beta剪枝算法

    藏族久棋规则特殊且搜索树动作空间和状态空间巨大,在有限的时间内遍历久棋搜索树的所有分枝是不现实的。极大极小值算法[26]是计算机博弈搜索算法的基础,但因其搜索效率低不适合直接应用于藏族久棋的博弈树搜索。Alpha-Beta剪枝算法[27]是对极大极小值算法的改进优化,不需要像极大极小值算法一样遍历整棵博弈树,它通过Alpha-Beta剪枝操作裁剪掉多余的分支提高树的搜索效率。

    Alpha-Beta剪枝算法按照从下至上,从左至右的顺序遍历博弈树。本文实验中使用的普通笔记本电脑的算力有限,为了在减轻计算量的同时尽可能搜索更优的落子方案,将Alpha-Beta剪枝算法的搜索深度设置为4层。Alpha和Beta的初始值分别设置为-1 000 000、1 000 000。

    Alpha-Beta剪枝算法剪掉了多余的分支,计算效率得到了很大提升。但是,剪枝效率与着法的遍历顺序密切相关,因此本文采用领域知识结合Alpha-Beta剪枝提高效率。

    4.2 Alpha-Beta剪枝算法的伪代码

    剪枝算法的伪代码如下。

    function alpha_beta(depth,alpha,beta)

    //参数初始化

    alpha<-1 000 000,beta<-1 000 000

    //获取哈希值,用于置换表

    score<-getHashItemScore(depth,alpha,beta)

    //判断是否达到搜索终止条件

    if(score !=UNKOWN_SCORE and depth !=DEPTH)

    then return score

    if(depth == 0)

    //记录哈希值

    then recordHashItem(depth,score)

    //生成所有可行的解

    List <- generateEmptyPosition()

    //对于每一步,遍历它的所有可行解

    for(From <- List[0]to List[len(List)]) do

    //移动至相邻格

    list_2 <- generateDirectMoves()

    //跳吃

    list_3 <- generateTiaoChiMoves()

    //若已无可行解,跳出循环

    if(len(list_3 + list_2) == 0)

    then continue

    //有可行解

    list_4 = list_2 + list_3

    //行棋

    MakeMove()

    //遍历可行解

    for(To -

    //评估这步行棋

    evaluateOneDirectMove()

    //若形成阵型吃子

    if(having_eating_numbers())

    //进行评估

    then evaluate_on_eating()

    //迭代搜索

    val = -alpha_beta(depth - 1,beta,alpha)

    //多次模拟后获得最优val值,撤回到模拟前的状态

    UnMakeMove()

    if(val >= beta)

    //按照α-β剪枝算法,如果v>β,则直接返回v

    then return val

    else if(val > alpha)

    //按照α-β剪枝算法,这里还需要更新α的值

    then alpha <- value

    end

    4.3 领域知识

    采用领域知识进行棋型评估一般是通过局部的棋型进行评估。但是藏族久棋与五子棋[28]或六子棋[29]不同,后两者的棋型评分已有较为准确的评估函数,藏族久棋需要借助领域知识,对电脑的走法进行评估,然后不断地根据实际效果调整相应的棋型评估值。

    经过实验测试和调整后,布局阶段及战斗阶段各个棋型的评估值设置分别如表1和表2所示。

    表1 布局阶段各棋型的评估值

    表2 战斗阶段各棋型的评估值

    在布局阶段,由于双棋门是由2个单棋门构成,单棋门是由三角构成,因此的双棋门、单棋门、三角评估值的初始比例设置为8∶2∶1。后续经过不断地调整棋型评估值间的比例,并通过实验进一步验证,确定当双棋门、单棋门、三角的评估值分别为800、100、50时为棋型评估值方案。

    在战斗阶段,综合考虑棋子数、棋型复杂度、阵型吃子数三方面价值进行评估。单个棋子作为对弈中最基本的单位,具有一定的基础价值,一个棋型所需的棋子数越多,其基础评估值就越高,其复杂度也会随着棋子数目的增加而增加。形成褡裢、棋门阵型不仅有利于形成最终的胜利阵型,同时还可以通过吃子以达到破坏对方阵型的作用。因此形成的阵型所能吃掉对方棋子的数目越多,其评估值相对就越高。

    4.4 模式匹配方法

    模式匹配与Alpha-Beta剪枝算法结合,在对着法进行评估时,与提前预输入的模型进行匹配,由于模型被预先赋予了不同的评估值,因此不同的着法之间便产生了优劣之分。模式匹配和位棋盘紧密相连,在位棋盘上存储数据会简化模式匹配的过程。但在藏族久棋中,由于棋盘大小为 14×14,通过位棋盘来存储棋盘信息反而会成为一种负担,原因是当棋盘过大时,为了避免位与位之间发生哈希冲突,则会对位进行扩展。当二进制串的长度过大时,其性能反而下降。因此在存储久棋棋盘的相关信息时,并未采用位棋盘法,而是使用二维数组,并且将空位记为0,黑棋、白棋分别记为1、2来进行存储。

    为了测试和验证论文中提出的藏族久棋分段算法的性能,在普通笔记本硬件配置条件下,采用Python语言开发了两款藏族久棋博弈程序,程序开发及运行的环境配置如表3所示,两款藏族久棋博弈程序采用的算法如表4所示。对弈实验中,人类棋手具有一段水平,记作Player A。

    表3 开发和运行程序的笔记本硬件配置

    表4 两款博弈程序所采用的算法

    5.1 与人类棋手的博弈实验

    在Player A和Player B的对弈中,采用5局3胜制,总分为20分,胜利方计1分。采用5局3胜制可以有效地降低偶然性事件对统计结果的影响,保证实验结果数据的准确性。人类棋手的棋力水平为业余一段,比赛胜负情况如图5所示。

    图5 不同训练次数下的胜率

    由图5可知,在训练次数较少时,人类棋手占有明显优势。随着自对弈智能体模型训练的迭代次数逐渐增加,模型逐渐地“学会”了下棋的思路和方法,由于自对弈学习的最终目标是胜利,自对弈智能体模型也逐渐“学会”了如何获得博弈比赛的胜利。当训练次数为300时,模型的棋力已经得到提升,在与人类棋手的对弈当中逐渐取得上风。当训练次数达到500时,模型已经占据了较大的优势。

    5.2 不同博弈程序间的对比实验

    考虑到藏族久棋每局比赛耗时较长,对人类棋手的精力和体力消耗较大,长时间的对弈过程可能会导致人类棋手在对弈中的表现有失水准,因此进行了不同博弈程序间的对比实验,如图6所示。

    对弈的一方是采用论文中提出的分段算法的智能体程序Player B,另一方则是全程使用基于Alpha-Beta剪枝算法的博弈程序Player C。Player C在布局和战斗阶段均采用Alpha-Beta剪枝算法,并且在布局和战斗阶段分别对不同的棋型赋予不同的评估值。博弈程序Player C参加了2021年中国计算机博弈锦标赛大赛,获得全国二等奖,证明了其博弈算法的有效性和可行性。

    图6 分段算法与全局使用Alpha-Beta算法对比

    由图6可知,当训练次数为100时,博弈程序Player C在与运用了蒙特卡洛树搜索算法和卷积神经网络的博弈智能体程序Player B的对弈中保持着较大的优势,此时的Player B因自对弈智能体模型的训练次数不足,棋力较差。当训练次数为300时,此时的Player B已经能与Player C战平,自对弈智能体模型的棋力相对训练初期得到了较大提升,逐渐地“学会”了如何获得博弈比赛的胜利。随着训练次数的不断增加,当训练次数达到500时,Player B在与Player C的对弈中取得较大的优势,Player B可以“猜”到一些比较刁钻的下法,从而建立赢棋的优势。

    藏族久棋棋谱数据极少,领域知识匮乏,训练一个自对弈藏族久棋博弈智能体程序的意义重大。实验表明,采用论文中所提出的分段算法开发的藏族久棋自对弈智能体与人类一段棋手、Alpha-Beta智能体进行对弈时,均表现不错,具备较快的学习能力,并且能够走出不同于人类选手的优势走法,能够为藏族久棋的布局和战斗阶段提供重要指导。但是该算法仍有巨大的改进空间,后续将考虑在神经网络模型方面继续优化算法,选择更高效的网络结构以缩短模型的训练时长,提升算法的执行效率。

    猜你喜欢 蒙特卡洛剪枝棋子 人到晚年宜“剪枝”保健医苑(2022年5期)2022-06-10面向纳米尺度金属互连线的蒙特卡洛模拟方法研究北京大学学报(自然科学版)(2022年2期)2022-04-09棋子多少颗小学生学习指导(低年级)(2021年5期)2021-07-21基于YOLOv4-Tiny模型剪枝算法成都信息工程大学学报(2021年6期)2021-02-12摆棋子数学小灵通(1-2年级)(2020年11期)2020-12-28有趣的棋子数学小灵通(1-2年级)(2020年9期)2020-10-27基于激活-熵的分层迭代剪枝策略的CNN模型压缩计算机应用(2020年5期)2020-06-07征服蒙特卡洛赛道小哥白尼(趣味科学)(2020年6期)2020-05-22基于蒙特卡洛法的车用蓄电池20h率实际容量测量不确定度评定北京汽车(2018年5期)2018-11-06剪枝天津诗人(2017年2期)2017-03-16
    相关热词搜索: 藏族 博弈 算法

    • 文学百科
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章