健身房纸牌游戏:奖励塑造

数据挖掘 强化学习 开放式健身房
2022-03-08 14:59:55

我正在为 openai 健身房开发纸牌游戏,目前我问自己如何为它塑造奖励功能。一轮游戏由每位玩家从手中挑选一张牌组成,但并非每张牌都可以根据其中一位玩家之前打过的牌来玩。对于每组打出的牌,都有一个总顺序,使得拥有最高牌的玩家赢得这一轮。
在卡片被拒绝的情况下,我想给代理一些奖励。

在无效卡的情况下,很难说该卡是否比任何其他卡更接近其中一张有效卡。代理也应该知道此时这张卡是不可玩的。

为了完整起见,智能体对它可以记住的游戏的所有内容进行离散观察(它自己的牌、在当前回合中打出的牌、在过去回合中打出的牌、游戏模式(定义牌的总顺序))。然后它应该播放一个离散的动作,要么是开始时的游戏模式,要么是回合中的卡片。然后它要么因为它的卡被拒绝而获得奖励,要么根据它是否赢得回合而获得奖励。游戏根据该轮中出牌的星座为获胜的一轮计算一定数量的积分。

我的问题是如何确定拒绝卡和赢得一轮的奖励。有任何想法吗?正面还是负面?

如果需要更多详细信息,请询问。

1个回答

我的问题是如何确定拒绝卡和赢得一轮的奖励。有任何想法吗?正面还是负面?

在强化学习中,您必须设置奖励,以便在代理达到问题的目标时最大化它们。您应该避免尝试通过为可能帮助其实现这些目标的事情设置临时奖励来“帮助”代理。

对于卡拒绝,如果这是游戏的一部分(即打出“错误”卡是有效的,并且您输掉了轮到您的回合),那么没有奖励或负数可能就足够了。可能你不应该得到任何奖励,因为惩罚就是无论如何都没有赢得那轮比赛。

如果一张无效牌实际上不能按照游戏规则打出,并且没有“通过”动作或等价物,那么你不应该让代理人选择它。在进行动作选择时,只需将动作从考虑中删除。代理/环境以硬编码的方式强制执行此操作是可以的:如果您的代理输出一组离散的动作概率或偏好,一种常见的方法是通过环境的一组允许的动作过滤该集合,并重整化。

如果您希望代理了解正确的卡片选择怎么办?一旦你决定了,它就会成为一个学习目标,你可以使用奖励计划。动作不再是“打牌”,而是“提议打牌”。如果提案有效,则该轮比赛的状态更改和奖励将正常处理。如果提案无效,那么状态不会改变,代理应该会收到一些负奖励。这种方法需要注意两点:

  • 代理的游戏回合和时间步骤现在是分开的。这不是问题,只是要注意区别。

  • 这可能不会鼓励智能体玩得更好(事实上,对于相同数量的时间步,它可能不太了解如何获胜,因为它正忙于学习如何根据观察到的特征过滤卡片),但它会使其能够学习提出正确的卡片,而不会以硬编码的方式强加于它。

为了赢得一轮,您 可能希望根据其累积的游戏分数奖励代理。假设整个游戏的获胜者是得分最高的玩家,这应该是可以的。

然而,有一点需要注意:如果代理通过某些比赛让其他玩家得分更高,那么仅仅计算代理获得多少分并不足以使其具有竞争力。相反,您需要非常简单的稀疏奖励:例如,+1 表示获胜,0 表示平局,-1 表示失败。首先使用 RL 方法的主要优点是算法可以而且应该能够弄清楚如何使用这些稀疏信息并将其转化为最优策略。例如,这完全是 AlphaGo Zero 的工作原理——它绝对没有帮助评估临时位置,它只会根据输赢获得奖励。

如果您以+1 获胜,-1 失去奖励,那么您可能会将玩家当前的分数作为状态观察的一部分。如果存在风险/赌博因素,即得分落后的玩家可能愿意在最后一回合冒一切风险,只是为了获得整体获胜的小机会,这可能有助于决策。