一种象棋人工智能防作弊方法与流程

专利2022-05-09  117


本发明涉及人工智能相关技术领域,尤其是指一种象棋人工智能防作弊方法。



背景技术:

随着象棋人工智能(简称:象棋ai)技术的应用和不断普及,越来越多的象棋用户购买电脑版象棋ai软件,通过连线的方式进行软件作弊,这样就造成在线棋力评测的结果失真。

市面上常见的线上象棋类对弈平台app都深受软件作弊之害,严重影响了平台的公平公正性。为了象棋行业的健康发展,维护平台用户的切身利益,急需推出一套防作弊系统来打击和制衡软件作弊行为。



技术实现要素:

本发明是为了克服现有技术中存在上述的不足,提供了一种能够自动判定作弊情况的象棋人工智能防作弊方法。

为了实现上述目的,本发明采用以下技术方案:

一种象棋人工智能防作弊方法,具体包括如下步骤:

(1)为了保证对弈数据的公平公正性,线上用户以在棋力评测场的对局棋谱作为数据统计标的,线下用户以棋手线下公开比赛棋谱作为数据统计标的,对棋谱的每个局面进行象棋旋风引擎和dtm残局库打分,最终给出ai局势图的打分序列s={s1,s2,……,sm},m为该盘棋的步数;

(2)计算每步棋的准确度,记做ai吻合度fk,k为当前步数的序号;

(3)象棋对局分为开局、中局和残局,根据不同类型局面的计算权重来计算每盘棋的ai吻合度fr;

(4)统计用户全部有效对局进行胜率激励后的ai吻合度fr的算数平均值,得出用户的综合ai吻合度fu,称为棋力;

(5)根据上述步骤(1)到步骤(4)的算法得出的棋力fu和象棋ai的棋力区间fai进行比较,来判定是否为软件作弊;

(6)当fu没有落在fai的区间内,需要对用户最近10/25/50盘有效对局的棋力进行计算,并辅以用户举报,判定用户是不是人机作弊。

象棋ai下棋和纯人下棋在每步棋的准确性方面有很大的区别:纯人下棋会失误,但是ai下棋几乎不会失误。本象棋人工智能防作弊方法依托象棋ai技术,通过对待判定用户的棋谱进行综合数据分析,通过比对用户的棋谱数据和ai打分的吻合度,从而自动判定是否为软件作弊用户。

作为优选,在步骤(2)中,计算每步棋的ai吻合度fk具体方法如下:fk由当前局面的打分sk和上一局面的打分sk-1有关,记smin为参与ai吻合度计算的下限,smax为参与ai吻合度计算的上限;当smin<sk-1<smax时,进行如下计算:

fk=(sk sini-sk-1)/bk,其中k>0,s0=50,sini是为了去除ai打分波动需要设定的值,bk为ai吻合度的计算底数,fk的上限记做fmax,fk的下限记做fmin,如果fk>fmax,则fk取值fmax,如果fk<fmin,则fk取值fmin,作为第k步最终的ai吻合度。

作为优选,在步骤(3)中,计算每盘棋的ai吻合度具体方法如下:

(31)开局:对局开始的前10回合,即k≤20的局面,权重wk为0.5,且前4个回合,即k≤8,不参与统计计算;

(32)残局:记车、炮、马为大子,设车的价值为900,炮和马的价值为450,双方的大子的价值总和都<1500的局面,权重wk为0.75;

(33)中局:开局和残局之外的局面,权重wk为1;

(34)第r局棋的ai吻合度fr为每步棋fk*wk的加权算数平均值,当该盘棋的步数m>mmin时,给出该局棋的ai吻合度,否则这盘棋不进行ai吻合度统计。

象棋对局分为开局、中局和残局,在不同阶段,人和ai的差别并不相同。因为开局和残局阶段存在大量的定式和学习资料,人类和ai的水平接近,如果仅仅通过每步棋的ai吻合度进行标准统一的判定,很可能会误判,因此不同类型局面的计算权重(记做wk)不同,开局和残局的权重需要降低。

作为优选,在步骤(4)中,用户棋力的计算方式具体方法如下:对局的结果也会影响到fr,称之为胜率激励,胜率激励后第r盘的ai吻合度记做f*r;胜和负结果的加乘系数分别记做m胜、m和、m负,如对局结果为胜,则f*r=fr*m胜,如对局结果为和,则f*r=fr*m和,如对局结果为负,则f*r=fr*m负;用户的棋力fu为每盘有效对局进行胜率激励后的ai吻合度f*r的算数平均值。

作为优选,在步骤(5)中,具体为:fai的区间为75%-100%,如果发现用户对局数在100盘以上,且75%≤fu≤100%,自动判定为软件作弊;根据棋力fu的区间对评测的用户进行分流,75%≤fu≤100%的用户在一起评测,fu<75%的用户在一起评测,棋力大于75%的作弊用户无法匹配到纯人用户,从根本上解决软件作弊的弊端。

作为优选,在步骤(6)中,人机作弊是软件作弊的高级形式,具体指的是:前期纯人下棋,后期使用象棋ai下棋进行的作弊行为;具体方法如下:用户最近n盘有效对局的综合棋力记做fun,为最近n盘有效对局进行胜率激励后的ai吻合度f*r的算数平均值;用户最近10盘、25盘、50盘的综合棋力,记做fu10、fu25、fu50;当fu<75%,且有用户举报后,进入人机作弊判决过程,具体为:fu10,fu25,fu50的算数平均值≥75%,最终判定为人机作弊。

本发明的有益效果是:依托象棋ai技术,通过对待判定用户的棋谱进行综合数据分析,通过比对用户的棋谱数据和ai打分的吻合度,从而自动判定是否为软件作弊用户。

附图说明

图1是步骤(1)中的ai局势图;

图2是步骤(3)中一盘棋的ai吻合度对比图;

图3是步骤(4)中用户棋力的展示图;

图4是步骤(5)中软件作弊用户的棋力值截图;

图5是步骤(6)中人机作弊用户的棋力值截图;

图6是步骤(6)中辅以举报的作弊处罚后台图。

具体实施方式

下面结合附图和具体实施方式对本发明做进一步的描述。

一种象棋人工智能防作弊方法,具体包括如下步骤:

(1)为了保证对弈数据的公平公正性,线上用户以在棋力评测场的对局棋谱作为数据统计标的,线下用户以棋手线下公开比赛棋谱作为数据统计标的,对棋谱的每个局面进行象棋旋风引擎和dtm残局库打分,最终给出ai局势图的打分序列s={s1,s2,……,sm},m为该盘棋的步数,如图1所示;

(2)计算每步棋的准确度,记做ai吻合度fk,k为当前步数的序号;ai下棋的特点是步步精准,打分局势图是一个向上的曲线,且几乎没有失误,利用这一点,计算每步棋的ai吻合度fk具体方法如下:fk由当前局面的打分sk和上一局面的打分sk-1有关,记smin为参与ai吻合度计算的下限,默认为25,smax为参与ai吻合度计算的上限,默认为1200;当smin<sk-1<smax时,进行如下计算:

fk=(sk sini-sk-1)/bk,其中k>0,s0=50,sini是为了去除ai打分波动需要设定的值,默认为25;bk为ai吻合度的计算底数,bk的取值如下:当|fk-1|≤300时,bk=50;当301<|fk-1|≤600时,bk=100;当601<|fk-1|≤900时,bk=150;当901<|fk-1|≤1200时,bk=300;fk的上限记做fmax,fk的下限记做fmin,如果fk>fmax,则fk取值fmax,如果fk<fmin,则fk取值fmin,作为第k步最终的ai吻合度,fmin的默认值为-2.25(失误招法的判决阈值),fmax的默认值为1。

(3)象棋对局分为开局、中局和残局,根据不同类型局面的计算权重来计算每盘棋的ai吻合度fr;象棋对局分为开局、中局和残局,在不同阶段,人和ai的差别并不相同,因为开局和残局阶段存在大量的定式和学习资料,人类和ai的水平接近,如果仅仅通过每步棋的ai吻合度进行标准统一的判定,很可能会误判,因此不同类型局面的计算权重(记做wk)不同,开局和残局的权重需要降低;故而,计算每盘棋的ai吻合度具体方法如下:

(31)开局:对局开始的前10回合,即k≤20的局面,权重wk为0.5,且前4个回合,即k≤8,不参与统计计算;

(32)残局:记车、炮、马为大子,设车的价值为900,炮和马的价值为450,双方的大子的价值总和都<1500的局面,权重wk为0.75;

(33)中局:开局和残局之外的局面,权重wk为1;

(34)第r局棋的ai吻合度fr为每步棋fk*wk的加权算数平均值,当该盘棋的步数m>mmin时(mmin指的是每盘棋最少的步数,默认为29)时,给出该局棋的ai吻合度,否则这盘棋不进行ai吻合度统计。

如图2所示,一盘棋对弈双方的ai吻合度分别为30%和39%,一般情况下ai吻合度高的一方会取得胜利。

(4)统计用户全部有效对局进行胜率激励后的ai吻合度fr的算数平均值,得出用户的综合ai吻合度fu,称为棋力;如果通过一盘棋的ai吻合度就判定是否软件作弊,可能存在大量的误判,因此需要对用户全部有效对局进行胜率激励后的ai吻合度fr的算数平均值,得出用户的综合ai吻合度fu,如图3所示。用户棋力fu的计算方式具体方法如下:对局的结果也会影响到fr,称之为胜率激励,胜率激励后第r盘的ai吻合度记做f*r;胜和负结果的加乘系数分别记做m胜、m和、m负,如对局结果为胜,则f*r=fr*m胜,如对局结果为和,则f*r=fr*m和,如对局结果为负,则f*r=fr*m负。如果是线上用户,m胜=1,m和=1,m负=1,如果是线下用户,考虑到消极和棋的因素,m胜=1.06,m和=0.96,m负=0.95。因此,对线上用户实施如下:如对局结果为胜,则f*r=fr*1.06,如对局结果为和,则f*r=fr*0.96,如对局结果为负,则f*r=fr*0.95;用户的棋力fu为每盘有效对局进行胜率激励后的ai吻合度f*r的算数平均值。

(5)根据上述步骤(1)到步骤(4)的算法得出的棋力fu和象棋ai的棋力区间fai进行比较,来判定是否为软件作弊,如fu落在fai内,判定为软件作弊;具体为:fai的区间为75%-100%,如果发现用户对局数在100盘以上,且75%≤fu≤100%,自动判定为软件作弊,如图4所示;根据棋力fu的区间对评测的用户进行分流,75%≤fu≤100%的用户在一起评测,fu<75%的用户在一起评测,棋力大于75%的作弊用户无法匹配到纯人用户,从根本上解决软件作弊的弊端。

(6)当fu没有落在fai的区间内,需要对用户最近10/25/50盘有效对局的棋力进行计算,并辅以用户举报,判定用户是不是人机作弊;人机作弊是软件作弊的高级形式,具体指的是:前期纯人下棋,后期使用象棋ai下棋进行的作弊行为;人机作弊的特征是棋力变化曲线的波动非常大,而纯人用户受限于智力因素不可能在短时间内突飞猛进,因为波动很小,尤其是在下满100局后,棋力基本上处于一个固定值。如果采用棋力的方法进行判定,会造成大量的漏网之鱼;具体方法如下:用户最近n盘有效对局的综合棋力记做fun,为最近n盘有效对局进行胜率激励后的ai吻合度f*r的算数平均值;用户最近10盘、25盘、50盘的综合棋力,记做fu10、fu25、fu50;当fu<75%,且有用户举报后,进入人机作弊判决过程,具体为:fu10,fu25,fu50的算数平均值≥75%,最终判定为人机作弊;如图5中id为1032632和1038421的用户为典型的人机作弊用户,综合棋力低于75%,但是最近10/25/50盘的ai吻合度均高于75%,fu10,fu25,fu50的算数平均值≥75%,辅以用户举报,如图6所示,可以最终判定为人机作弊。

转载请注明原文地址:https://doc.8miu.com/read-161201.html

最新回复(0)