还记得刚刚举得船图的例子嘛?可以类比一下,机器发现现在的状态 和之前的某一
种类型有些类似,输出是一个 的向量,其中有几个值比较大(接近1就是100%),那么就用1*361
这个值当做下一个 的位置。不幸的,这种训练方法有很大的局限的,可以直观想到
的是,如果对战平台上数据本身就都是,那不是训练出来一个很蠢的神经网络嘛?棋力如何呢?
深度卷积网络策略的棋力
很不幸,据 本人说,这个网络的棋力大概相当于业余6段所有的的人类选手。远远未能Aja Huang
超过当时最强的围棋电脑程序 。CrazyStone
既然比不过,那么就学习它, 打算把 和Aja Huang
结合一下,那么问题就来了, 是怎么来解决围棋问题的呢?CrazyStone CrazyStone
这是 的老师 在2006年对围棋AI做出的另一大重要突破Aja Huang Remi Colulum
干货论文送上 MCTS
Efficient Selectivity and Backup Operators in Monte-Carlo Tree Search
MCTS 蒙特卡洛搜索树——走子演算(Rollout)
蒙特卡洛搜索树(Monte-Carlo Tree Search)是一种 的方法,它的基本思想是:
大智若愚
首先模拟一盘对决,使用的思路很简单,随机
面对一个空白棋盘 ,最初我们对棋盘一无所知,假设所有落子的方法分值
都相等,设为1
之后, 从 种方法中选一种走法 ,在这一步后,棋盘状态变为 【随机】 361
。之后假设对方也和自己一样, 走了一步,此时棋盘状态变为 →s
1
s → 1 【随机】
→s
2
s → 2
重复以上步骤直到 并且双方分出胜负,此时便完整的模拟完了一盘棋,我
们假设一个变量 ,胜利记为1,失败则为0r
那么问题就来了,如果这一盘赢了,那意味着这一连串的下法至少比对面那个二逼要明智一些,
毕竟我最后赢了,那么我把这次落子方法 记下来,
并把它的分值变化:
新分数=初始分数+r
(2-2) (2-2) 新分数 = 初始分数 + r
同理,可以把之后所有随机出来的落子方法 都应用2-2公
式,即都加 分。之后开始第二次模拟,这一次,我们对棋盘不是一无所知了,至少在 1
状态我们知道落子方法 的分值是2,其他都是1,我们使用这个数据的方法是:在0
这次 中, 。随机 我们随机到 状态的概率要比其他方法高一点
之后,我们不断重复以上步骤,这样,那些看起来不错(以最后的胜负来作为判断依据)的落子
方案的分数就会越来越高,并且这些落子方案也是比较有前途的,会被更多的选择。
→s s →
→a a →
P
human
(→s) P h u m a n ( s → )
→s
0
s → 0
→a
0
a → 0
→s
1
s → 1
→s
2
s → 2
→s
n
s → n
(→s
0
,→a
0
) ( s → 0 , a → 0 )
(→s
i
,→a
i
) ( s → i , a → i )
→s
0
s →
0 →a
0
a → 0
→a
0
a → 0
score(→s)=