Fre*_*ick 6 python reinforcement-learning tic-tac-toe q-learning
我正在尝试实现一个 Q 学习代理来学习在井字游戏中与随机代理对战的最佳策略。
我制定了一个我相信会奏效的计划。只有一个部分我无法理解。这是因为环境中有两个玩家。
现在,Q Learning 代理应该对当前状态s采取行动,给定一些策略采取a的行动,给定动作的连续状态s',以及从该连续状态收到的任何奖励,r。
让我们把它放到一个元组中 (s, a, r, s')
现在通常一个代理会对它在给定动作中遇到的每个状态采取行动,并使用 Q 学习方程来更新前一个状态的值。
然而,由于 Tic Tac Toe 有两个玩家,我们可以将状态集分成两个。一组状态可以是学习代理开始采取行动的状态。另一组状态可以是对手开始行动的地方。
那么,我们是否需要将状态一分为二?或者学习代理是否需要更新游戏中访问的每个状态?
I feel as though it should probably be the latter, as this might affect updating Q Values for when the opponent wins the game.
Any help with this would be great, as there does not seem to be anything online that helps with my predicament.
一般来说,如果您假设对手也可以学习,那么直接将 Q-learning 应用于两人游戏(或其他类型的多智能体环境)不太可能产生很好的结果。不过,你特别提到
与随机代理对战
这意味着它实际上可以起作用,因为这意味着对手没有学习/改变其行为,因此你可以可靠地将对手视为“环境的一部分”。
正是这样做也可能是您可以采取的最佳方法。将对手(及其行为)视为环境的一部分意味着您基本上应该完全忽略对手要移动的所有状态。每当你的智能体采取行动时,你也应该立即为对手生成一个行动,然后才将结果状态作为下一个状态。
因此,在元组中(s, a, r, s'),我们有:
s= 您的代理人要搬迁到的州a= 您的代理执行的操作r= 一步奖励s'=您的代理将再次移动的下一个状态对手要移动的状态,以及他们采取的行动,根本不会出现。它们应该被简单地视为环境中不可观察的、不确定的部分。从算法的角度来看,在s和之间没有其他状态s',其中存在对手可以采取行动。从算法的角度来看,环境只是不确定的,这意味着a在状态下采取行动s有时会随机导致s',但有时也可能随机导致不同的状态s''。
请注意,这只能准确地起作用,因为您写道对手是随机代理(或者更重要的是,具有固定策略的非学习代理)。一旦对手也获得了学习能力,这将完全崩溃,你必须转向适当的多代理版本的强化学习算法。
| 归档时间: |
|
| 查看次数: |
1739 次 |
| 最近记录: |