△后代生成中
给每一个训练样本,生成它的12个后代的状态,然后用当前的价值网络,来估计每个后代的价值 。
然后,这些后代里面,价值评估的最大值,就是这个样本的价值训练目标 。
而最大值对应的动作,就是这枚样本的策略训练目标 。
复原大法
这里,蒙特卡洛树搜索 (MCTS) 才要出场 。
团队用了一个异步MCTS,并用之前训练好的fθ网络帮它增强了一下——策略输出p可以降低它的广度,价值输出v可以降低它的深度 。
要为每一个已知状态s0,种起一棵搜索树 。
树苗是T={s0},迭代就从这个单一的 *** 开始 。
在树苗身上执行模拟遍历 (simulated traversals),直至到达一个叶节点 (leaf node) 为止 。
每一个状态(s’),都有它的专属记忆——
Ns(a),是从s开始,执行某个动作a的次数 。
Ws(a),是动作a从s那里获得的最大价值 。
Ls(a),是动作a在s处的virtual loss (虚拟损失)。
Ps(a),是动作a在s处的先验概率 。
每一次模拟,都是从根节点开始,跟随着树的策略,不断跌带着选择各种各样的动作 。
每一个时间步,都会选择一个动作 。
而Virtual loss可以避免搜索树多次关照同一个状态,也可以阻碍多个异步worker走上同样的道路 。
到达一个叶节点之后,状态就会加上后代 (s’)。这样,树上有了新的元素,后代也会生成自己的记忆 。
生生不息 。
全能小王子枝繁叶茂之后,测试一下效果:DeepCube大战另外两个魔方高手算法 。
一个是Kociemba在1992、1992年提出的两段式算法,依赖人类提供的领域知识,用群论来解魔方 。这种 *** 的特点是运行速度非常非常快,也的确能解开任何状态下的魔方 。但它所找到的解法,通常不是最优解,比其他 *** 要多花几步 。
另一个是Korf在1997年提出的迭代式深入A*(IDA\)*算法 。这种 *** 借助模式库进行启发式树搜索,无论在什么样的初始状态下,都能找到最优解,但寻找答案的过程要花费很长时间 。
这些 *** 展开了两场竞赛 。
?第一场,DeepCube和Kociemba的 *** 用640个随机打乱的魔方进行了比拼,这些魔方都被胡乱拧了1000次 。
两种 *** 都在1小时之内解开了全部魔方,Kociemba *** 的速度比较快,每个魔方用时不到1秒,而DeepCube平均每个魔方用了10分钟 。
Kociemba *** 找到的解法都在31-33步的样子,DeepCube的解法分布稍微广一点,大概从28到35都有,不过作者们说,在55%的情况下都能匹敌Kociemba ***。
第一场,比速度 。
DeepCube和Kociemba都成功复原了640个 (1000次打乱) 魔方 。
DeepCube单个魔方用时的中位数是10分钟,Kociemba是不到1秒钟 。但,在55%的魔方大战中,DeepCube或与后者速度相当,或好于后者 。
其实自学成才的DeepCube和人类智慧结晶的Kociemba,基本上还算旗鼓相当 。
至于Korf?这位选手玩一个魔方需要6天 。
△人类速拧比赛现场
第二场,比最优解 。
100个魔方,每个经过15次打乱 。
这次Korf比较厉害,中位数是13步,只有一个魔方超过15步 。
不过,DeepCube也不差,在74%的魔方上,都和Korf找到了一样的最优解 。当然DeepCube超过15步的次数,比Korf略多一点 。
至于kociemba?成绩太差,惨不忍睹 。
顺便,再和人类对比一下,三阶魔方最少步数的世界比赛中,人族的最好成绩是22步 。
如此看来,DeepCube堪称魔方全能小王子 。
殊途同归我们一直强调说,这个魔方AI,不依赖任何人类经验 。
但是,从最后的结果看,DeepCube也和人类选手类似,学到了一些“套路”,包括用复杂的排列组合来解魔方,以及与人类速拧选手相近的策略 。
- 微博运动如何计算步数?
- 秦时明月汉时关万里长征人未还什么意思 秦时明月汉时关万里长征人未还原文及翻译
- 微信一键刷步数软件 微信步数怎么刷一键重装系统
- 怎么证明微信步数98800不是刷出来的?
- 华为笔记本电脑怎么一键还原系统?华为笔记本一键还原系统的详细步骤
- 电脑想要一键还原怎么做出来 电脑想要一键还原怎么做
- 怎样从手机微信看运动步数呢?
- 腾讯微云APP还原回收站文件具体操作步骤
- 三阶魔方层先法?
- 你可以快速完成三阶魔方吗?
