笔趣阁

手机浏览器扫描二维码访问

第三章 神经网络萃取隐蔽相关性(第3页)

处理序列信息的循环神经网络

为什么需要循环神经网络

卷积神经网络可以处理图像分类和识别。图像信息处理的特点是一张图像的所有信息同时给你,而且下一张图像和上一张图像可以完全没有关系,就像是吃一盘饺子,先吃哪个后吃哪个都无所谓。但自然界还有另外一类信息和图像不同,信息的先后顺序很重要,不能前后颠倒,像自然语言、股票曲线、天气预报数据等。和图像信息的另一个不同之处在于这些信息是连续产生的,无法分成一块一块的,像一次喝进去一瓶啤酒,你无法清楚地分成几十“口”,你就是这么咕嘟咕嘟连着灌下去的。我们把图像这样不分先后的信息称为“空间信息”,把连续的、有先后顺序的称为“时间信息”或“序列信息”。卷积神经网络每次能处理的信息都是个固定的量,所以不适合处理连续发生的信息。

于是,一种不同的神经网络——循环神经网络就应运而生了,它的结构比卷积神经网络还复杂。但循环网络背后的直觉和道理不难懂,其实掌握一门学科最重要的是理解背后的直觉,有些研究生、工程师可以背很多方程式,写很多程序,但对背后的直觉并不清晰,这就大大限制了他们的想象力和创造力。我们这本书的目的不是要把大家训练成工程师,而是通过弄懂背后的道理来对这个未来的大潮流有高屋建瓴的理解,从而产生全局性的把握。

在介绍循环神经网络之前,我们先看个例子。譬如我们在下面的句子里猜词填空:“我是广东人,会讲_____话。”在这里如果我们没有看到第一句“我是广东人”就很难填空。这就是一个典型的根据前面出现的信息对后面可能会出现的信息的预测。循环神经网络就特别适合处理这类问题。这个网络有两个特点,分别对应时间序列信息的两个特点:一是输入端可以接收连续的输入,二是可以记住信息的先后顺序。

循环神经网络背后的直觉

现在我们看看循环神经网络如何做这样的预测。像其他神经网络一样,第一步是训练机器。我们先一句一句地训练,比如训练的第一句就是“我是上海人,会讲上海话”。一开始训练机器时,给机器一个“我”字,机器会乱预测,比如预测出下个字是介词“但”,可“我但”没意义。机器和训练样本一比知道自己错了,就去调黑盒子上的旋钮,一直调到机器会在“我”后面预测出“是”来。训练就是这样给机器读大量的各种各样的句子,当机器读了很多以“我”开始的句子时,就会发现“我”后面一定是动词,特别是关系动词或能愿动词,像“我是”“我要”。但“我”后面可以有很多动词,“我想”“我吃”“我喝”,到底选哪个呢?这就需要更前面的信息了。所以循环神经网络要存储前面的信息。当机器读了很多“我是上海人,会讲上海话”“我是河南人,会讲河南话”这类的句子后,就会慢慢发现规律,这时候你让它填“我是广东人,会讲_____话”的空时,它就把我是“什么”人那个“什么”给填进去了。

这时候你会问,这好像不用这么复杂的神经网络吧,只要统计每个词后面出现的词的概率,然后预测哪个概率最高不就得了?过去的确是这么做的,但效果不好,像我们前面举的例子,“我”后面的可能性太多了。那你会接着说:“我们也统计前面更多的字不就得了?”那我问你,统计前面多少个字呢?要不要把词组和短句也作为一个单位来统计?但词组和短句多得数不清,你怎么教会机器认识哪些是词组?你会发现越深究问题就越多,而且问题变得无穷复杂,以至于都不知道该提取哪些特征。而神经网络可以自动找到那些人类找不到的或者根本没意识到的前后信息之间的相关性。就像我们之前讲到卷积神经网络不仅能找到人脸的五官特征,还能找到人平时不注意的其他特征如两眼间距等。

有兴趣的读者可以看附录2里面关于循环神经网络的技术介绍。从附录2里可以看出由于循环神经网络里有反馈回路,整个网络更是一个高度非线性、无法解析表达的网络。循环网络萃取出的数据在时间上的相关性更是人类无法感受和理解的暗知识。因为人脑非常不善于存储很长一段时间的信息。

循环神经网络的神奇应用

循环神经网络的第一个重要应用是机器翻译。机器翻译最早是语言学家手工写一大堆语法,然后根据单词出现的顺序用语法把它们组织起来。这是典型的“专家系统”。我们前面讲过,这样的手工系统无法应付千变万化的自然语言。后来的机器学习翻译就是前面说过的统计方法,统计大量的句子中每个字出现在另外一个字之后的频率,然后挑选最可能出现的那个字。我们前面也说了这种方法的局限性。现在最新、最牛的机器翻译,从谷歌、Facebook、微软到百度统统都是用循环神经网络。翻译和前面的填空例子相比,多了可用的信息。例如英文“IamChinese,Icanspeakmandarin”可以翻译成中文“我是中国人,会讲普通话”,机器翻译除了可以根据前面出现的中文词预测后面的中文词之外,还可以根据整个英文句子和整个中文句子之间的对应关系来提高预测的准确性。这就是目前最广泛使用的“编码器-解码器”翻译模型。这里用两个循环神经网络,一个网络先把整个英文句子的结构信息都压缩到一个字符中,然后第二个网络在一个字一个字地预测时可以根据这个包含了整个句子的结构信息做辅助判断。机器翻译正处在技术突破的边缘,一旦突破将给我们的生活带来巨变。

机器学习不仅在科学技术的进步上大显神威,也开始进入人文领域。循环神经网络第二个有意思的应用是写诗。我们会在第六章中详细介绍。同样的道理,还可以写小说。只要让机器大量阅读一位作者的著作,机器就会学会这个作者的文字风格,甚至可以写出海明威风格的《红楼梦》,或者曹雪芹风格的《老人与海》。

循环神经网络很神奇,但我们下面要介绍的“强化学习”更神奇。

AlphaGo与强化学习

机器学习迄今为止最让人类惊奇的表现就是下围棋。下围棋的问题是当我每走一步时,如何使得最终赢棋的概率最大?如果我不走150步,只走两步,每步双方只随机选5种走法,我走第一步有五种选择,对方对我这五种选择的每一种又有五种选择,我走第二步一共有5×5×5=125种选择。但通常走完两步离终局还很远,那我从走完第二步的这125个位置上各派出一批“侦察兵”,每个“侦察兵”蒙着头一条道走到黑,看到岔路任选一条,尽快走到终局,如果猜对了,给这个出发点加一分,猜错了,减一分。从每个位置上派出的“侦察兵”越多,从这125个出发点到终局的赢率就越准确。这个“有限出发点,随机侦察”的方法有个唬人的专业名字叫“蒙特卡洛树搜索”。蒙特卡洛是摩纳哥的赌场区,所以蒙特卡洛就是“随机”的意思。

但这种下棋策略只能勉强达到一二段的业余水平,与围棋大师相比还差得很远。为什么?

因为“侦察兵”往前走时随机选岔道实际上是随机地替对方选了走法。我们不禁会想到:见到岔路随机选多笨,完全可以根据阳光、藓苔、足迹这些东西做个判断。“侦察兵”很委屈地说:我怎么知道该怎样判断?AlphaGo寻思说:“人类2000多年下了那么多盘棋,咱能不能先学学?”这时候AlphaGo祭出了大法器,就是我们前面讲过的卷积神经网络。

卷积神经网络最适合处理图像,经过大量图片的训练后,你给它个新的图片,它告诉你是猫、狗、汽车的概率分别有多少。对于下棋,问题转化成:给个中盘,要判断哪种走法赢的概率最大。在人类下过的棋局中,每个中盘都对应着一个走法。现在可以把一个中盘看成一幅图像,把对应的走法看成与这个图像对应的物体。现在找到中盘最好的走法就相当于判断这幅图像最像哪个物体。那我就拿人类下过的棋局来训练AlphaGo里负责走子的卷积神经网络——决策网络。现在把3000万个人类走过的中盘输入给决策网络,调整决策网络上的旋钮,一直到这个网络的走法和人的走法类似。现在AlphaGo已经是七八段的水平了,但还打不过大师,为什么?虽然现在“侦察兵”每一步都是按人类的走法,但“侦察兵”的每一步只是替对方随机选一个。如果能让对方的选择也按人类的走法,这条路对弈下去就更逼真了。AlphaGo这时候拔了身上一根毫毛,吹口仙气儿,“变!”又“变”出一个一模一样的AlphaGo。哥俩都是八段,再大战百万回合,又摸索出很多原来人类没有探索过的捷径,又产生了很多数据,继续训练决策网络,没多长时间就打败了李世石,再练一阵子,在网上打出Master的旗号,横扫天下高手,无一失手,直至把柯洁挑下马。

前面介绍的无论是卷积神经网络还是循环神经网络都需要大量的训练数据,这也叫“监督学习”。在“监督学习”中通常有唯一或明确的答案,猫就是猫,狗就是狗。但生活中还有一类问题是没有明确答案的。例如我们学习骑自行车,没有人能说清楚正确姿势是什么,不管你姿势多难看,骑上去不摔倒就是对的。这类问题的特点是答案不唯一但知道结果的对错。这种通过每次结果的反馈逐渐学习正确“行为”的算法就叫“强化学习”。在强化学习算法中有一个“奖惩函数”,不同的行为会得到不同的奖惩。譬如我们在楼里打电话时,如果信号不好,我们就拿着手机,边走边问对方“能听到吗?”。我们得到的信息并不能直接告诉我们哪里信号最好,也无法告诉我们下一步应该往哪个方向走,每一步的信息只能让我们评估当前的状况是更好还是更差。我们需要走动、测试,以决定下一步应该往哪儿走。AlphaGo的随机树搜索就是强化学习,通过派出“侦察兵”来测试某种走法的赢率。赢了加一分,输了减一分,这就是强化学习中的奖惩函数,存储各种走法输赢积分的网络也叫“价值网络”。哥俩对战就是站在人类肩膀上的强化学习。所以AlphaGo是监督学习和强化学习的混合方式。

在AlphaGo的学习过程中,人类的3000万中盘仅仅把它领入门而已,进步主要靠哥俩自己厮杀。相当于你去学围棋,一开始跟着你爸学,你爸就是个业余选手,你两个星期就跟你爸学不了什么了,以后都要靠自己琢磨了。AlphaGo也一样,想清楚这点,干脆从零开始,人类2000多年积累的东西也许就是老爸那点业余水平,学不学无所谓。AlphaGoZero横空出世了,这个“Zero”就是从零学起的意思。AlphaGoZero从一开始就是哥俩自娱自乐,和AlphaGo不同的是,在下每一步棋之前,不需要随机地选125个出发点了,而是根据当前的小路“记号”和打分先在这个中盘选一个最可能赢的走法和“双胞胎弟弟”试走一次到终局,试走过程中每一步双方都用同一个决策网络指导如何走子。这个决策网络的功能很简单:给我一个中盘,我告诉你所有走法的赢率,这样一次到终局后就对从这个走法出发的路是否能赢多了点信息。一路上边走边做记号,第一,记住有没有走过这条路;第二,等到了终局后根据输赢再记下这条路的好坏。这个“做记号”就是不断更新价值网络。这样在同一个中盘哥俩试走了几万次到终局,基本摸清哪条路好走,哪条路不好走,也就是对于这个中盘我已经估摸出了所有走法的赢率。此时,我用几万次试走出来的赢率来更新决策网络。更新的方法就是用这个中盘做网络的输入,调试网络权重系数让输出的各走法赢率接近试走测出来的赢率。这一切做完后再根据测出的赢率郑重地正式走一步棋。哥哥下完一步该弟弟走了,弟弟的程序和哥哥完全一样,也是先试走许多次,用测出来的赢率更新决策网络,再根据测出来的赢率走子。以后哥俩就这么不断重复下去。AlphaGoZero诞生后的第一局的第一个中盘,哥俩完全是乱下,但第一盘走完就多了一点点知识,哥俩用这点可怜的知识走第二盘就比第一盘靠谱了一点点,架不住计算能力强大,AlphaGoZero每秒钟可以走8万步,平均一盘棋不到400步,所以哥俩一秒钟相当于下200盘棋。每盘长进一点,到第7个小时,也就是相当于下了500万盘棋后就下得像模像样了。一天半后,也就是相当于下了2600万盘棋后就超过了战胜李世石的AlphaGoLee。3天后,AlphaGoZero就和AlphaGoLee打了个100:0。AlphaGoLee一共学了3000万个中盘,大致相当于3000万400=8万盘棋,这时AlphaGoZero已经相当于下了5100万盘棋。21天后就打败了横扫天下无敌手的AlphaGoMaster,到40天后哥俩已经妥妥地称霸天下,独孤求败。到这里,AlphaGo团队终于松了口气,放下了原先的一个最大担忧:如果不让人类引进门,从零学起,这哥俩会不会在野地里瞎逛,在林子里迷路,像梦游一样原地绕大圈,永远都走不出来。这证明了在强化学习中只要每一步都知道对错,有惩罚奖励,哥俩很快就会放弃那些明显不通的绝大部分的道路,很快就会找到一条正路。AlphaGo用了1200个CPU,176个GPU,而AlphaGoZero只用了4个TPU(张量处理单元)。计算资源的大幅度下降主要来自算法的精简,不需要用人类数据训练了。由此可见,在不同的应用场景下,数据并非都那么重要。在下围棋这件事上,人类的经验反而拖了后腿。AlphaGoZero给我们最重要的启示是柯洁说的那句话,“人类下了2000年围棋,连边儿都没摸着”。非常原始的机器在自己摸索了36个小时后,就超过了全人类2000年来摸索积累的全部围棋知识。

现在请大家思考三个问题:

为什么AlphaGoZero从零学起反而比人强?

AlphaGoZero再从头学一遍,功力还和原来一样吗?

AlphaGoZero是不可战胜的吗?

神经网络悖论

读者到这里会发现一个悖论:神经网络是模仿人脑,怎么能够发现和掌握人脑无法掌握的知识?我们知道目前的半导体芯片中的人工神经网络只是对大脑的一个简单模仿,无论是在神经元数量还是在连接的复杂性上都远不如人脑。到底是什么原因使得人工神经网络能够在发现隐蔽的相关性方面远超人脑,创造出如此多的神迹呢?

第一个原因是人的感官和机器的“感官”相比实在太差。人的感官在几亿年的进化中主要是为了在自然界中觅食和求偶。所以只能感受到部分外部世界信息。比如眼睛只能看到光谱中的可见光这一小段,无法“看见”从无线电波到毫米波再到远红外的电磁波,也无法“看见”从紫外线到X射线再到伽马射线。人的耳朵也听不到20赫兹以下的亚声波和20000赫兹以上的超声波。不仅如此,人类的视觉和听觉对强度的分辨率非常粗糙,只能分出数量级。人类的触觉、嗅觉、味觉分辨率更是粗糙。而机器的“感官”,就是各类物理、化学、生物类的传感器则比人的感官精密得多。不仅可以“感受”到人类感受不到的信息,对信息的分辨率也远超人类。如果有办法把这些传感器信号不经过人类感官直接输入大脑,人类大脑也能和机器一样发现数据间复杂隐蔽的相关性吗?大脑能处理高分辨率的外界信息吗?我们可以合理地推测出大脑的进化应该和感官相匹配。如果感官只能提供低分辨率信息,大脑处理高分辨率信息的能力就是一种浪费,这种功能要么不可能演化出来,要么即使偶然变异出来也会被进化无情地消灭。

第二个原因是电子神经元比生物神经元的传输信号速度快,准确度高。由于人脑神经元在突触部分的信号是通过化学分子传导的(细胞膜内外带电的离子浓度差造成电压差),每秒钟大约只能传导400次信号。而电子神经元间的传输速度就是芯片上不同晶体管之间的传输速度,比人脑神经元要快几万倍。人脑神经元突触之间的传输非常不可靠,平均每次传输的成功率只有30%(这种随机性也许是意识“涌现”的重要条件之一),而电子神经元之间的传输可靠性几乎是100%。人脑神经元由于结构复杂,不同神经元之间的电信号会互相干扰,而电子神经元之间的干扰可以忽略不计。所以人脑神经元是一个慢腾腾的老出错的系统,而电子神经元是一个高速的精密系统。

第三个原因是目前还没有办法获得大脑内部每一个神经元的连接强度。即使我们有办法把外界传感器信号直接输入大脑,大脑也可以处理这些信息,这些信息也只能被雪藏在一个人的脑子里,成为无法沟通、无法传播、无法记录的默知识。但电子神经网络中的每一个神经元之间的连接强度,也就是两个神经元连接的权重系数都是可以存储、提取的。所以机器获得的暗知识是可以传播、复制、记录的。

所以对这个悖论的回答是,人工神经网络虽然是模仿大脑,但它具备了人类没有的三个优势:能“感受”人类感受不到的信息,与人脑相比又快又准,每一个神经元的状态都是可测量的。

神经网络五大研究前沿

之前介绍的几种神经网络都是目前商用中的主流算法,但机器学习的潜力还远没有被挖尽,现在每年关于机器学习的论文还在呈指数级增长,在研究型的大学里任何关于机器学习的课程都爆满。可以预期在今后3~5年中还会不断有新的算法突破,下面介绍的都是目前炙手可热的研究方向,每一个方向的突破都会产生巨大的商业价值。

非监督学习

在前述的机器学习算法中,我们总有一个训练数据集合,即“标注数据”,如所有汽车图片都会标注上“汽车”,所有猫的图片都会标注上“猫”等。这样在训练的输出端,我们就知道结果是否正确,因此可以用正确结果和输出结果的差来训练机器(调整各层的权重系数),就像一个妈妈教孩子认识东西,这类算法叫“监督学习”。在机器学习中还有一种算法不依赖于“标注数据”,叫“非监督学习”,像一个孩子在没人教的情况下自己学习。非监督学习最常用的情形是分类,例如一个孩子见过许多猫和狗后,如果大人不告诉孩子这两种动物的名字,孩子也许不知道名字,但慢慢会知道猫和狗是两种不同的动物。在商业上有很多应用,例如在营销上面可以根据人群的不同属性将其划分成不同人群进行精准营销;在社交媒体上面,可以根据人们之间的互动次数,划出每个人的朋友圈子;在医疗诊断上面可以根据不同症状之间的相关性更精确地预测还未发现的疾病;等等。

热门小说推荐
斗罗大陆3龙王传说

斗罗大陆3龙王传说

伴随着魂导科技的进步,斗罗大陆上的人类征服了海洋,又发现了两块大陆。魂兽也随着人类魂师的猎杀走向灭亡,沉睡无数年的魂兽之王在星斗大森林最后的净土苏醒,它要...

灵棺夜行

灵棺夜行

送葬上山,我却被装在棺材里活活给埋了,随之整个村子三百多口人一夜之间全都消失了,只有晚上这里才人声鼎沸。我从棺材里爬出来,才发现新书期间,一天二更。...

火影之穿越万界

火影之穿越万界

火影世界,一灵魂带着系统穿越而来成为自来也,精彩不断,满世界到游历,且看豪杰自来也一生传奇!!...

小妾不乖:傲娇王爷来侍寝

小妾不乖:傲娇王爷来侍寝

纳尼?大婚当天,他堂堂一个王爷就被人讹上了,不仅要帮人家养儿子,还要履行丈夫职责?!不行,我不同意。某男抗议。抗议无效。某女叉腰道。命你亥时之前洗刷干净,候着!神啊!又要侍寝?能不能装死?嘤嘤嘤...

总裁被渣指南

总裁被渣指南

每逢莫少结婚,苏与言必定出现砸场子!第七次!这是莫邵谦第七次结婚了!苏与言,你想说什么?莫公子,恭喜您又被渣了。...

每日热搜小说推荐