本发明涉及一种基于机器学习的棋类自学习方法及装置,属于深度强化学习领域。
背景技术:
近年来,随着人工智能的发展,深度强化学习越来越广泛应用到我们生活的不同领域,如机械化控制、自动驾驶等等。一直以来人工智能都有两个发展方向,其中一个方向是使机器能够学习和模仿人类的行为方式,这就需要大量的人类的行为方式的数据,以供人工智能的学习,这种人工智能训练方式被称为监督学习。而另一个方向就是给机器提供最基本的规则,让机器自己通过自学习的方式完成人工智能的训练,这种人工智能训练方式被称为非监督学习。相较于非监督学习,监督学习有如下缺点:1、最终训练水平严重依赖所提供的数据集,从某种意义上说提供的数据集就是最终训练结果的上限;2、需要大量的数据以供训练,而很多时候这些数据是难以获取的。非监督学习可以克服监督学习存在的不足,它通过自我学习的方式来完成训练,而不需要任何人类的数据或经验。也正是因为不依赖人类数据,非监督学习才有可能训练出在某一领域超过人类的人工智能。
目前,完全信息博弈主要可以分为两大类:第一类是基于专家系统的方法,其特征是:(1)稳定性强,专家系统一切按照程序执行,而不像人会有各种情绪;(2)速度快,对于重复性很强或者已经有相关智能算法的任务,专家系统的反应速度通常要大大快于人类的反应;(3)适应性强,专家系统可以适应各种环境,包括人类无法适应的危险环境;(4)灵活性强,专家系统能够方便的添加或删减功能和知识库。曾经战胜国际象棋大师的深蓝就是基于专家系统,然而专家系统是在人类经验上建立起来的,这就注定专家系统注定要受限于人类经验与模型构建的桎梏,因而在决策空间更大的围棋上,专家系统始终难以战胜人类棋手。
技术实现要素:
本发明的目的在于克服现有技术中的不足,提供一种基于机器学习的棋类自学习方法及装置,能够自生成棋类的对局数据,并根据对局数据进行训练提升模型准确性。
为达到上述目的,本发明是采用下述技术方案实现的:
第一方面,本发明提供了一种基于机器学习的棋类自学习方法,包括以下步骤:
步骤a:构建神经网络并随机初始化神经网络的参数;
步骤b:构建蒙特卡洛树,利用神经网络对蒙特卡洛树节点进行初始化并通过蒙特卡洛树搜索进行自我对弈,生成对局数据,并将对局数据保存;
步骤c:利用保存的对局数据对神经网络训练;
步骤d:重复步骤b至步骤c过程直到神经网络收敛。
进一步的,所述神经网络包括输入层、隐藏层和输出层;
所述输入层匹配训练的棋类棋盘大小;
所述隐藏层采用卷积神经网络的隐藏层结构,用于完成对棋局特征的提取和处理;
所述输出层包括用于输出落子向量的博弈决策器和用于输出当前棋面的价值函数价值评估器;所述博弈决策器和价值函数价值评估器共用同一输入层和隐藏层。
进一步的,构建神经网络的方法包括:
根据训练的棋类棋盘大小设置输入层以及决策输出层结构,使输入层和决策输出层大小匹配该棋类棋盘大小。
进一步的,构建蒙特卡洛树,利用神经网络对蒙特卡洛树节点进行初始化并进行蒙特卡洛树搜索进行自我对弈,生成对局数据的方法包括:
构建蒙特卡洛树,每个蒙特卡洛树节点st包含以下属性:1、子节点数组son[a];2、访问次数数组n[a];3、总价值数组w[a];4、平均价值q[a];5、落子概率数组p[a];6、标量num;
通过蒙特卡洛树搜索进行自我对弈,控制对弈双方根据对手上一步落子为根节点进行一轮蒙特卡罗搜索,在蒙特卡洛树搜索完成后根据根节点下各个落子a所选比例获得对应的决策向量π,然后根据π选择自我对弈中的落子;
在完成一局自我对弈后,根据终局的胜负情况为各个决策附上价值标签z,即将获胜方所有决策附上标签 1,将落败方所有决策附上标签-1,生成目标对,并将目标对(πt,z)保存到容器中;当容器满时则将最先放入容器中目标对(πt,z)丢弃。
进一步的,利用保存的对局数据对神经网络训练的方法包括:
从容器中随机选取目标对(πt,z)对神经网络进行训练,其中神经网络的损失函数如下式
loss=(z-vt)2-πttlogpt c||θ||2
其中,落子向量
训练目标为使神经网络输出的落子向量pt接近决策向量πt,使价值判断vt解决最终的对局结果z,即使损失函数loss尽可能的下降。
进一步的,所述蒙特卡罗树搜索的方法包括:根据下式选出:
其中标量num表示节点st被访问的总次数,初始值为1,每当节点st被访问,累计值加一;且有num=∑an[a];cinit,cbase为两常数;ct表示探索率,其值越大说明当前蒙特卡洛树搜索越偏向于探索,其值越小说明当前蒙特卡洛树搜索越偏向根据已有结果选择最优落子;落子向量
进一步的,在蒙特卡洛树搜索完成后根据根节点下各个落子a所选比例获得对应的决策向量π的方法包括:根据下式计算决策向量π:
其中,τ≤1是控制探索程度的参数,τ值越大,当前蒙特卡洛树越偏向于搜索,反之则更倾向于选择最优策略;决策向量
第二方面,本发明提供了一种基于机器学习的棋类自学习装置,所述装置包括:
网络构建模块:用于构建神经网络并随机初始化神经网络的参数;
数据生成模块:用于构建蒙特卡洛树,利用神经网络对蒙特卡洛树节点进行初始化并通过蒙特卡洛树搜索进行自我对弈,生成对局数据,并将对局数据保存;
训练模块:用于利用保存的对局数据对神经网络训练;
收敛模块:用于当神经网络收敛时,控制数据生成模块停止生成对局数据并控制收敛模块停止训练。
第三方面,本发明提供一种基于机器学习的棋类自学习装置,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行根据第一方面所述方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现第一方面所述方法的步骤。
与现有技术相比,本发明所达到的有益效果:
1、本发明通过引入神经网络作为落子选择器和价值评估器,蒙特卡洛树作为策略优化器,完全不需要人类的五子棋知识,即可完成自我对弈,最终完成对神经网络的训练,能够提高ai棋手的棋力,供人们对弈使用;
2、基于本发明的落子选择器和价值评估器,本发明构建的五子棋人工智能棋力更高,运算更快。
附图说明
图1为本发明方法实施例所述的高分辨率卷积神经网络总体结构示意图;
图2为本发明训练流程图;
图3为本发明的第一阶段的自我对弈详细示意图;
图4为本发明的第二阶段的神经网络训练详细示意图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例一:
图1所示为本发明所述一种基于渐进的迁移学习深度强化学习训练方法的流程图,以五子棋为例,提出一种基于机器学习的五子棋自学习方法,该方法包括:
步骤1:构建好深度残差卷积神经网络,随机初始化神经网络参数。神经网络分为输入层、隐藏层和输出层,如图二。其中输入层应匹配当前棋盘大小。隐藏层3层全卷积网络,分别使用32、64和128个3×3的filter,使用relu激活函数。而输出层一般分为两部分,一部分是用于输出落子向量的博弈决策器,记落子向量为pt,pt大小为1×n,且pt各分量和为1,pt分量范围为[0,1]表示在状态st下选择各个落子的概率,另一部分则是输出当前棋面的价值函数价值评估器,输出值为一个[-1,1]间标量vt,vt值越大表示当前局面越有利于我方,vt值越小表示当前局面越有利于对手方。这两部分输出层共用同一输入层和隐藏层。
步骤2:根据当前要训练的五子棋棋盘大小设置输入层以及决策输出层结构,使输入层和决策输出层大小匹配当前棋盘大小。
步骤3:构建蒙特卡洛树,每个蒙特卡洛树节点st包含以下属性:1、子节点数组son[a];2、访问次数数组n[a];3、总价值数组w[a];4、平均价值q[a];5、落子概率数组p[a];6、标量num。
步骤4:蒙特卡罗树搜索时的落子选择是根据最大置信公式(1)选出:
其中,标量num表示节点st被访问的总次数,初始值为1,每当节点st被访问,num=num 1。且有num=∑an[a];cinit,cbase为两常数;落子向量
其中c(st)表示探索率,其值越大说明当前蒙特卡洛树搜索越偏向于探索,其值约小说明当前蒙特卡洛树搜索越偏向根据已有结果选择最优落子。c(st)值随着搜索的进行缓慢的增大,由于五子棋较为简单,每次蒙特卡洛树搜索次数不大,故c(st)退化为一常数c,经实验c值取5效果较好。每轮蒙特卡洛树搜索大约进行800次,每次搜索在遇到未展开节点返回,并递归更新各节点至根节点。
步骤5:在蒙特卡洛树搜索完成后根据根节点下各个行为a所选比例获得对应的决策向量πt,然后根据πt选择自我对弈中的落子,如图3所示。
其中τ≤1是控制探索程度的参数,τ值越大,当前蒙特卡洛树越偏向于搜索,反之则更倾向于选择最优策略。一般的我们让τ值随对局的进行而逐渐减小,即对局前期落子选择偏向于探索,对局后期则让落子选择偏向最优解,一般我们在对局前十步令τ=1,而后τ=0.96t,其中t为对局进行步数。
步骤5:在完成一局自我对弈后,根据终局的胜负情况为各个决策附上价值标签z,即将获胜方所有决策附上标签 1,将落败方所有决策附上标签-1,并将目标对(πt,z)保存到容器中,当容器满时则将最先放入容器中目标对(πt,z)丢弃。
步骤7:从容器中随机选取目标对(π,z)对神经网络进行训练,其中神经网络的损失函数如式(5)
loss=(z-vt)2-πttlogpt c||θ||2(5)
其中,落子向量
训练目标为使神经网络输出的落子向量pt接近决策向量πt,使价值判断vt解决最终的对局结果z,即使损失函数loss尽可能的下降。具体训练步骤:记
步骤8:重复步骤2至步骤6,可以完成对渐进增大的五子棋棋盘的参数训练,并保留相同隐藏层参数完成对大棋盘的隐藏层参数的训练,直至训练完成。
本发明通过引入神经网络作为落子选择器和价值评估器,蒙特卡洛树作为策略优化器,完全不需要人类的五子棋知识,即可完成自我对弈,最终完成对神经网络的训练。该发明的目的在于构建一个五子棋ai棋手,供人们对弈使用。通过引入神经网络作为落子选择器和价值评估器,蒙特卡洛树作为策略优化器,完全不需要人类的五子棋知识,即可完成自我对弈,最终完成对神经网络的训练,能够提高ai棋手的棋力,供人们对弈使用;基于本发明的落子选择器和价值评估器,本发明构建的五子棋人工智能棋力更高,运算更快。
本实施例中各符号定义为:
假设棋盘大小为t=n×m(通常为正方形,即n=m),n表示总行数(横线),m表示总列数(竖线);整数变量i、j的取值范围分别为{0,1,2,…,n-1}和{0,1,2,…,m-1},则:
落子位置a=im j,取值范围为{0,1,2,…,t-1}间整数,对应于棋盘上的坐标(i,j),at表示t步所选落子;
记棋盘上落子个数t为对局步数,取值范围为{0,1,2,…,t};
3、棋盘状态
4、整个对局过程用集合s={s0,s1,s2,…,st,…}表示,分别对应不同落子数时棋盘状态;
5、价值标量vt,取值范围为[-1,1],表示当前棋局落子方获胜可能性大小,vt值越大说明当前棋手越可能获胜,vt值越小说明当前棋手越可能落败。将棋盘状态st输入神经网络,神经网络的价值评估输出层输出的即为vt;
6、落子向量
7、决策向量
8、对局结果z,取值为{-1,1}。z=1表示当前棋手在此对局中获胜,z=-1表示当前棋手在此对局中落败。
9、子节点数组son[a],长度为t。用于存储到子节点st 1的指针。如son[0]表示当前节点在0处落子后子节点的指针。
10、访问次数数组n[a],长度为t。记录当前状态st下选择落子a的次数,数组分量初始值为0,每当蒙特卡罗搜索选择落子a,n[a] 。
11、总价值数组w[a],长度为t。记录当前状态st下选择落子a的总价值,数组分量初始值为0,每当蒙特卡罗搜索选择落子a,w[a] =vt。
12、平均价值q[a],表示当前状态st选择落子a获得的平均价值,q[a]=w[a]/n[a]。
13、落子概率数组p[a],记录当前状态st下选择落子a的概率,初始值为pt,由最新神经网络输出获得,每个节点仅初始化一次,不再更新。
14、标量num表示节点st被访问的总次数,初始值为1,每当节点st被访问,num=num 1。且有num=∑an[a]。
15、θ=(θ0,θ1,θ2,…)是神经网络所有参数所构成的向量。
实施例二:
一种基于机器学习的棋类自学习装置,其特征在于,所述装置包括:
网络构建模块:用于构建神经网络并随机初始化神经网络的参数;
数据生成模块:用于构建蒙特卡洛树,利用神经网络对蒙特卡洛树节点进行初始化并通过蒙特卡洛树搜索进行自我对弈,生成对局数据,并将对局数据保存;
训练模块:用于利用保存的对局数据对神经网络训练;
收敛模块:用于当神经网络收敛时,控制数据生成模块停止生成对局数据并控制收敛模块停止训练。
实施例三:
本发明实施例还提供了一种基于机器学习的棋类自学习装置,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行实施例一所述方法的步骤。
实施例四:
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现实施例一所述方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
本文用于企业家、创业者技术爱好者查询,结果仅供参考。