[随笔]人工智能的演化——从魔术到AlphaGo
很难对人工智能进行一个确切而没有争议的定义。但毫无疑问,当一台机器可以和人类进行智力上的博弈时,我们会认为它在某种程度上具备了“智能”的属性。因此,在人工智能的发展史上,自动对弈的机器永远是最受大众关注的一部分。 魔术 1770年,奥地利的一位发明家向哈布斯堡王朝的统治者献上了一台前所未有的神奇机器——土耳其行棋傀儡(The Turk)。献上者声称,行棋傀儡依靠精巧的机括设计而充满“智慧”,可以轻巧地击败人类象棋棋手。在之后一百年间,这台“智慧”机器确实击败了绝大部分挑战者。行棋傀儡让世人为之着迷,科学协会纷纷宣称智能机器的时代即将到来,然而再也没有人能制造出其他智能机器。 直到1850年,方有人揭示了行棋傀儡的秘密:原来在它的隔层里,蜷缩着一位在时刻操纵棋局的人类象棋大师,而向观众们展示的齿轮与发条都是在没有意义的空转。行棋傀儡显然不具备任何意义上的智能,它只是包装着复杂、华丽的金属外壳的魔术。 然而行棋傀儡的出现,确实唤起了人类对于智能机器的无限渴望。 蛮力:穷举法 直到上世纪50年代电子计算机的出现,让智能机器终于摆脱了物理形态的桎梏,开始真正的发展。早期的棋类AI是以蛮力搜索为基础的,以穷尽所有棋路(搜索树)来找到最优解。然而棋路的集合是几何级数式的增长,即便每一步棋只有10种选择(树宽),在十几次推演(树高)后,其搜索树也将变的异常庞大,这对当时的计算机运算能力是一种严苛的挑战。在这种情况下,如果要在有限时间内遍历搜索树的分叉,就只能牺牲搜索的深度,也就是减少向前“看”的步数。因此,这种笨拙的穷举法只能适用在较为简单的游戏,在国际象棋等较复杂对弈中很难与人类对抗。 取舍:剪枝搜索 在有限的计算能力下,如果为了保证达到一定的搜索深度,利用已经搜索过的状态对搜索分叉进行剪枝,以提高搜索的效率。剪树搜索的实现可以大致分为三步:首先,建立一个局面的评价体系,例如在国际象棋中是赋予每个棋子不同的分值等等;然后,模拟双方进行若干步的搜索树,根据评价体系对结果进行打分;最后,利用打分结果剪掉较差的搜索树分叉,而仅对保留的较好分叉进行更深层次的搜索。并且可以根据具体的算法不断重复以上剪枝过程。 依靠剪枝算法和优秀的硬件能力,计算机“深蓝”于1997年开拓性地击败了国际象棋大师卡斯帕罗夫。“深蓝”的主要参与者许雄峰博士曾表示,如果“深蓝”采用蛮力搜索、而非剪枝搜索的话,它每步棋的搜索都将花费近17年。(深蓝的开局往往依靠数据库中的既有棋谱,在中后盘才使用剪枝搜索) 在剪枝算法的引领下,计算机迅速在中国象棋、日本将棋等众多棋牌领域达到、超越人类顶级水平。剪枝算法的方法性和思想性,都对于之后的人工智能、大数据分析等领域产生了深远的影响。 模拟:蒙特卡罗方法 人类智力游戏的堡垒相继被攻陷,但是围棋始终屹立不倒,甚至连与业余选手有一战之力的围棋智能都不存在。为什么战无不胜的剪枝算法在围棋领域就不管用了呢?这是因为,围棋的特性决定它难以建立一个有效的剪枝评价体系。象棋可以按照场上留存棋子的数量、种类进行打分体系的构建;而围棋对于局面的判断则非常复杂,严重依赖各棋子的相互联系,并且不存在“将军”这种明确获胜标志。所以围棋的评价体系是难以用计算机语言总结、表述的。 剪枝算法在围棋上的失败是因为对于棋局难以估计、评价,因此有人想到可以使用蒙特卡罗随机模拟方法对棋局进行估计。蒙特卡罗方法的原理较为简单:就当前局势进行模拟走棋,双方随机落子直到分出胜负。通过大量模拟后,可以计算出走每个点的获胜概率。 实际使用的蒙特卡罗树搜索方法,是边建模边建立一个搜索树,父节点可以共享子节点的模拟成果,以提升搜索效率。相比剪枝算法,蒙特卡洛搜索的优点是可以省去对围棋复杂判断标准进行表述;其缺点是如果想获得比较准确的评估,需要进行大量的模拟。因此,模特卡罗搜索往往与决策模型结合使用,将宝贵的运算资源向更可能有利的落子点倾斜。决策模型的加入其实也是剪枝思想的一个延伸。但即便如此,蒙特卡罗搜索方法仍严重受到摩尔定律的制约。 在2014年,采用蒙特卡罗方法的围棋智能可以达到业余六段的水平。这是人工智能领域前所未有的突破,但是与人类最高水平的距离还很遥远。 有人断言,这个遥远的距离是一百年。 学习:神经网络模型 然而在2016年,AlphaGo以4比1击败了围棋世界冠军李世石九段;在2017年,AlphaGo以3:0完胜围棋分世界第一的柯洁九段。短短两年间,人工智能不仅走完了本以为一百年才能走完的路,而且还走的更远。 蒙特卡罗模型的最大障碍就是计算机运算能力的限制,而剪枝算法则是提升搜索树效率的有效方法。但如前文所说,围棋规律是难以用几条公式概括的,往往一个落子盘面就天翻地覆,因而无法提炼出一套有效的剪枝评价体系。因此,找到能学出规律的学习算法,才是解决剪枝评价问题的根本手段。 而人工神经网络正是擅长学习规律的算法。单个神经元模型在形式上仿效生物神经元:对多个来自其他神经元的输入值进行处理,将输入结果与阈值进行比较,再经输出函数输向其他神经元模型。而多个神经元模型的并联、串联则构成神经网络模型,而具备很深层级的神经网络模型就是典型的深度学习模型。对于围棋规律的学习是典型的监督式学习。采集的人类围棋对局数据集可以分成训练集、测试集和验证集三部分:通过训练集来发现规律,再由测试集进行校正反馈,最后由独立的验证集确认规律,以此形成基本的自动学习机制;在后期,则可以加入自我对弈的学习样本进一步训练。深度学习模型的复杂结构,使其具备非常出色的非线性拟合能力和高维表现力。同时,强大自我学习能力使其可以有效提炼剪枝评价规律。 AlphaGo在蒙特卡罗树状搜索的基础上引入了两个深度神经网络:以value networks来评估大量的选点,而以policy networks来选择落子。研究者并开发了一种新式算法来结合蒙特卡罗算法与神经网络模型。在这种结合下,研究者结合参考人类职业对局的监督式学习,和AI大量积累自对弈实现的深度学习,来训练和提高人工智能的围棋实力。可以说,AlphaGo的成功,正是出色地将剪枝搜索、蒙特卡罗方法和神经网络模型融合在一起。 尾声 就像是200多年前的行棋傀儡,AlphaGo的出现也引发了公众对于人工智能的狂热幻想。有人将AlphaGo渲染成对人类思维的模拟,也有人将AlphaGo鼓吹成掌握社会规律的钥匙,更有人将AlphaGo视为对于机器统治世界的开端。 但正如上文所述,AlphaGo只是一系列伟大算法的集合,既复杂、又简洁,但是与思维无关,也只关乎19*19间的黑白之道,更遑论世界的归属。 深度学习的算法只是实现人工智能的途径之一,而不是人工智能本身。
-
宫商角羽 赞了这篇日记 2017-10-07 14:55:10