两个不同时间尺度的两个 DQN

人工智能 强化学习 深度学习
2021-11-12 04:35:56

我有以下情况。代理人玩游戏并想像往常一样最大化累积的奖励,但它可以选择对手。n对手。

在剧集中e,代理必须首先选择一个对手。然后对于每一步t在剧集中e,它与选定的对手进行游戏。每一步t,它在步骤中选择的动作之后收到奖励t(对于选定的对手)。如何使用 DQN 最大化预期奖励?很明显,选择“错误的”(最强的)对手对代理来说不是一个好的选择。因此,为了最大化累积的奖励,代理必须在两个不同的时间尺度上采取两项行动。

我开始使用两个 DQN 来解决它,一个用来决定要对抗的对手,一个用来对抗选定的对手。我有两个重复的超参数(batch_size,target_update_freq等),每个 DQN 一个。你见过这样的两个 DQN 吗?我应该同时训练 DQN 吗?

我得到的结果并不是那么好。累积的奖励在减少,损失并不总是在减少......

1个回答

从评论中,您说除了在单个情节中得分高外,选择对手没有“外部”目标。

您可以最初的对手选择建模为部分独立的马尔可夫决策过程 (MDP),其中选择对手是一个单步插曲,其回报等于参与游戏的次要 MDP 获得的任何奖励。然而,这个“外部” MDP 根本不是一个 MDP,它更像是一个上下文强盗。此外,内部玩游戏代理的表现会随着对手的选择而变化,随着时间的推移,随着它学会更好地对抗每个对手。这使得外部 MDP 不平稳。它还需要内部 MDP 知道它面临的对手是什么,以便正确预测正确的选择和/或未来的奖励。

最后一部分——任何“内部”代理都需要意识到它正在对抗的对手——无论你选择什么结构,都可能是必要的。对手的选择需要成为这个内部代理状态的一部分,因为它会对未来可能的奖励产生影响。对手的特征也需要成为您可以用于外部代理的任何预测模型的一部分。

对于您的问题,一个更自然且可能更有用的 MDP 模型是有一个 MDP,其中第一个操作a0就是选择对手。这与您用于描述问题的语言相匹配,并解决了您尝试运行代理层次结构的问题。分层强化学习是一件真实的事情,对于解决可以分解为代理可以自主发现的有意义的子目标的问题非常有趣,但它似乎不适用于您的问题。

这给您留下了一个实际问题,即创建一个模型,该模型可以在两组完全不同的动作之间进行选择。选择对手动作只发生在游戏的第一个状态,两组动作完全不重叠。然而,就理论 MDP 模型而言,这根本不是问题。如何让 Q 函数逼近器适应两种截然不同的动作类型只是一个实际问题。有几种方法可以解决这个问题。这里有几个可能对你有用:

一个共享网络

总是预测各种动作选择,所以代理一直预测切换对手直到游戏结束。然后将操作选项过滤到仅在任何时间步可用的选项。什么时候t=0仅将预测用于选择对手的动作,例如t1仅使用与游戏中的移动有关的预测。

两个独立的逼近器

在你的代理中有两个函数逼近器,用一个来预测奖励t=0这涵盖了不同的对手选择,并在游戏的其余部分使用另一个。如果n很小并且对手之间没有概括(即没有对手“统计数据”可以为最终结果提供某种线索),那么对于第一个逼近器,您甚至可以使用 Q 表。

对于更新步骤,您需要知道是否在一个或其他 Q 函数中建模了任何特定的操作值 - 这自然会引导您引导

q^o(s0,a0,θ0)r1+γmaxaq^p(s1,a,θ1)

在哪里q^o是你选择对手的行动价值的近似模型(和a0必须是对手的选择)在游戏开始时,并且q^p是您用于其余部分的 nodel(和a必须是游戏中的位置游戏)。我滥用了这里代表用于将动作值更新为新估计的任何过程 - 一种表格方法,它将是当前估计的滚动平均值,在神经网络中当然是使用反向传播的梯度下降。