李斑子
自从2016年12月29日在围棋网络对战平台现身之后,截至2017年1月4日晚,一个名为“Master”的神秘账号在与人类围棋高手的车轮战中取得了60胜0负1和的战绩,手下败将不乏柯洁、朴廷桓、古力等世界顶尖名将,甚至在对局中看不到这些顶尖名将有一点点能和Master扳手腕的可能(Master战绩中唯一的和棋还是因为对手陈耀烨在对战时掉线)。在和古力最后一战前,Master承认自己就是升级版的“阿尔法狗”(AlphaGo,谷歌旗下DeepMind公司的一款围棋人工智能)。
人算不如“狗”算
1月3日晚,在接连赢下朴廷桓和元晟溱之后,Master在围棋网络对战平台的连胜纪录达到49场。当晚第50场的对手是“潜伏”,该账号的持有者被一致认为是世界头号选手柯洁。根据最新的世界围棋排名,柯洁是如今世界棋坛积分排名第一的选手,也是榜单上唯一一名排在“阿尔法狗”之前的棋手。
这场对局在Master的快速攻击面前,“潜伏”渐渐有些捉襟见肘,最终投子认负。“抬走,下一个。”这是观战的网友们为赢棋后的Master设计的对白。
而在去年“阿尔法狗”对阵李世石的“围棋人机大战1.0”之际,柯洁曾表示:“就算它战胜了李世石,但它赢不了我。”此后他还在微博上放出豪言,“管你是阿法狗还是阿法猫!我柯洁在棋上什么大风大浪没见过?让风暴再来得猛烈点吧……”
与之形成鲜明对比的是,2016年的最后一天,正当Master大杀四方之时,柯洁在微博中写道:“新的风暴即将来袭。我从3月份到现在研究了大半年的棋软,无数次的理论、实践,就是想知道计算机到底强在哪里?昨夜辗转反侧,不想竟一夜难眠,人类数千年的实战演练进化,计算机却告诉我们人类全是错的。我觉得,甚至没有一个人沾到围棋真理的边……”
那么问题来了,这只“阿尔法狗”是怎么下棋的?为什么这么强?到底强在哪里?
还记得1997年IBM公司的“深蓝”计算机战胜国际象棋世界冠军卡斯帕罗夫那次划时代的“人机大战”吗?“深蓝”赢得比赛用的就是人类最不屑的办法——穷举——把棋盘里可能出现的所有情况都模拟出来,然后对手下的每一步棋都“了然于胸”,再选择最能赢的走法。就像拿着几个亿去买彩票,所有有可能的组合全部下注,最后中了个500万。
人工智能能在国际象棋领域这么做,完全是因为国际象棋的所有可能性是10^47,以电脑的“脑力”要列举这么多种可能性还是够用的。但要想用一模一样的办法称霸围棋棋坛,面对围棋的十九路棋盘,“阿尔法狗”要应付的可能性是2x10^170,换成自然数的形式就是2后边跟着170个0……要穷举这么多的棋谱,电脑的“脑力”显然是不够用的。要知道,全宇宙的所有原子总数也不过是10^80个。
但是,穷举还是要有的,不过要用一种聪明点的办法缩小穷举的范围。人类不是下了几千年的围棋吗?那就先拿3000万份棋谱来学习一下人类下棋的基本套路。“阿尔法狗”刚开始通过自身的“人工神经网络”来“深度学习”围棋时,就是从网络围棋对战平台KGS拿来的3000万份棋谱开始的。不过这显然是不够的,所以在继续找更多的棋谱的同时“阿尔法狗”还开始了和自己下棋玩——通过学习得来的人类下棋套路来模拟博弈,尽可能地得到更加多的棋谱来学习。
这样一来,孜孜不倦地学习了数以千万计的棋谱“阿尔法狗”就对如何合理地下棋这件事有了自己的丰富经验,这就形成了自己“价值网络”——估算每一张棋谱里的每一步棋对最后赢棋有多大帮助,并找出其中的一些规律——这大概就是人类常说的“棋感”。而再看看人类,一辈子也下不了一万盘棋,还要记要分析要总结规律?想想就心累。
“阿尔法狗”学习了海量棋谱得来的“棋感”用来模仿和预测人类下棋已经有很高的把握了,据“阿尔法狗”团队2016年的说法,“阿尔法狗” 下围棋时的落子选择能正确符合57%的人类高手。就是说有57%的人类高手在面对同样的棋局时会选择和“阿尔法狗”一样的下一步,而不符合人类高手想法的那部分并不意味着“阿尔法狗”是错的,也更有可能是人类自己犯错而已。
有了深厚的内力加持还是不够的,“阿尔法狗”还需要在对战时把自己的积淀用到实处。先前说过,“阿尔法狗”和“深蓝”在迎战人类的方法并没有什么本质上的差别,都是穷举。虽然现在“阿尔法狗”已经懂得有规律地穷举了,但是它的运算能力还是不足以穷举规律之中的棋局的所有可能走势,毕竟这个运算量对于计算机来说依然是个天文数字。
所以,“阿尔法狗”引进了另一个大杀器,蒙特卡洛树搜索(MCTS)算法。蒙特卡洛算法,是由美国数学家乌拉姆最早提出,再经数学天才冯·诺伊曼发展和完善,以赌城蒙特卡洛命名的一种算法。在过于复杂的局面中,人工智能由于硬件缺陷,无法实现穷举级别的采样,而蒙特卡洛算法正是在采样不足的情况下,通过尽可能多次的随机采样,一步一步接近最优解。举个简单例子,有一堆钻石,每次随机选一枚,选中更大的就留下。那么经过越来越多次随机选择,最终留下的那枚钻石,就必然越来越接近这堆钻石中最大的。
1997年5月,IBM公司的国际象棋电脑“深蓝”打败国际象棋世界冠军卡斯帕罗夫
具体到“阿尔法狗”下围棋这件事上,蒙特卡洛树搜索算法就是把“阿尔法狗”的“棋感”认为有可能的接下来的棋局都先过一遍(有时是走几十步之后,有时是走到对局结束),把对自己不利的都删除掉,剩下的便是胜率最高的走法,而且是每下一步棋时这么过一遍。