减少强化学习中马尔可夫状态的数量
Posted
技术标签:
【中文标题】减少强化学习中马尔可夫状态的数量【英文标题】:Reducing the number of markov-states in reinforcement learning 【发布时间】:2011-06-27 23:17:48 【问题描述】:我开始玩强化学习(使用 Sutton 的书)。 我无法完全理解必须减少马尔可夫状态空间,而另一方面又不对什么是重要的,什么不做假设之间的悖论。
背景
例如。以跳棋为例,Sutton 表示不应将奖励分配给游戏中的某些动作,例如击败对手的棋子。他声称这可能会优化 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) 每个组的区分限制是什么?
干杯,
【问题讨论】:
【参考方案1】:补充@fairidox 点(我同意):如果玩家的现金底池在 1-200000 之间,那么按照他们所说的给定函数近似值,玩家不会改变他们的行为是合乎逻辑的,如果他们处于拥有 1000 美元或 1001 美元的状态。现在,正如您在问题 2 中提到的,选择这些任意边界存在问题。
同样的逻辑适用于将机器人置于物理空间中,其在一个空间中的状态可能与右侧 1 毫米处的状态具有相同的值。如果我们没有近似,那么我们可能会争辩说我们也应该为 0.5mm、0.25mm 等设置一个新状态。Sutton 和 Barto(以及 David Silver 的讲座)为此讨论了 Tile Coding,我认为这也可能适合您的扑克的例子。
【讨论】:
我刚刚看到原帖上的日期。我通过“相关”侧边栏找到了这个帖子,并认为我可以提供帮助。随意删除。【参考方案2】:在 RL 中减少状态空间的一种建议方法是使用状态-动作层次结构。您可以将其分解为更小的变量,例如 x1、x2、x3,而不是使用单个状态变量 X。然后测量它们的转换频率并确定它们之间的依赖关系(例如,当 x2=abc 时,x1 通常会发生变化)。然后,您可以制定一个策略,解释如何最好地转换变化较快的变量,以改变变化较慢的变量,从而最大化奖励。
这种方法仍然相对较新,我不知道它有任何公开的实现。然而,有几篇论文提出了可能的实现。 MAXQ algorithm 采用人工定义的层次结构,而 HEXQ algorithm 描述了一种学习层次结构和策略的方法。
【讨论】:
听起来很有趣,但我不确定如何应用它。对于扑克游戏,是(a)你的牌还是(b)你的下注与你的资金持有量是***的?我都可以争论。【参考方案3】:一般的方法是在状态空间变得太大时使用函数逼近来减少状态空间。这里的关键是你在相似的状态之间推广奖励。当然,这需要您通过利用领域知识提出有意义的功能。不幸的是,没有任何算法可以同时解决特征选择问题和控制问题以及任何关于最优性的保证(在多项式时间内),我们也不希望发明任何算法。
为了回答您的问题,1) 即使是在 8 人限制德州扑克中的初学者级别表现也远远超出了当前最先进的研究水平。在http://poker.cs.ualberta.ca/ 上查看当前“世界上最好的电脑扑克玩家”研究。也就是说,您可以尝试将空间划分为任意特征,例如: (player[1].cash > 1000) 0:1 、 (player[1].cash > 2500) 0:1 等。
2) 很难知道你的表现有多好,通常人们只是运行它,直到它开始收敛,然后看看它的表现如何......
【讨论】:
让 AI 首先将您的状态空间划分为函数近似值,然后使用它们来完成真正的工作,这听起来很有趣 :-)以上是关于减少强化学习中马尔可夫状态的数量的主要内容,如果未能解决你的问题,请参考以下文章
David Silver强化学习Lecture2:马尔可夫决策过程