领域|强化学习算法DeepCube,机器自行解决复杂魔方问题( 七 )
正如上文提到的,MCTS是一类方法,不同方法在具体细节和特征方面有所不同,本文使用的是UCT方法(Upper Confidence bound1 applied to Trees)。该方法在树上操作,其中节点是状态,边是动作,将所有状态联系起来。在多数情况下,整个树是非常巨大的,因此我们不会试图构建整个树,只是构建其中的一小部分。首先,让我们从一棵由单个节点组成的树开始,也就是我们的当前状态。
每执行一步MCTS,都要沿着树探索某些路径,一般可以面对以下两种选择:
当前节点是叶节点;
当前节点在树的中间,并具有子节点。
对于叶节点,通过对状态执行所有可能的动作对其进行“扩展”,并检查所有结果状态是否为目标状态(如果找到了魔方复原的目标状态,则搜索完成)。然后,将叶节点状态传递给模型,输出值和策略,将其存储备用。
如果当前节点不是叶节点,那么我们能够知道该节点的子节点(可到达状态),并从网络获得值和策略输出。因此,我们需要决定选择哪条路径(换句话说,探索哪种行动最优)。这一决定极其重要,甚至称得上是强化学习方法的基石,即“探索-利用问题”。一方面,神经网络的策略告诉我们该怎么做,另一方面,对于策略出错的情况,可以通过探索周围的状态来解决。但由于状态空间巨大,不能一直探索,这就要求我们在这两者之间保持平衡,这直接影响着搜索性能和结果。
为解决这个问题,对于每个状态,我们为每个可能的动作(共12个)设置计数器,每次在搜索过程中选择某一动作,相应计数器就会增加。在决定采取特定动作时,可以通过计数器进行判定,即某一动作的执行次数越多,将来选择的可能性就越小。
此外,模型返回的值也用于辅助决策,即从当前状态的值及其子节点状态的值中选择最大值进行跟踪。根据这样的模型,可以从父节点的状态找到最可能的路径。
总而言之,对于非叶节点状态,通过以下公式选择要执行的动作:
其中,N(s,a)是状态s选择动作a的次数,P(s,a)是模型为状态s返回的策略,W(s,a)是模型根据状态s的分支a下所有子节点状态返回的最大值。
重复此过程,直到找到解决方案或时间耗尽。为加快此过程,MCTS通常以并行方式进行,利用多个线程同时执行多个搜索。在这种情况下,可以从A(t)中减去一些额外损失,以防止多个线程探索相同路径。
为使用MCTS树得到复原方案,论文作者提出两种方法:
na?ve:得到目标状态后,使用从根状态开始的路径作为复原方案;
BFS方法:得到目标状态后,对MCTS树执行BFS,以找到从根到此状态的最短路径。
论文提到,第二种方法找到的复原方案比第一种方案更短,这并不奇怪,因为MCTS过程的随机性,在第一种复原方案路径中可能引入了无用的循环。
- 手机摄影技巧参考学习
- 为人处境,学习《金刚经》一句偈语,你就悟道宽心了!
- 我国历史上最邪门的禁书,学习此书者,非死即残,或断子绝孙
- 历史是由胜利者书写的,我们为什么还要学习历史?
- 慈禧|慈禧太后想当清朝女王,便向英国女王学习了一件事,使人啼笑皆非
- 酒桌上的劝酒、挡酒技术,让我们跟着胤禛一起学习和揣摩。
- 陈家|宋朝最成功的家长,三个儿子是状元,出了两个宰相,家教值得学习
- 文玩领域的中国好同学!我要是同桌肯定爱上你了
- 2021年11月16日「学习笔记」学习游击战的几点心得与思考
- 想要获得进步,就要向曾国藩等先进人物学习,成功没有捷径
