Machine learning 国际象棋评价函数的训练

Machine learning 国际象棋评价函数的训练,machine-learning,evaluation,chess,reinforcement-learning,reward,Machine Learning,Evaluation,Chess,Reinforcement Learning,Reward,我将要写一个基于强化学习的国际象棋引擎。 我想训练一个评估函数,并找出董事会最重要功能的权重 我不是机器学习专家,我只是想从书本和教程中学习。在每个教程中,奖励都非常简单,通常是1,0,也许是-1,但在国际象棋中没有这样明显的奖励(不管检查伙伴的位置)。 例如,假设我在黑板上有一个情况。我做了10次(随机)移动,在这一点上我应该计算奖励,起始位置和当前位置之间的差异(或错误)。当我唯一的评估功能正在接受培训时,如何做到这一点 我希望避免使用其他引擎的评分系统,因为我觉得这更像是监督学习,这不是我

我将要写一个基于强化学习的国际象棋引擎。 我想训练一个评估函数,并找出董事会最重要功能的权重

我不是机器学习专家,我只是想从书本和教程中学习。在每个教程中,奖励都非常简单,通常是1,0,也许是-1,但在国际象棋中没有这样明显的奖励(不管检查伙伴的位置)。 例如,假设我在黑板上有一个情况。我做了10次(随机)移动,在这一点上我应该计算奖励,起始位置和当前位置之间的差异(或错误)。当我唯一的评估功能正在接受培训时,如何做到这一点


我希望避免使用其他引擎的评分系统,因为我觉得这更像是监督学习,这不是我的目标。

你不能直接这样做

我可以建议以下几种方法:

  • 使用外部来源的评分至少可以启动您的算法。评估一个给定位置的算法是非常有限的,而你的AI单靠它是无法达到大师级的
  • 探索使用另一种国际象棋AI(理想情况下为开源)评估位置的可能性。假设你有一个“老师”AI。您可以启动2个实例,然后从要评估的位置开始游戏。让他们从那里开始互相比赛,直到比赛结束。此举是否成功?根据结果奖励你自己的AI
  • 要添加一些可变性(您不想比单个AI更好),请对其他AI执行相同的操作。甚至,你自己的人工智能在与自己对抗。不过,要想让后者发挥作用,可能就需要已经象棋了,而不是完全随机下棋。你可以多次重放同一个动作,完成游戏,让你的AI随机探索新的动作和策略(例如:在路上尝试第二好的动作)
  • 使用真实玩家之间的游戏数据集为您的ML提供信息。因此,赢家和输家的每一步都可以“强化”
  • 让你的AI通过与真正的玩家比赛来学习。强化你的AI动作(输赢的)和玩家的AI动作
我不确定有什么好方法可以做到这一点,但由于我正在编写自己的带有调整功能的国际象棋引擎,我可以告诉您我是如何做到这一点的。 我正在使用遗传算法来调整评估参数,但是如果您没有评估模型适合度的方法,那么这种调整方法是非常无用的

我这样做的方式是通过随机开卷动作玩大约5-10个游戏。这样做是为了使模型不会过度拟合,因为它分析相同类型的位置。然后我收集游戏结果和引擎搜索的所有位置的评估。一场比赛的结果被表示为黑色胜利为-1,平局为0,白色胜利为+1,因此需要一些函数来缩小评估范围,使其在-1到+1之间。这里我使用了tanh(0.5*Eval(pos))

然后,对于每个位置,我计算评估和游戏结果之间的平方差,并将所有这些加起来,得到评估的成本