2006年,加拿大多伦多大学教授杰弗里·辛顿(Geoffrey Hinton)在权威学术期刊《科学》上刊文,提出了深度学习的概念,极大地发展了人工神经网络算法,为本次人工智能热潮提供了理论基础。而移动互联网的快速发展,带动了覆盖不同行业的大数据应用,为深度学习提供了源源不绝的数据燃料。计算机硬件的性能按摩尔定律的飞速提升,为人工智能提供了有力的硬件保障。上面三方面的因素相互推动,才最终促进了人工智能的这一轮爆发。
不过对大多数普通民众来说,人工智能热潮就是从阿尔法狗开始的。
2015年,阿尔法狗(AlphaGo)第一次向人类宣战,它以5∶0横扫三次斩获欧洲围棋冠军的职业二段棋手樊麾。樊麾是法国围棋队总教练,他曾多次获得法国冠军,及蝉联2013年至2015年的三届欧洲围棋冠军。2016年底,樊麾讲述了他第一次与AlphaGo比赛的感悟。樊麾当时并非没有取胜的机会,在第五盘中他本来占据一定优势,却因一个低级失误导致全败。
2016年3月9日-15日,围棋人机大战在韩国首尔举行,阿尔法狗向人类现任顶尖职业棋手李世石发起挑战,最终以4-1获胜,技惊四座。
2016年12月29日晚起到2017年1月4日晚,一个代号为Master(大师)的神秘棋手先后现身著名对弈网站弈城和野狐,在30秒一手的快棋中,大师依次对战数十位人类顶尖围棋高手,取得60胜0负的辉煌战绩。
2017年5月23日到27日,在中国乌镇围棋峰会上,阿尔法狗(大师)以3-0的总比分战胜排名世界第一的世界围棋冠军柯洁。
如今,阿尔法狗已经升级到阿尔法零(AlphaGo Zero)版本。阿尔法零与上一个版本阿尔法狗(大师)的100番棋战绩为89胜11负,与去年3月和李世石对弈的阿尔法狗的100番棋战绩为100胜0负。
也许阿尔法狗最让人们紧张的不在于它的下棋能力,而在于它进步的脚步。从艰难战胜职业二段,到勉强战胜人类九段,花了1年多;再到完胜人类棋手,它用了九个月;最后到最新版本,它压根不需要向人类学习,仅仅自我学习了40天,就完胜自己之前的版本。而人类,已经没有资格当它的对手了。
根据DeepMind公司(阿尔法狗的制造者)在2016年《自然》杂志上发表的论文,阿尔法狗的成功主要依靠以下几个方面:1. 策略网络(Policy Network),给定当前局面,预测/采样下一步的走棋。2. 价值网络(Value Network),给定当前局面,估计是白胜还是黑胜。3. 蒙特卡罗树搜索(Monte Carlo Tree Search,MCTS),快速评估棋面位置价值。至于阿尔法零,则使用了完全自我学习的强化学习算法。这里就不对这些算法展开讨论了,非专业人员只会看得昏昏欲睡,有兴趣的人可以到网络上搜索一些深入分析的文章。下面重点讲讲连接主义学派的独门秘籍----人工神经网络和深度学习,它也是上述策略网络和价值网络的核心思想。
人工神经网络,名字听起来就非常高大上,似乎是计算机对人脑的完美演绎。但是实际上,科学家对大脑的研究还远没有达到可以重建人脑的地步。人工神经网络也仅仅是一组数学模型,但是这组数学模型主要借鉴了人类神经系统的架构和功能,因此才被称为“神经网络”。为了简便起见,现在大家都把人工神经网络简称为“神经网络”。至于最近流行的深度学习,则是通过将神经网络分层,组合低层特征形成更加抽象的高层表示属性类别或特征,来理解数据中的复杂模式和关系的领域。简单地说,当一层神经网络的输出成为另一层神经网络的输入时,有效地将它们叠加起来,由此产生的神经网络就是“深度”了。
斯坦福大学的印度学生PararthShah 在2012年12月22日使用买芒果的例子解释了神经网络的作用:如果你想挑选一个最好吃的芒果,一个简单粗暴的方法是尝遍所有的芒果,然后总结出个大、深黄色的比较好吃,那么以后去买芒果的时候,就可以按上面的标准挑选。机器学习就是让机器“尝”一遍所有芒果,你可以预先告诉它哪些好吃,也可以通过某个规则让机器判断出哪些好吃,然后由机器自己去总结一套规律(如个大、深黄色)。具体说来,就是你告诉机器每一个芒果的特征(颜色,大小,软硬……),并且将输出结果(味道如何,是否好吃)描述给机器,剩下的就等机器自己去学习出一套规则。那么问题来了,机器是怎么学习到那套规则(个大、深黄色的好吃)的?那就要用到机器学习算法。神经网络也是一种机器学习算法,它虽然是目前最热门的机器学习算法,但是不代表它是唯一的,在很多领域,其它机器学习算法的表现甚至超过神经网络。下面还是用个故事来说明神经网络的运作机制吧。
故事要从2006年讲起,话说连接主义学派在之前由于神经网络模型太复杂,在实际使用中效果很差,导致了学派一度式微。好在江山代有人才出,辛顿在学派低谷期仍然坚持不懈地对神经网络进行研究,直到有一天。
明斯基年纪比较大了,他最近最喜欢的事情就是在晴朗的早晨在院子里闲逛,一边晒晒太阳,一边思考问题。这天清晨,他正在院子里闲逛。突然,一只大狗突然扑了过来,对着他的脸一通乱舔。“阿尔法,停下,快停下!”一边传来焦急的呼声。大狗终于停了下来。明斯基定睛一看,原来是只中等大小的哈士奇犬,黑白相间的脸上似乎正在做出讨好的表情,摇着尾巴对着他笑。在哈士奇的后面,一个年轻人正在拉着狗绳,一副想笑又想不出来的样子。明斯基赶忙整了整衣服,咳嗽了一声,故作威严地说:“辛顿,你怎么又在遛狗啊?还不赶紧去做研究!”辛顿连忙过来说:“老师,我正在做研究啊。”
“那你在研究什么,狗狗吗?”
“就是它。老师,通过阿尔法,我对神经网络的研究有了重大进展。”辛顿开心地说。
“哦,说来听听。”明斯基也有了兴趣。
“我是从训练阿尔法识别橘子开始的。先拿一堆的水果,告诉它哪些是橘子,哪些不是,这就是‘训练’。第一次,阿尔法通过形状判断,椭圆球体的是橘子,可是柠檬也是这种形状啊。那就第二次,闻气味,阿尔法能闻出橘子的气味;如果还不行,就加上尝味道、看色泽等等。对应到计算机算法设计中,每次判断都是经过一层神经元,每层神经元生成的结果是一组数据集,它们乘以不同的比例参数(权重)输出给下一层神经元使用。经过多层网络深度学习,阿尔法狗最终就能做出正确的判断。”辛顿自信满满地说。
“嗯,有道理。每层神经元间的传递可以认为类似人脑神经通过突触连接,而比例参数则代表了突触中脑电波信号的强度。越接近正确答案的参数得到了越大的信号强度,人脑就是这样得到正确答案的。可是这种神经网络有不可避免的问题,分层太少,往往得不到有效答案;分层太多,计算量太大导致无法使用。想当年,我也养了一只灰熊宠物来验证神经网络模型。可是你知道它是怎么死的吗?笨死的!我才给它弄了三层神经网络,它就经常死机,真是笨死了。哎呀,我可怜的小熊熊。”明斯基开始了长吁短叹。
眼看着明斯基要开始陷入漫长的回忆,辛顿赶忙插话道:“深度学习确实有这个问题,所以我研究出了一种反向传播方法。就是将每次神经网络计算的输出层和正确的结果进行比较,如果不一样,就让最后一层神经元进行参数调整,最后一层神经元不仅自己调整参数,还会反过来要求连接它的倒数第二层神经元调整,这样层层往回退着调整。经过调整的网络会在样本上继续测试,如果输出还是错,就继续来一轮回退调整,直到网络输出满意为止。就像阿尔法这条笨狗,开始怎么训练都总是找错橘子,后来就让它反过来比较,让它根据每次判断出的水果与真橘子比较,倒推回去调整每层神经元的参数。可怜我为了买不同的水果给它训练,钱包都快瘪了,好在阿尔法终于在把我吃到破产前找到了正确的橘子。你看它,现在有多肥!”
“呜呜。”阿尔法好像听懂了,呜呜地表示抗议,似乎在说,“我天天吃这么多水果也很郁闷的好吗?再吃下去,我要得糖尿病了。”
“嗯,这种算法确实大幅减少了计算量。可是计算量仍然偏大,而且算法要求提供非常多的训练数据。”明斯基一边思考一边说。
“老师真是慧眼如炬啊。”先不着痕迹地拍了拍老师的马屁,辛顿继续道:“这也是我的深度学习在最近才有了很大进步的原因。我发现现在的GPU(图形处理器)虽然设计是用来进行图像处理,但是深度学习上使用的效果也非常好。我在阿尔法狗的脑袋里植入了好多块,你看它是不是聪明了很多?”
“嗯唔。”阿尔法也适时地摇了摇脑袋,似乎对自己的聪明颇为自得。
“另外,最近的互联网发展非常快,产生了大量的数据,这也给了深度学习巨大的发展空间。你看,阿尔法这条蠢狗,也天天趴在电脑面前跟着我上网,最近还经常把我从电脑前挤开,自己看得不亦乐乎。我那台破电脑都快被它搞坏了。”辛顿悻悻地说。
阿尔法把头扭向明斯基,装着什么都没听到。
“行了,我总算听出来了,你也别抱怨阿尔法了。”明斯基回过味来,笑着说,“费用不够了就直接跟我说。我知道你最近搞深度学习很花钱。回头就给你增加预算。深度学习是我们连接派的未来,多少钱都是值得的。”
故事只是戏说,神经网络使用的算法思路虽然复杂,但是有很多大公司和组织的开放代码可用。只是实际操作时,往往需要大量的数据进行训练,还要对每层神经元间的参数进行不断调整,才能得到比较好的结果。这就需要很多的计算资源和人力投入,这正是人工智能在初期很烧钱的重要原因。
上图是个典型的四层神经网络,上一级神经元的输出是下一级神经元的输入,而且信号在相邻的两个神经元之间传播的时候需要乘上这两个神经元对应的权值。