姓名:王诗瑶 学号:19011210454
【嵌牛导读】阿尔法围棋(AlphaGo)是第一个击败人类职业围棋选手、第一个战胜围棋世界冠军的人工智能机器人,由谷歌(Google)旗下DeepMind公司戴密斯·哈萨比斯领衔的团队开发。其主要工作原理是“深度学习”。
【嵌牛鼻子】人工智能 深度学习 AlphaGo算法
【嵌牛提问】那么这样的一种“超级”算法有怎样的发展历程呢?
【嵌牛正文】
2016年3月,阿尔法围棋与围棋世界冠军、职业九段棋手李世石进行围棋人机大战,以4比1的总比分获胜。2016年末2017年初,该程序在中国棋类网站上以"大师"(Master)为注册帐号与中日韩数十位围棋高手进行快棋对决,连续60局无一败绩。2017年5月,在中国乌镇围棋峰会上,它与排名世界第一的世界围棋冠军柯洁对战,以3比0的总比分获胜。2017年5月27日,在柯洁与阿尔法围棋的人机大战之后,阿尔法围棋团队宣布阿尔法围棋将不再参加围棋比赛。2017年10月18日,DeepMind团队公布了最强版阿尔法围棋,代号AlphaGo Zero.
(一)
一个围棋的人工智能程序大致的思想是:围棋棋盘是19x19路,所以一共是361个交叉点,每个交叉点有三种状态,可以用1表示黑子,-1表示白字,0表示无子,考虑到每个位置还可能有落子的时间、这个位置的气等其他信息,我们可以用一个361 * n维的向量来表示一个棋盘的状态。我们把一个棋盘状态向量记为s。当状态s下,我们暂时不考虑无法落子的地方,可供下一步落子的空间也是361个。我们把下一步的落子的行动也用361维的向量来表示,记为a。
AlphaGo之父黄士杰在ICLR的论文[3]提出,从网上的围棋对战平台KGS(外国的qq游戏大厅)可以获得人类选手的围棋对弈的棋局。观察这些棋局,每一个状态s,都会有一个人类做出的落子a,这就是天然的训练样本<s,a>。我们再不断训练网络,就得到一个可以模拟人类棋手的策略函数P_human,给定某个棋局状态s,它可以计算出人类选手可能在棋盘上落子的概率分布a = P_human(s),每一步都选择概率最高的落子,对方对子后再重新计算一遍,如此往复就可以得到一个棋风类似人类的围棋程序。
(二)
但事实证明P_human这种方法还不足以对抗世界顶级围棋选手。因此黄士杰打算改进P_human算法,达到更好的效果。于是他加入了蒙特卡洛树搜索。
蒙特卡洛树搜索(Monte-Carlo Tree Search)又称随机抽样或统计试验方法。当所求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种"试验"的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。
该算法应用在围棋上具体是指,面对一个空白棋盘S0,便假设所有落子方法分值都相等,设为1。然后扔了一个骰子,从361种落子方法中随机选择一个走法a0。随机落子之后,棋盘状态变成S1,然后继续假设对方也扔了一个骰子随机走了一步,这时棋盘状态变成S2,于是一直这样随机进行,一路走到Sn,最后肯定也能分出一个胜负r,赢了就r记为1,输了则为0,假设这第一次r=1。这样便算是模拟了完整的一盘围棋。之后落子方法(S0,a0)被记录下来,提高其分数:新分数= 初始分+ r。因此分数为2,那么随着模拟路径上相应的分数的增加,随着棋局下得越来越多,那些看起来不错的落子方案的分数就会越来越高,而这些落子方案越是有前途,就会被更多的选中进行推演,于是最有“前途”的落子方法就会“涌现”出来。
之后进一步将P_human代替随机掷骰子,根据P_human的计算结果来得到a可能的概率分布,以这个概率来挑选下一步的动作。这样就既可以用P_human快速定位比较好的落子方案,又给了其他位置一定的概率。可是这种方法的最大缺点是P_human的运算速度太慢了。
因此黄士杰训练了一个简化版的P_human_fast(),把神经网络层数、输入特征都减少,耗时下降到了2us,基本满足了要求。先以P_human()来开局,走前面大概20多步,后面再使用P_human_fast()快速走到最后。兼顾了准确度和效率。
(三)
之后,黄士杰又考虑给围棋设计一个评价函数v(),在P_human()想象自己开局走了20多步之后,不需要搜索到底,如果有一个v()可以直接判断是否能赢,得到最后的结果r。
先用P_human和P_human对弈,比如1万局,就得到了一万个新棋谱,加入到训练集当中,训练出P_human_1。然后再让P_human_1和P_human_1对局,得到另外一万个新棋谱,这样可以训练出P_human_2,如此往复,可以得到P_human_n。P_human_n得到了最多的训练,棋力理应比原来更强。我们给最后这个策略起一个新名字:P_human_plus。
但P_human_plus的招法太过集中,因此训练v( )的时候,开局还是先用P_human走L步,在L+1步的时候,干脆完全随机掷一次骰子,记下这个状态SL+1,然后后面再用P_human_plus来对弈,直到结束获得结果r。如此不断对弈,由于L也是一个随机数,我们就得到了开局、中盘、官子不同阶段的很多局面s,和这些局面对应的结果r。有了这些训练样本,还是使用神经网络,把最后一层的目标改成回归而非分类,就可以得到一个v( )函数,输出赢棋的概率。
(四)
将走棋网络、快速走子、估值网络和蒙特卡洛树搜索这四项结合起来就是完整的 AlphaGo算法。
【嵌牛总结】
总体来说,AlphaGo系统由走棋网络、快速走子、估值网络和蒙特卡洛树搜索组成。一步一步进化的围棋AlphaGo算法结合了深度学习、蒙特卡洛搜索树,自我进化三种方法,并且在前期的过程中,其不断地在模仿人类以及自我对弈,这都使其成为了人工智能领域的巅峰之作。
但同时有人提出,目前的人工智能技术,都是基于数据的人工智能,简称数据智能。如AlphaGo这一系列的工作对人类的决策机制有哪些新的认识呢?其实几乎是没有的。有人认为未来的人工智能是有可能是向机制智能发展的,也就是说,我们真正需要追寻的是生物智能的本质。
因此在人工智能这条路上,还有太大的发展空间,我们需要做的还有很多。
参考资料:https://www.zhihu.com/question/41176911/answer/90118097