围棋人工智能专栏(一)AlphaGo原理浅析

游离态GLZ的围棋人工智能专栏

(一)AlphaGo原理浅析

笔者是北京大学人工智能方向保送研究生,作为人工智能和棋类运动的爱好者,希望通过这个专栏为大家科普人工智能在围棋中的应用与相关知识,请大家多多关照~

围棋是迄今为止人类发明的最复杂的游戏,在看似简单的游戏规则里面,每一步的变化加上“打劫”等特殊规则所产生的运算复杂度是天文数字量级的。因此,围棋也被认为是人工智能攻克信息完全博弈游戏最后的堡垒。而随着AlphaGo以4:1的巨大优势击败人类顶尖围棋高手李世石,这座人类博弈游戏最后的堡垒也轰然告破。

伴随着人工智能在围棋界的巨大胜利,人类棋手也开始对人工智能产生了巨大的好奇心,无数的人类职业棋手和学习者开始把人工智能作为自己学习与练习棋艺的对象。

那么问题来了,人工智能到底是怎么思考围棋的呢?人工智能又是否真的如此不可战胜?人类围棋是否会在人工智能的强大下失去光彩?从今天起,就由游离态GLZ在这里与大家一起聊聊人工智能与围棋。

首先,我们先来简单聊一聊早期的棋类人工智能是怎么回事:早期的棋类人工智能,核心思想是通过计算机强大的算力,模拟未来几十甚至上百步的所有情况,选择最好的办法落子。也就是说,计算机从当前的局面开始,自己模拟下棋双方所有可以下的招数,并且在假设对方并不失误,每一步都下出最优解的条件下,选出对于己方最优的棋招作为下一步棋。理解了这种早期的棋类人工智能思想,就可以理解为什么早期人工智能难以在围棋上有所建树了。围棋的棋盘有361个格子,远高于其他的棋类(比如国际象棋的64个格子),要是把围棋所有的状态用穷举法全部列出大概需要 10的170次方。面对这样一个天文数字,即使是计算机也难以在一个合理的时间里完成。

那么,我们的人工智能团队又是如何突破这样一个天文数字级别的复杂游戏的呢?

当下的人工智能,采用了机器学习的方式,借鉴了人类学习事物的方式,代替了笨重的计算机穷举法。凭借着计算机强大的计算能力,表现出了比人类最顶级高手还要强大的围棋能力。接下来我们就以AlphaGo为例,一起看看人工智能究竟是怎么学习围棋的。

正如古语有云:“台上三分钟,台下十年功”,AlphaGo的系统也包括了线下的学习和线上的对弈。

线下学习:

AlphaGo读取了三万份人类顶尖棋手的棋谱进行学习。学习时,AlphaGo读取棋盘整体信息,将棋盘分割成一个个的局部棋局,将棋局的整体特征和局部棋势通过两种方法进行学习。

一个是基于全局特征和深度卷积网络(CNN)训练出来的策略网络,其主要作用是给定当前盘面状态作为输入,输出下一步棋在棋盘其它空地上的落子概率。另一个是利用局部特征构建线性模型训练出来的快速走棋策略,其作用是生成走棋的招法。前者学习的精度更强,但是需要大量时间,后者学习的精度稍弱,但是效率高,耗时短。

之后,利用第t轮的策略网络与先前训练好的策略网络互相对弈,利用增强式学习来修正第t轮的策略网络的参数,最终得到增强的策略网络。这也就是AlphaGo被广大专家所激励推崇的左右互搏了。个人认为左右互搏策略对系统虽然有可观的提升,但是并不是专家所说的那么神,就好比两个围棋初学者之间经过长时间的互相切磋,就可以成为九段高手吗?显然不太现实。AlphaGo的秘密武器显然还在后头。

AlphaGo接下来先通过未增强的策略网络,生成U-1步的棋招,(U是一个1—450之间的随机数),之后由增强的策略网络完成接下来的左右互搏,直到分出胜负。以最终的胜负作为一个价值判断的标签,学习一个价值网络(Value Network),用于判断结果的输赢概率。围棋最为困难的就是很难根据当前的局势来判断最后的结果,这点职业棋手也很难掌握。通过大量的自我对弈,AlphaGo产生了3000万盘棋局,用作训练学习价值网络。这样丰富的知识,使得AlphaGo拥有了比顶级职业棋手还要强得多的“大局观”。

以上就是AlphaGo的原理浅析,更多围棋人工智能还请继续关注游离态GLZ的围棋人工智能专栏,我们下次接着聊~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190215G0JC2300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券