Q Learning 是否会从对手的随机动作中学习?

人工智能 强化学习 训练 q学习
2021-11-08 19:30:04

我创建了一个 Q 学习算法来与只选择一个随机自由列的对手进行连接四。My Q Agent 目前平均只赢了大约 0.49 场比赛(30,000 集)。我的 Q Agent 真的会从这些情节中学习吗,因为它的对手并没有“试图”击败它,因为它的随机选择背后没有策略?或者这是否应该无关紧要——如果 Q Agent 玩了足够多的游戏,那么它的对手的好坏并不重要?

1个回答

应该可以使用某种 DQN 变体来训练一个智能体,以在几千场比赛中以 100% 的几率击败一个随机智能体。

可能需要一两种更先进的技术才能将学习时间减少到数千。但是,如果您的代理在与随机代理的比赛中赢得了约 50% 的比赛,那么就出现了问题,因为这是您期望另一个随机代理的表现。即使是简单的策略,例如总是在同一列中播放,也会在很大一部分时间里击败随机代理。

首先要考虑的是 Connect 4 中的状态太多,无法使用表格 Q 学习。您必须使用 DQN 的一些变体。作为一个可以重复获胜模式的基于网格的棋盘游戏,用于 Q 函数的某种形式的卷积神经网络 (CNN) 可能是一个好的开始。

我认为第一步,您应该仔细检查您是否正确实施了 DQN。检查 TD 目标公式是否正确,并且您已实施经验回放。理想情况下,您还将有一个延迟更新的目标网络来计算 TD 目标。

第二步,尝试一些超参数的变体。学习率、探索率、重播表大小、开始学习前要玩的游戏数等。折扣因子γ略低于 1 会有所帮助(尽管这是一个偶发性问题)——它会使代理忘记更多早期时间步的初始偏差。

或者这是否应该无关紧要——如果 Q Agent 玩了足够多的游戏,那么它的对手的好坏并不重要?

在某种程度上,这是真的。在 Connect 4 中很难与完美的代理学习,因为它总是作为玩家一号获胜,这意味着所有策略都同样好,没有什么可学习的。除此之外,如果有办法取胜,最终一个具有探索性的 Q 学习代理应该会找到它。

对于随机代理,如果您的代理针对该问题正确设置,您应该会在几千场比赛后看到一些改进。碰巧的是,我目前正在使用 DQN 的变体为 Kaggle 比赛训练 Connect 4 代理,并且在 10,000 场训练游戏之后,他们始终以 100% 的实测成功率击败随机代理。为了实现这一点,我为我的代理添加了一些附加功能 - 在https://www.kaggle.com/c/connectx的论坛中有一些关于方法的讨论