这是迄今为止,AlphaGo算法最清晰的解读

中国IDC圈6月3日报道,DeepMind团队(google旗下)的 AlphaGo (一个围棋的AI)以4:1战胜顶尖人类职业棋手李世石。她到底是怎么下棋的?

AlphaGo在面对当前棋局时,她会模拟(推演棋局)N次,选取“模拟”次数最多的走法,这就是AlphaGo认为的最优走法。

这是迄今为止,AlphaGo算法最清晰的解读

例如图中,所有没有落子的地方都是可能下子的,但在模拟中,右下那步走了79%次,就选那一步了,就那么简单。后面你会发现,“模拟”次数“最多”的走法就是统计上“最优”的走法。

这是迄今为止,AlphaGo算法最清晰的解读

1.啥是模拟?

模拟就是AlphaGo自己和自己下棋,相当于棋手在脑袋中的推演,就是棋手说的“计算”。

AlphaGo面对当前局面,会用某种(下面会讲)策略,自己和自己下。其中有两种策略:往后下几步(提前终止,因为AlphaGo有一定判断形势的能力);或者一直下到终局(终局形势判断相对简单,对于棋手简单,对于机器还有一定难度,但是这个问题已经基本解决)。对于棋手来说就是推演棋局。

AlphaGo会模拟多次,“不止一次”。越来越多的模拟会使AlphaGo的推演“越来越深”(一开始就1步,后来可能是几十步),对当前局面的判断“越来越准”(因为她知道了后面局面变化的结果,她会追溯到前面的局面,更新对前面局面的判断),使后面的模拟“越来越强”(更接近于正解,她后面模拟出来的着法会越来越强)。怎么做到的?看她怎么模拟的。

注意,这里的模拟是下棋(线上)时的模拟,后面还会有个学习时的模拟,不要混淆了。

2.AlphaGo怎么模拟的?

每次模拟中,AlphaGo自己和自己下。每步中由一个函数决定该下哪一步。函数中包括了以下几个方面:这个局面大概该怎么下( 选点:policy net),下这步会导致什么样的局面,我赢得概率是多少(形势判断:value net 和rollout小模拟),鼓励探索没模拟过的招法。这些英文名词后面会有解释。

模拟完一次后,AlphaGo会记住模拟到棋局,比如几步以后的棋局。并且计算这时policy,value。因为这时已经更接近终局了,这时的值会更加准确(相对于前面的模拟或局面)。AlphaGo还会用这些更准的值更新这个函数,函数值就越来越准了,所以模拟的每一步越来越接近正解(最优的下法),整个模拟越来越接近黑白双方的最优下法(主变化,principle variation),就像围棋书上的正解图一样。到此为止,你已经大概了解AlphaGo她怎么工作的了,下面只是一些细节和数学了。

3.那个函数是啥,好神奇?

这个函数,分为两个部分。

Q是action value,u是bonus。Q其实就是模拟多次以后,AlphaGo计算走a这步赢的概率,其中会有对未来棋局的模拟(大模拟中的小模拟),和估计。u中包括两个部分。一方面根据局面(棋形)大概判断应该有那几步可以走,另一方面惩罚模拟过多的招法,鼓励探索其他招法,不要老模拟一步,忽略了其他更优的招法。

4.Q(action value)具体是什么?

这是迄今为止,AlphaGo算法最清晰的解读

Q看上去有点复杂,其实就是模拟N次以后,AlphaGo认为她模拟这步赢得平均概率。

分母N是模拟这步棋的次数。

分子是每次模拟赢的概率(V)的加和。

其中V又包括两部分,value net对形势的判断。和一个快速模拟到终局,她赢的概率。

value net是说她看这个这个局面,就要判断赢的概率,“不准”往下几步想了。value net下面详细讲。

快速模拟是说她看这个这个局面,自己和自己下完,看看黑白谁赢的概率高。快速模拟是我们这个大模拟中的一个小模拟。

Q就是看当下(value net),也看未来(快速模拟),来决定怎么模拟(对人来说就是往哪里想,对于棋手就是思考哪些可能的着法),下棋方(模拟中下棋方黑白都是AlphaGo)下那一步赢的概率高,从而决定模拟下那一步。