深度学习架构与实践
上QQ阅读APP看书,第一时间看更新

绪论

AlphaGo大战

人工智能元年:在2016年以前,要说中国最热门的专业是什么,一定是机器人,不论是中国制造2025,还是工业4.0,无不涉及机器人。可是到了2016年以后,在中国最热门的专业变成了人工智能,为什么会转变如此迅速呢?因为在2016年发生了一件在人工智能历史上具有里程碑意义的事件——AlphaGo与李世石的围棋人机大战,因此有人称2016年为人工智能元年。虽然2016年是否可以被称为人工智能元年有待商榷,但这至少可以说明AlphaGo战胜李世石的重要性。图0-1显示的是AlphaGo围棋机器人。

图0-1 AlphaGo围棋机器人

人机大战发生了什么

2016年3月9日~3月15日,由谷歌(Google)旗下DeepMind公司开发的人工智能程序——AlphaGo与当时世界顶尖的围棋选手李世石在韩国首尔进行了5盘围棋比赛,最终AlphaGo以总比分4比1的成绩战胜了李世石。

事实上,早在1997年IBM公司的“深蓝”计算机系统就以2胜3平1负的战绩战胜了当时世界排名第一的国际象棋选手加里·卡斯帕罗夫。那么为什么AlphaGo的出现会如此的振奋人心呢?

同样是战胜了棋类世界冠军,两代人工智能最重要的差别在于:深蓝是专注于国际象棋,它是以暴力穷举为基础的特定用途的人工智能;而AlphaGo是几乎没有特定领域知识的,是基于机器学习的高度通用的人工智能。

AlphaGo战胜人类有多难

首先,人类拥有一种看不见摸不着的东西——直觉。围棋常常是靠直觉完成落子的,而计算机是不可能拥有直觉的。

那么围棋可不可以用暴力穷举的方法设计下棋方法呢?我们知道所谓穷举,也叫枚举,就是将所有可能落子的方案预先全部运算出来。对于计算机而言,它本身擅长计算,所以穷举法对于计算机来讲具有天生的优势。

通过观察围棋棋盘可以看出,其由19条横线和19条竖线构成,棋子落于横竖线的交叉点上,所以棋子可放置的位置共有361个。那么,第一步有361种选择,第二步有360种选择,以后的情况大致如此。我们就以361为界,那么变化数是361!,约为10的768次方。我们再看看现在计算能力最强的计算机——美国能源部下属橡树岭国家实验室(Oak Ridge National Laboratory, ORNL)于2018年6月8日发布的新一代超级计算机“顶点(Summit)”,其浮点运算速度峰值达每秒20亿次。假如我们用此计算机完成10的768次方的计算,大约需要1076亿年。这个时间甚至长于宇宙的年龄(根据大爆炸宇宙模型推算,宇宙年龄大约为138.2亿年),所以计算机也无法通过这样的方式完成下棋。计算机下围棋模型a如图0-2所示,图中的d=1表示第一步落子,d=2表示第二步落子。

图0-2 计算机下围棋模型a

如何决定下一步是最优的,最原始的做法如图0-3所示。首先是对每一步可能的落子进行推演,然后统计每一步落子后推演获胜的概率,最后选取获胜概率最大的落子。

由图0-3下棋的方式可以看出,计算机通过暴力穷举法战胜人类并不能实现。

图0-3 计算机下围棋模型b

AlphaGo的运算机制

那么在计算机也无法拥有直觉,且在穷举法无法完成的情况下,如何才能使计算机的棋技超过人类呢?或者说如何优化算法呢?

人类是如何拥有直觉的呢?人类下棋的直觉是通过无数次下棋,积累经验,最终总结出来的。计算机虽然无法拥有直觉,但是可以相对容易地学习人类的下棋规律,从这些对局中积累经验,从而可以得出哪些地方落子会有更大的获胜概率。

优秀的棋手在下棋时也无法计算出所有可能出现的结果(即人脑的计算量无法用穷举法),那么优秀的棋手是如何下棋的呢?优秀的棋手在下棋时能够预测出接下来的2~3步可能的棋局结果,且预测步数的多少和准确性对棋局的走势有直接的影响。所以按照这种方法,落子前计算机只需要预测接下来几步的落子情况,并对这些结果进行评估,从中挑选出胜算概率最大的落子位置进行落子。AlphaGo就是采用了这样的设计思路,由于计算机下围棋是无法用穷举法实现的,因此需要降低其搜索的深度和广度,图0-4给出了围棋模型的深度和广度示意图。

图0-4 围棋模型的深度和广度示意图

降低搜索广度即去掉图0-5中d=2中的胜算概率较低的臭棋。

降低搜索深度即减少图0-6中d=Max的数量。通过这两种方法可以加快棋局推演的速度,从而减少没有价值的遍历次数。

AlphaGo是如何实现的

构建两种专家模型:落子预测器(Move Picker)+棋局价值评估器(Position Evaluator)。图0-7给出了AlphaGo所用的两种专家模型示意图。

图0-5 围棋模型降低搜索广度图

图0-6 围棋模型降低搜索深度图

图0-7中的落子预测器也被称为策略网络(Policy Network),棋局价值评估器也被称为价值网络(Value Network),这两种网络的示意图如图0-8所示。

(1)落子预测器

落子预测器也被称为AlphaGo的第一神经网络大脑,该网络大脑通过蒙特卡洛搜索树方法对棋局进行推演,从而找到最终获胜的下棋路径。然后该算法再对每一步棋子的落子方案进行回溯,从而使机器记住这样的落子方案,于是机器在之后遇到相同的棋局时选择获胜的方案概率就会大大增加。

图0-7 AlphaGo所用的两种专家模型示意图

图0-8 策略网络和价值网络

(2)棋局价值评估器

棋局价值评估器也被称为AlphaGo的第二神经网络大脑,与第一神经网络大脑相比,该网络对棋手下一步具体在哪里落子并不关心,它是从棋局整体局面出发,来判断每一个棋手赢棋的可能性,从而来辅助第一神经网络大脑。

AlphaGo的模型原理图如图0-9所示,其使用了蒙特卡洛搜索树(蒙特卡洛方法是一种通过采样的方式来快速估算的常用机器学习算法)+策略网络+价值网络共同作用。

图0-9 AlphaGo的模型原理图

所以简单地讲就是,AlphaGo在每一步下棋时,首先对策略网络推荐的几个着棋点进行搜索,以降低搜索广度;再对这些推荐的着棋点,使用价值网络评估,减少搜索深度(因此为大约每次搜索20步后的情况),从而决定最佳落子点。