我开始玩强化学习(使用Sutton书)。 我无法完全理解必须减少马尔可夫状态空间与另一方面不假设什么是重要的和什么不重要的矛盾。
背景
EG。在跳棋的例子中,萨顿说,不应该为游戏中的某些动作分配奖励,例如击败对手。他声称这可能会优化AI,因为他们不会赢得比赛。因此,奖励只应该给你想要达到的结果(例如赢得比赛)。
问题1
假设(德州扑克)扑克AI只有玩家手牌和牌桌上的马尔科夫状态。这有大约52 * 51 * 50 * 49 * 48 * 47 * 46/1 * 2 * 3 * 4 * 5 * 6 * 7状态。现在假设我们希望AI考虑到玩家的钱池+他们的赌注。如果我们假设8个玩家每个都在1-200,000美元之间,这将使马尔可夫状态空间接近“无限数量的组合”。
问题2
一种减少状态的策略可能是将玩家的现金分成穷人,中等或富人。这严重减少了我们的状态空间,但是,我怎么知道a)3组足够了? b)每个群体的区别限制是什么?
欢呼,答案 0 :(得分:3)
一般方法是使用函数逼近来减小状态空间,当它变得太大时。这里的关键是你在相似的状态之间推广奖励。当然,这要求您通过利用领域知识来提出有意义的功能。遗憾的是,没有任何算法能够解决特征选择问题和控制问题以及任何关于最优性的保证(在多项式时间内),我们也不期望发明任何算法。
为了回答你的问题,1)即使是初级水平的表现,8球员限制德州扑克'远远超出了当前的艺术研究水平。在http://poker.cs.ualberta.ca/查看当前“世界上最好的计算机扑克玩家”研究。也就是说,您可以尝试将空间划分为任意特征,例如:(player [1] .cash> 1000)0:1,(player [1] .cash> 2500)0:1等等
2)很难知道你的表现有多好,通常人们只是跑它直到它开始收敛并看看它的表现如何......
答案 1 :(得分:2)
减少RL中的状态空间的建议方法是使用状态 - 动作层次结构。您可以将其分解为较小的变量,例如x1,x2,x3,而不是使用单个状态变量X.然后测量它们的转换频率并确定它们之间的依赖关系(例如x1通常在x2 = abc时改变)。然后,您可以形成一个政策,解释如何最好地转换变化较快的变量,以便更改变化较慢的变量,从而最大化奖励。
这种方法仍然相对较新,我不知道它的任何公开实现。但是,有几篇论文提出了可能的实施方案。 MAXQ algorithm假设是人为定义的层次结构,而HEXQ algorithm描述了学习层次结构和策略的方法。
答案 2 :(得分:1)
要添加到@fairidox点(我同意):如果现金玩家的底池介于1-200000之间,则按照他们所说的给定函数近似值,如果玩家不改变其行为,这是合乎逻辑的处于$ 1000或$ 1001的状态。现在,正如您在问题2中提到的那样,选择这些任意边界存在问题。
同样的逻辑适用于将机器人放置在一个物理空间中,该机器人在一个空间中的状态可能与右边1mm的状态具有相同的值。如果我们不近似,那么我们可能会争辩说我们也应该为0.5mm,0.25mm等设置一个新状态。Sutton和Barto(以及David Silver的讲座)为此讨论了Tile Coding,我认为这也可能适合您扑克示例。