我正在尝试实施Q学习代理,以便在Tic Tac Toe游戏中学习与随机代理对战的最佳策略。
我已经创建了一个我认为可行的计划。只有一部分我无法理解。这是因为环境中有两个玩家。
现在,Q学习代理应该根据当前状态s
,针对某些策略采取的操作a
,给定操作的连续状态s'
以及任何策略进行操作从这个连续的状态r
收到的奖励。
让我们将它放入元组(s, a, r, s')
现在,通常一个代理将对它在给定动作中遇到的每个状态起作用,并使用Q学习方程来更新先前状态的值。
然而,由于Tic Tac Toe有两个玩家,我们可以将状态集划分为两个。一组状态可以是学习代理转向行动的状态。另一组状态可以是对手转向行动的地方。
那么,我们需要将状态划分为两个吗?或者学习代理是否需要更新游戏中访问的每个州?
我觉得它可能应该是后者,因为这可能会影响对手赢得比赛时更新Q值。
对此的任何帮助都会很棒,因为似乎没有任何在线可以帮助我解决困境。
答案 0 :(得分:1)
一般来说,如果你假设对手也可以学习,直接将Q-learning应用于双人游戏(或其他类型的多智能体环境)并不会产生非常好的结果。但是,你特别提到了
用于对抗随机代理
并且这意味着它实际上可以工作,因为这意味着对手不会学习/改变其行为,所以你可以可靠地将对手视为''环境'' 强>
完全这样做也可能是您可以采取的最佳方法。将对手(和他的行为)视为环境的一部分意味着你基本上应该完全忽略对手要移动的所有状态。每当你的经纪人采取行动时,你也应该立即为对手生成一个动作,然后才将结果状态作为下一个状态。
因此,在元组(s, a, r, s')
中,我们有:
s
=代理商移动的状态a
=您的代理人执行的操作r
=一步奖励s'
= 您的座席将再次搬迁的下一个州 对手要移动的状态以及他们采取的行动根本不会出现。它们应该被简单地视为环境中不可观察的,不确定的部分。从您的算法的角度来看,s
和s'
之间没有其他状态,其中有一个对手可以采取行动。从您的算法的角度来看,环境简直是不确定的,这意味着在状态a
中采取行动s
有时会随机导致s'
,但有时也可能随机导致s''
不同的州userText = input('Enter your text: ')
sentence = userText.split('. ')
。
请注意,这只能正常工作,因为您写道对手是随机代理(或者更重要的是,具有固定政策的非学习代理)。一旦对手也获得了学习的能力,这将完全崩溃,你必须转向适当的多代理版本的强化学习算法。
答案 1 :(得分:0)
Q-Learning是来自MDP领域的算法,即MDP和Learning在实际上面对一个正在采取行动的世界 该算法建立在以下基础上:对于我自己的任何行动,世界都会给出反馈 在Q-Learning中最好的作品,当任何动作有一些立即和可测量的反应时,也从一个代理的角度看世界
我建议你将代理人作为世界的一部分来实施。也就是说,机器人可以使用各种策略,例如随机,最佳动作,固定布局,甚至是实现它作为q-learning的逻辑
如果空间大小过大(GO),如果向前看并向前运行所有状态以选择最佳状态,则可以使用monte-carlo树搜索 Tic-Tac-Toe游戏已经解决,1名玩家可以获得胜利或抽奖,如果玩得最佳,2个最佳玩家将获得平局,完整的游戏树相当容易构建