AlphaGo:人类围棋驶向 2.0 时代的船票

柯洁和 AlphaGo 的人机大战第一局已经宣告结束。经过近四个多小时的比赛,由Deepmind团队研发的围棋人工智能执白1/4子战胜了目前等级分排名世界第一的中国棋手柯洁九段,暂时以1比0领先。

面对这个结果,大家都已经不再惊讶,但是我们看到的比赛背后的一些东西,远比结果更加重要和有趣。

AlphaGo v2.0

 

但少有人注意到的是,昨天和柯洁对战的 AlphaGo,已经不是去年和李世乭对战的那个 AlphaGo。在一年的时间里,AlphaGo 的架构已经发生了重大的变化。你可以称其为 AlphaGo 2.0 版本。

李世乭九段在韩国迎战AlphaGo

李世乭九段在韩国迎战AlphaGo

第一个重大变化在于硬件。具体来说,从 CPU+GPU 的组合,变为采用 TPU。

发表在《自然》的论文里明确显示,一开始在 2014 年,AlphaGo 采用的是一个单机箱的异步计算架构,可以用 48 个 CPU(中央处理器)核心搭配 1、2、4、8 个 GPU(图形处理器)来组合出几种不同的配置。

但到了 2015 年 10 月,DeepMind 已经为 AlphaGo 新设计了一个分布式的计算架构:还是用 CPU 和 GPU,只是这次数量多到惊人,可以用到多达 1920 个 CPU 核心和 280 个 GPU,你可以理解为 DeepMind 为了让 AlphaGo 的性能更好配了一台超级计算机。然而,即便在最高配置上,AlphaGo 的围棋等级分 (Elo Rating) 只能达到 3168,在现在世界围棋选手排名中勉强挤进前 260 名。

alphago-arch

为什么要从单机箱改成分布式计算?这是因为在围棋对弈中时间是非常重要的因素,你用的时间比对手少,对手就可能比你提前进入读秒的紧张阶段,被迫在思考不足的前提下落子,而你却有更多时间地靠。AlphaGo 采用一种名叫蒙特卡洛树搜索的技术,不停地对下一步的棋盘、再下一步和再再下一步的棋盘可能出现的状况进行大量的计算,从而找到结果最优的下一步落子位置。而这个搜索进程需要时间,因此每一手之间给 AlphaGo 越多的时间,它能计算出越好的结果(当然,时间对结果优劣程度的帮助是递减的)。

在最早的 AlphaGo 论文中我们可以看到,从单机箱向分布式计算演进,在树形搜索进程数量在 40 不变的前提下,AlphaGo 的等级分获得了一次非常不错提升,从 2890 提升到了 3140。

alphago-arch-2

但如果继续增加 CPU 核心 和 GPU 数量呢?在前面第一个图表里我们看到,搜索进程数增加到了 64,等级分继续提高到 3168:CPU 和 GPU 所用的数量暴增了 60%,等级分却只提升了 28。显然堆 CPU 和 GPU 不是一个完美的解决方案,接下来怎么办?

在去年 3 月和李世乭的交战中,AlphaGo 首次用到了一个名叫 TPU 的东西。TPU 全名 Tensor Processing Unit(张量处理单元),专门用于机器学习训练和推理深度神经网络的处理器,非常适合 TensorFlow 开源机器学习框架。

Google 推出的 Cloud TPU

Cloud TPU

而 AlphaGo 就是用 TensorFlow 训练出来的,跑在 TPU 上性能提升巨大,可以说跟之前基于 CPU+GPU 的分布式计算系统相比,获得了一次重大的升级。从李世乭比赛之后,AlphaGo 都迁移运行在 TPU 上了。

但这还不是 AlphaGo 的 2.0 时代,更像 1.3。

真正让 AlphaGo 升级到 2.0 的是它的学习思路变化。在和李世乭交战之前,AlphaGo 的训练方式就是学习人类的棋谱。然而人类的对弈思路相对来说已经比较固定,在相当长的一段时间内已经没有太多充满创造力的新招式出现了,因此 DeepMind 给 AlphaGo 设定了一个新的学习方式,让它摒弃人类的思维定式自己跟自己下棋,左右互搏。

关于这个新的学习方式,去年韩国比赛期间社交网络上流传一个笑话:跟 AlphaGo 下完棋,李世乭回家睡了一觉,舒缓压力整理思路,AlphaGo 却连夜又自己跟自己下了一万局……玩笑之余,这也是为什么我们在 AlphaGo 和李世乭、后来的 Master,以及昨天和柯洁的对弈中,总能看到一些让人搞不清到底是程序出了 bug 还是真的颇具新意的招式。就好比神仙打架,人又怎么理解的了呢?

效用函数和策略函数,分别对应 AlphaGo 的两个思考维度:目前棋盘的现状,和自己/对手下一步的走向

效用函数和策略函数,分别对应 AlphaGo 的两个思考维度:目前棋盘的现状,和自己/对手下一步的走向

更重要的是,通过自己跟自己下棋,AlphaGo 产生了大量的新棋谱数据。这些左右互搏的棋谱和最一开始训练输入的人类棋谱并没有太大不同,也意味着 AlphaGo 已经能自己生产继续进化下去所需要的数据了。

AlphaGo 的思维方式也特别。它不考虑赢面的大小,因为它只关注一件事情:下一步落在哪里,获胜的几率最高。对此,OpenAI 的科学家安德烈·卡帕西 (Andrej Karpathy) 的评论很到位:如果 AlphaGo 发现某种下法最终以半目获胜的概率高达 99.9999999%,它是绝对不会采用另一种 99.99% 概率能以 10 目获胜的下法的。

围棋可能性复杂度示意图。AlphaGo 在每一步中策划多个方案,最终决定采用获胜概率最高的方案

围棋可能性复杂度示意图。AlphaGo 在每一步中策划多个方案,最终决定采用获胜概率最高的方案

所以你看到最后柯洁施展了全部的才华,拼尽全力与 AlphaGo 一战,你以为它给 AlphaGo 带来了巨大的压力,导致最后 AlphaGo 只赢了半目,实力相差无几,是一场焦灼的对局话,那你可能错了,因为在 AlphaGo 那里,一切都只是概率,它根本不在乎赢你多少,因为它是面向赢的几率优化的,99.9999999%胜率和 99.99% 胜率有着天壤之别——这就是它训练的任务。

 

柯洁和人类棋手的 2.0 时代

 

很多人都已经注意到,柯洁的心态,以及在公众场合的姿态,对于围棋、人类棋手和人工智能之间关系的看法,从去年 AlphaGo vs 李世乭到今天在乌镇,已经发生了很大的变化。或许打完本次比赛,柯洁也已经完成了向 2.0 版本的自己蜕变的过程。

其中有三个重要的节点,1)是柯洁去年 3 月发布的几条微博:

kejie-collage-1

你可以看出,还没有和 AlphaGo,或者更准确来讲,基于深度神经网络的围棋 AI 下过棋的柯洁,对围棋 AI 是完全没有忌惮之心的。

2)是在去年 12 月,柯洁的一条微博,让很多看好柯洁的人也开始担心他能否真的击败来势凶猛的围棋 AI。你可以从他的只言片语中很容易地读出人类棋手对于围棋 AI 的无解和无奈:

aac5fc13ly1fbae3v53fzj20qo1bedw4

紧接着,在新年之际的一场在线围棋网站对决中,由 AlphaGo 驱动的玩家“Master”在连续两场对弈中击败了“吻别”。根据围棋圈的传言,当时使用“吻别”账号的可能正是柯洁。

3)是昨天乌镇对局的前夜,柯洁在微博上发布的文章。他宣布,这次无论输赢,“都将是我与人工智能最后的三盘对局”。在文章中,他仍然坚持认为人工智能只是“冷冰冰的机器”,让人感受不到对围棋的热情和热爱。

kejie-final

但柯洁并未否定人工智能对围棋的意义,他也在文章里说,“我相信未来是属于人工智能的。”

让围棋 AI 登顶世界棋手排行榜的,肯定不是热情,而是先进的计算架构和强大的计算力。就像人类发现了石头和木棍可以被打磨成为斧头,发现一根铁棍加上一个支点就成了杠杆,发明了算盘用于辅助计算,又发明了计算机加强这种计算一样……其实,斧头、杠杆、算盘、计算机和 AlphaGo,都是同一个东西——我们称它们为工具。

斧头帮助人类战胜野兽,杠杆可以撬动重物,算盘和计算机极大地降低了复杂计算的难度,而 AlphaGo 除了挑战围棋高手,登上新闻头条,还有它最重要的作用:和人类棋手一起探寻围棋的真谛。这正是柯洁去年 12 月长微博所说的。

WechatIMG86

你甚至可以说,在去年高调击败李世乭之后,AlphaGo 和再强大的、段位再高的人类棋手下棋也没有意义了。柯洁广而告之这次三番棋将会是自己和人工智能的最后三盘对局的原因,可能也在这里:工具是为了帮助人类,而不是挑战人类存在的。人可以徒手杀死另一个人,但你不会因此而选择徒手面对另一个手持斧头的人;人同样可以笔算完成一道数学题,但相信面前摆着计算器没人会不用的;同样,AlphaGo 有帮助人类探寻围棋真谛的潜力,而这个潜力已经不需要靠人类和它对决来体现——这个道理,对于柯洁,和任何处在人类围棋弈技巅峰的棋手们,都是显而易见的。

这也是为什么我觉得,在 AlphaGo vs 柯洁这件事情上,其实我们应该关注的不是胜负手、柯洁的先后言论云云,而是更重要的事情……就像柯洁所说的那样,人类棋手将怎样和计算机结合,迈进全新的领域,达到全新的境界——人类围棋的 2.0 时代。

从这个角度看,AlphaGo,是人类棋手和围棋进入 2.0 时代的一张船票。

更多有趣好玩的内容 尽在品玩微信公众号
brand

PingWest品玩移动客户端