我有兴趣使用神经网络制作一个简单的国际象棋引擎。我已经有一个相当不错的价值网络,但我不知道如何训练一个策略网络。我知道 Leela 国际象棋零输出大约 1800 种可能移动中的任何一种的概率。但是你如何训练这样的网络呢?当您只有在游戏中使用的 1 个动作可以使用时,您如何计算损失?
国际象棋政策网
在学习了所有关于动态规划、时间差异学习、SARSA/Q 学习的知识之后,你可能会发现强化学习还有另一个完整的维度(除了 on-policy/off-policy 的选择) ,基于模型/无模型,引导/蒙特卡洛等)。那是基于价值的方法与基于策略的方法。基于策略的方法通常在基于价值的方法之后教授,因为它们更复杂。
您可以通过使用策略梯度方法对其进行训练来学习策略函数的参数。典型的策略梯度方法是 REINFORCE,尽管这不是很有效。您可能听说过最近开发的策略梯度方法:A3C、A2C、DDPG、TRPO、PPO。. . 有几个。
当您只有在游戏中使用的 1 个动作可以使用时,您如何计算损失?
您可以使用监督学习(可能使用高质量游戏中获胜玩家的动作)来预训练策略网络——这将使用您可能从监督分类问题中熟悉的多类交叉熵损失。
策略梯度方法使用奖励求和函数,该函数定义为给定状态分布的预期奖励。如果您的网络参数是,那么它可能看起来像这样:
在哪里是在状态中花费的时间步长的预期比例. 有一种方法可以获取可用于梯度上升的样本梯度- 推导称为策略梯度定理。包含在此答案中有点长,但结果是您可以使用采样的单步生成近似梯度以改进策略。有一些变化,但例如优势演员评论家使用这个:
在哪里是您当前对优势的估计(或) 用于在状态 s 中采取特定行动。
相关的损失函数是
这函数看起来像一个奇怪的添加,但只是调整的结果考虑在当前政策中采取行动的比率。实际上它可以帮助你的直觉保持这种形式(形式很简洁,在统计中的其他地方用作“得分函数”,但对于 RL 中的任何特定内容都不是必需的)。
策略梯度的变化可能会使用除优势函数之外的其他函数,并且尚不清楚是否存在任何“最佳”函数。政策梯度理论基本上为我们提供了估计行动相对收益的方法,并允许对估计的回报进行任何抵消这不再取决于行动的选择. 因此,您可以使用任何方法来获得估计回报,并用您认为可能使更新正常化的任何方法来抵消它 - 后者的常见选择包括减去平均奖励或减去状态价值函数。