AlphaGo 新近并且很重要的消息是,它的开发者已经找出一种储存非常类似直觉的方式。
为了解释它的运作方式,让我描述 一下AlphaGo 系统, AlphaGo 团队在一月份发表的论文描述了这一系统。(因为 AlphaGo 和李世石的比赛,这个系统的细节有所改进,但大概指导原则仍然相同。)
一开始, AlphaGo 分析了优秀人类棋手的 150,000 场比赛,使用人工神经网络去发现这些比赛中的模式。特别的是,它学会了预测人类棋手会在任何一个位置落子的可能性。 AlphaGo 的设计者后来通过反复让其与自己的早期版本对弈,改善和校正了神经网络,系统逐渐提高了获胜的机率。
这个神经网络——被称为策略网络——如何学会预测出好的落子?
概括地说,神经网络是非常复杂的数学模型,有数以百万的参数,通过调整这些参数改变模型的行为。当我说神经网络‘学习’时,意思是,计算机持续对模型参数做出微量调整,试着找到一种方式让它在比赛中得到相应微小进步。在学习的第一阶段,它试着在自我对弈中提高获胜机率。这听上去像一个疯狂的策略——反复进行微量的调整,进而获得一些极其复杂的功能——但是,如果你这样做的时间足够长,并且具备足够的计算能力,网络就会变得非常好。而且,有一件奇怪的事:没有人真正知道它变得很好的原因,因为它的提升是数十亿次自动微量调整的结果。
在这两个训练阶段之后,策略网络的围棋水平相当不错了,和人类业余选手处于相同水平。但是,距离专业水平仍有一段很长的路。在某种意义上,业余水平是一种下围棋的方式,不需要搜寻比赛的未来走法和评估选择棋盘位置价值。为了超越业余水平, AlphaGo 需要一种方式来评估这些位置的价值。
为了克服这个障碍,开发者们的核心想法是,让策略网络与自身对弈,估算一个给定棋盘位置的胜算大校胜率提供了有关棋盘位置价值的粗略估算办法。(实践中, AlphaGo 使用了一种比这种观点稍微复杂一些的变体。)然后, AlphaGo 将这种评估的方法与对许多可能走法的搜索结合起来,使搜索偏向于决策网络认为是很可能赢的走法。然后选择那个给出最高棋盘估值的棋招。
我们可以从中看到, AlphaGo 不是从以大量详尽的围棋知识为基础的评估系统开始的,这与深蓝团队所做的不同。恰好相反,通过分析成千上万场先前的比赛并进行多次自我对弈, AlphaGo 通过数十亿的微小调整,不断做出微小改进,建构出一个策略网络。然后,策略网络反过来帮助 AlphaGo 建立起一个评估系统,捕获非常类似于人类优秀棋手直觉(对不同棋盘位置价值的直觉)的东西。
按照这种方式, AlphaGo 比深蓝更加激进。因为计算发展的最早时期,计算机已经被用于搜索优化已知函数的方式。深度的解决办法仅仅是:搜索旨在优化尽管复杂但其形式主要表达出了既有国际象棋知识的函数。当然,搜索方式是聪明的,但是,与许多二十世纪六十年代的程序并无不同。
AlphaGo 也使用了搜寻和优化的思想,虽然它的搜寻方式稍微更加聪明。但是,新鲜而不同寻常的是,在前一阶段,它使用了一种神经网络,学习帮助捕捉某种好的棋盘位置感的函数。 正是通过结合这两个阶段,AlphaGo才变如此高水准。
这种复制直觉模式识别的能力,兹事体大。它也是一种更广泛趋势的一部分。在一篇早期的论文中,打造AlphaGo 的公司——也就是 Google DeepMind——打造了一个神经网络,它学会了玩雅达利公司的 2,600 个视频游戏中的 49 个经典游戏,许多时候达到了人类专家无法企及的水平。用计算机解决这个问题的保守做法是深蓝style:一位人类程序员分析每场比赛,为比赛计算出详尽的控制策略。
对比之下,深蓝的神经网络简单探索了许多游戏方式。起初,网络和人类初学者很像,玩得非常糟糕。但是,网络偶尔也会有几个神来之笔。它学会了识别游戏中好的模式——易言之,得高分的模式——这种方式就像 AlphaGo 学会好的落子方式一样。而且,当这些发生时,网络会强化这个行为,逐步提高它的游戏水平。