论文部分内容阅读
2016年3月9日至15日,韩国九段棋手李世石与谷歌计算机AlphaGo在韩国首尔进行了一次举世瞩目的人机大战。经过5场艰难的对弈,AlphaGo以4∶1的比分取得胜利,而几个月前,它还只能战胜职业围棋二段选手樊麾。AlphaGo战胜了人类顶尖棋手,且进步速度如此之快,这不禁让人担心:这样下去,它岂不是要像《终结者》中的“天网”和《黑客帝国》中的“母体”一样,可以统治地球奴役人类了?
AlphaGo真的有这么无敌吗?它的出现,对人类而言究竟是福还是祸呢?
抛开所有高大上的描述,AlphaGo本质上只是一段很长很长的程序代码。人类眼中的下围棋,在它眼里只是不停地按照代码设定做计算。人类棋手下棋时要计算每一步棋该怎样走,走这一步是优势还是劣势,同样,AlphaGo也在做类似的计算。而支撑它进行计算的是四个程序设置:策略网络、估值网络、快速部署和蒙特卡洛树搜索。要想知道AlphaGo是怎样学棋、下棋的,我们就得好好说说这四个程序设置了。
AlphaGo的策略网络,由监督学习和强化学习两种机器学习方法搭建。听上去有些高深?别急,平时刷题不止、考试不断的你一定深有体会。
所谓的监督学习,是我们给程序一个训练集,其中一部分称为例子,相当于习题;一部分称为目标,相当于答案。然后设定一个函数模型,让程序不断把训练集的例子代入函数模型,算答案,对答案。如果答案不对,程序就去调整这个函数模型里的某些参数,再重复之前的过程,直到能得出较高的正确率。接着再给程序一个测试集,相当于考试。如果程序对测试集里的例子算出的答案正确率也比较高,表明训练成功。
对于AlphaGo来说,训练集是人类在KGS围棋对战平台上下过的数万局棋谱,其中,“例子”是给定一步以后下一步该走什么,“答案”是人类走法中较多人走的且效果不错的那步,函数模型是模拟人类大脑的“深度卷积神经网络”。这里的“神经网络”指的是一类算法结构,本质是一簇互相关联的函数;“深度”指的是“神经网络”有好多层,每层负责学习不同的知识点;“卷积”则是一类数学方法,在神经网络中处理一些函数之间的关系和提炼输入数据里的有效信息。要想完全弄清楚“卷积”,大学的时候你可得好好学习高等数学哦。
接下来的强化学习,有点像平时老师让我们用学到的知识去解决某些答案并不确定的实际问题。在监督学习的过程中,AlphaGo只是参照人类的走法大致学会了预测下一步,那么下棋的效果究竟会怎么样呢?于是我们让两个策略网络互相下棋并不断调整,看哪边下赢了就保留胜方的模式和参数,这样下过3000万盘后,AlphaGo便通过这样“左右互搏”的方式提高了策略网络的“实战能力”,避免只会照猫画虎模仿人类。
估值网络与策略网络中强化学习的过程差不多,只不过在这里AlphaGo学的不是预测下一步怎么走,而是学习评估此刻棋盘上自己下在不同地方最终获胜的概率。
快速部署又是什么呢?虽然AlphaGo已经学习了很多东西,下棋的时候还是会遇到卡壳的情形,这个时候总不能干瞪眼发愣吧?于是,AlphaGo会根据经验“猜”一步——按照正确率不太高的一个函数模型进行快速计算,然后结合估值网络得出的获胜概率分布和蒙特卡洛树搜索得到的信息判定下一步该怎么下。
最后要说的是蒙特卡洛树搜索。“蒙特卡洛”并不是人名,而是一个地名。该方法的发明人之一斯塔尼斯拉夫·乌拉姆的叔叔经常在蒙特卡洛赌场输钱,赌博和这类方法都依赖概率,因此得名。它的功能是从当前一步参照估值网络和快速部署所给的信息,去评估搜索接下来的几步,再把搜索的结果传回给策略网络和估值网络。这个过程的流程图就像不断分叉的树干,选择哪一个分支深入搜索下去则是靠一定的概率,因此被称为“蒙特卡洛树搜索”。
总的来说,AlphaGo跟人类下棋时,策略网络和快速部署负责评估下一步不同走法的好坏,估值网络负责估算当前盘面的获胜概率分布,蒙特卡洛树搜索负责结合前三者帮助找到最佳的那一步。当然,这只是粗略的分工,在AlphaGo的实际运行中,这四种程序设置是互相交叉协作的。
在跟李世石九段对决中,由于比赛规则里有时间限制,AlphaGo还额外增加了一部分程序设置用于控制时间。面对复杂度高的局面,AlphaGo的计算量会显著增加,一样会出现人类棋手的“长考”现象。为避免在一步棋中耗费太多时间,时间控制部分的程序就要权衡每步棋的时间分布。
这么看来,AlphaGo学习和下棋的过程真是比我们上课复杂枯燥多了——所有内容都是对数据的处理和计算。而且,因为只接受了“下围棋”的训练,AlphaGo只会下围棋,别的什么也不会。如果没有开发人员去调试AlphaGo的代码,修改函数模型,给予新的训练,AlphaGo就学不到新技能,逞不了什么威风。目前,AlphaGo更像是一条聪明的猎犬,必须要人类的牵引和训练才能进步。即便有坏人企图利用人工智能干坏事,情形也跟当下黑客入侵我们的电脑手机类似,自有负责信息安全的专家们去制止,更何况,人工智能的科学家们早在设计之初就把这些安全因素考虑进去了,目前最“聪明”的AlphaGo也还在科学家们的牢牢掌控之中呢。
从另一个角度看,AlphaGo的成功是因为它模仿了人类的思考方式和学习能力,这也让我们认识到了人是多么神奇的存在,认识人类自身又是一个多么广阔的领域。我们“日用而不知”的能力,包含了多少复杂的道理?这些天然的馈赠,我们不更应该好好珍惜、好好利用吗?
AlphaGo真的有这么无敌吗?它的出现,对人类而言究竟是福还是祸呢?
抛开所有高大上的描述,AlphaGo本质上只是一段很长很长的程序代码。人类眼中的下围棋,在它眼里只是不停地按照代码设定做计算。人类棋手下棋时要计算每一步棋该怎样走,走这一步是优势还是劣势,同样,AlphaGo也在做类似的计算。而支撑它进行计算的是四个程序设置:策略网络、估值网络、快速部署和蒙特卡洛树搜索。要想知道AlphaGo是怎样学棋、下棋的,我们就得好好说说这四个程序设置了。
![](http://img1.qikan.com/qkimages/xstd/xstd201606/xstd20160617-1-l.jpg)
AlphaGo的策略网络,由监督学习和强化学习两种机器学习方法搭建。听上去有些高深?别急,平时刷题不止、考试不断的你一定深有体会。
所谓的监督学习,是我们给程序一个训练集,其中一部分称为例子,相当于习题;一部分称为目标,相当于答案。然后设定一个函数模型,让程序不断把训练集的例子代入函数模型,算答案,对答案。如果答案不对,程序就去调整这个函数模型里的某些参数,再重复之前的过程,直到能得出较高的正确率。接着再给程序一个测试集,相当于考试。如果程序对测试集里的例子算出的答案正确率也比较高,表明训练成功。
对于AlphaGo来说,训练集是人类在KGS围棋对战平台上下过的数万局棋谱,其中,“例子”是给定一步以后下一步该走什么,“答案”是人类走法中较多人走的且效果不错的那步,函数模型是模拟人类大脑的“深度卷积神经网络”。这里的“神经网络”指的是一类算法结构,本质是一簇互相关联的函数;“深度”指的是“神经网络”有好多层,每层负责学习不同的知识点;“卷积”则是一类数学方法,在神经网络中处理一些函数之间的关系和提炼输入数据里的有效信息。要想完全弄清楚“卷积”,大学的时候你可得好好学习高等数学哦。
接下来的强化学习,有点像平时老师让我们用学到的知识去解决某些答案并不确定的实际问题。在监督学习的过程中,AlphaGo只是参照人类的走法大致学会了预测下一步,那么下棋的效果究竟会怎么样呢?于是我们让两个策略网络互相下棋并不断调整,看哪边下赢了就保留胜方的模式和参数,这样下过3000万盘后,AlphaGo便通过这样“左右互搏”的方式提高了策略网络的“实战能力”,避免只会照猫画虎模仿人类。
估值网络与策略网络中强化学习的过程差不多,只不过在这里AlphaGo学的不是预测下一步怎么走,而是学习评估此刻棋盘上自己下在不同地方最终获胜的概率。
快速部署又是什么呢?虽然AlphaGo已经学习了很多东西,下棋的时候还是会遇到卡壳的情形,这个时候总不能干瞪眼发愣吧?于是,AlphaGo会根据经验“猜”一步——按照正确率不太高的一个函数模型进行快速计算,然后结合估值网络得出的获胜概率分布和蒙特卡洛树搜索得到的信息判定下一步该怎么下。
最后要说的是蒙特卡洛树搜索。“蒙特卡洛”并不是人名,而是一个地名。该方法的发明人之一斯塔尼斯拉夫·乌拉姆的叔叔经常在蒙特卡洛赌场输钱,赌博和这类方法都依赖概率,因此得名。它的功能是从当前一步参照估值网络和快速部署所给的信息,去评估搜索接下来的几步,再把搜索的结果传回给策略网络和估值网络。这个过程的流程图就像不断分叉的树干,选择哪一个分支深入搜索下去则是靠一定的概率,因此被称为“蒙特卡洛树搜索”。
总的来说,AlphaGo跟人类下棋时,策略网络和快速部署负责评估下一步不同走法的好坏,估值网络负责估算当前盘面的获胜概率分布,蒙特卡洛树搜索负责结合前三者帮助找到最佳的那一步。当然,这只是粗略的分工,在AlphaGo的实际运行中,这四种程序设置是互相交叉协作的。
在跟李世石九段对决中,由于比赛规则里有时间限制,AlphaGo还额外增加了一部分程序设置用于控制时间。面对复杂度高的局面,AlphaGo的计算量会显著增加,一样会出现人类棋手的“长考”现象。为避免在一步棋中耗费太多时间,时间控制部分的程序就要权衡每步棋的时间分布。
这么看来,AlphaGo学习和下棋的过程真是比我们上课复杂枯燥多了——所有内容都是对数据的处理和计算。而且,因为只接受了“下围棋”的训练,AlphaGo只会下围棋,别的什么也不会。如果没有开发人员去调试AlphaGo的代码,修改函数模型,给予新的训练,AlphaGo就学不到新技能,逞不了什么威风。目前,AlphaGo更像是一条聪明的猎犬,必须要人类的牵引和训练才能进步。即便有坏人企图利用人工智能干坏事,情形也跟当下黑客入侵我们的电脑手机类似,自有负责信息安全的专家们去制止,更何况,人工智能的科学家们早在设计之初就把这些安全因素考虑进去了,目前最“聪明”的AlphaGo也还在科学家们的牢牢掌控之中呢。
从另一个角度看,AlphaGo的成功是因为它模仿了人类的思考方式和学习能力,这也让我们认识到了人是多么神奇的存在,认识人类自身又是一个多么广阔的领域。我们“日用而不知”的能力,包含了多少复杂的道理?这些天然的馈赠,我们不更应该好好珍惜、好好利用吗?