我准备写一个基于强化学习的国际象棋引擎。 我想培训评估功能,并找出董事会最重要的功能的重量。
我不是机器学习专家,我试图从书本和教程中学习。在每个教程中,奖励都非常简单,通常为1,0,可能为-1,但在国际象棋中没有这种明显的奖励(无论是检查配对位置)。 例如,假设我在董事会中有一个情况。我做10次(随机)动作,此时我应该计算起始位置和当前位置之间的奖励,差异(或误差)。当我的唯一评估功能正在接受培训时,如何做到这一点?
我想避免使用其他引擎'评分系统,因为我觉得宁愿被监督学习,这不是我的目标。
答案 0 :(得分:1)
你不能直接这样做。
我可以建议一些方法:
答案 1 :(得分:0)
我不确定有什么好的方法可以做到这一点,但由于我正在编写自己的国际象棋引擎,并带有调整功能,因此我可以告诉您我是如何做到的。 我正在使用遗传算法来调整评估参数,但是如果您没有评估模型的适应度的方法,那么调整的方法就毫无用处。
我这样做的方法是玩大约 5 到 10 场随机开书动作的游戏。这样做是为了使模型不会过度拟合,因为它分析了相同类型的位置。然后我收集游戏的结果和引擎搜索到的所有位置的评估。游戏结果表示为 -1 表示黑方获胜,0 表示平局,+1 表示白方获胜,因此需要一些函数将评估缩小到 -1 到 +1 的范围内。这里我使用了 tanh(0.5*Eval(pos))。
然后,对于每个位置,我计算评估和比赛结果之间的平方差,并将所有这些相加得到评估成本。