100笔趣阁

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

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

一秒记住【xiaoyanwenxue.com】精彩无弹窗免费!“罗辑思维荐书集锦(套装共24册)(.shg.tw)”!

第三章神经网络——萃取隐蔽相关性

导读

在了解了机器学习各个流派的方法后,本书的主角“神经网络”现在闪亮登场。本章将深入介绍神经网络学习的原理和在商业上应用最多的几种形态,以及它们的适用范围。有了这些基础,我们才可以真正理解AlphaGoZero是怎样发现神迹般的暗知识的。对于只想了解AI商业前景的读者,也可以先跳过这一章,读完后面描述机器学习神奇应用的章节后再回来弄懂它是如何工作的。

从感知器到多层神经网络

1943年,心理学家沃伦·麦卡洛克(WarrenMcCulloch)和数理逻辑学家沃尔特·皮茨(WalterPitts)提出并给出了人工神经网络的概念及人工神经元的数学模型,从而开了人类神经网络研究的先河。世界上第一个人工神经元叫作TLU(ThresholdLinearUnit,即阈值逻辑单元或线性阈值单元)。最初的模型非常简单,只有几个输入端和输出端,对权值的设置和对阈值的调整都较为简单。

1957年,一个开创性的人工神经网络在康奈尔航空实验室诞生了,它的名字叫作感知器(Perceptron),由弗兰克·罗森布莱特(FrankRosenblatt)提出,这也是首次用电子线路来模仿神经元。他的想法很简单,如图3.1所示:将其他电子神经元的几个输入按照相应的权重加在一起,如果它们的和大于一个事先给定的值,输出就打开,让电流通向下一个神经元;如果小于这个事先给定的值,输出就关闭,没有电流流向下一个神经元。

1960年,斯坦福大学教授伯纳德·威德罗(BernardWidrow)和他的第一个博士生马尔西安·泰德·霍夫(MarcianTedHoff)提出了自适应线性神经元(ADaptiveLInearNEurons,ADLINE)。他们第一次提出了一种可以自动更新神经元系数的方法(机器自我学习的原始起点):用输出误差的最小均方去自动迭代更新神经元权重系数,直至输出信号和目标值的误差达到最小。这样就实现了权重系数可以自动连续调节的神经元。自适应线性神经元最重要的贡献是第一个使用输出信号和目标值的误差自动反馈来调整权值,这也为后面神经网络发展历史上里程碑式的反向传播算法奠定了基础。

图3.1感知器的电子线路

这个单层的神经网络也被称为自适应信号处理器,被广泛应用在通信和雷达当中。霍夫后来加入英特尔,在1971年设计了世界上第一个微处理器Intel4004。威德罗教授也是笔者20世纪80年代后期在斯坦福大学的博士生导师。笔者曾经在他的指导下做过神经网络的研究工作。图3.2是笔者2016年和他讨论神经网络未来发展时的合影,笔者手中拿的那个黑盒子就是他1960年做出的ADLINE单层神经网络。这个盒子到今天还在工作,美国国家博物馆曾经想要这个盒子做展品,但威德罗教授回答说“我还要用它来教学”。

图3.2笔者和自己当年斯坦福大学的博士导师,神经网络鼻祖之一威德罗教授的合影

威德罗教授在1962年还提出过一个三层的神经网络(Multi-LayerAdaptiveLinearNeurons,MADALINE),但没有找到一个能够用于任意多层网络的、简洁的更新权重系数的方法。由于单层网络有广泛应用而多层网络的运算速度太慢(当时的电脑运算速度是今天的100亿分之一),所以在MADALINE之后没有人去继续深入探讨多层网络。

由于缺少对人脑工作模式的了解,神经网络的进展一度较为缓慢,而它进入快速发展期的一个触发点则是医学领域的一个发现。1981年,诺贝尔生理学或医学奖颁发给了美国神经生物学家大卫·胡贝尔(DavidHubel)、托尔斯滕·威塞尔(TorstenWiesel)和罗杰·斯佩里(RogerSperry)。前两位的主要贡献是发现了人类视觉系统的信息处理采用分级方式,即在人类的大脑皮质上有多个视觉功能区域,从低级至高级分别标定为V~V5等区域,低级区域的输出作为高级区域的输入。人类的视觉系统从视网膜(Retina)出发,经过低级的V1区提取边缘特征,到V2区的基本形状或目标的局部,再到高层V4的整个目标(例如判定为一张人脸),以及到更高层进行分类判断等。也就是说高层的特征是低层特征的组合,从低层到高层的特征表达越来越抽象和概念化。至此,人们了解到大脑是一个多层深度架构,其认知过程也是连续的。

神经网络学习的本质是大量神经元通过复杂的连接形成记忆。因为分析简单且容易用电子元件实现,一开始人工神经网络就如图3.3那样由一层一层组成。其实人脑的神经元连接非常复杂,没有这么一层一层的清晰和有秩序。但我们目前并没有弄清楚人脑神经元的连接方式,先从简单的假设入手是科学的一般方法。

图3.3一个多层神经网络(其中每个方块代表一个神经元)

20世纪80年代,神经网络的另一个重大突破是当时在加利福尼亚州大学圣迭戈校区任教的美国心理学家大卫·鲁梅哈特(DavidRumelhart)和在卡内基梅隆大学任教的计算科学家杰弗里·辛顿(JeffreyHinton)提出的多层神经网络,以及一个普遍的自动更新权重系数的方法。前面说过,威德罗教授在1962年提出过一个三层的神经网络,但功亏一篑,没有找到一个简洁的任意多层网络权重系数的更新方法。这个问题在1986年被鲁梅哈特和辛顿解决了。他们借鉴了单层神经网络中威德罗-霍夫(Widrow-Hoff)反馈算法的思路,同样用输出误差的均方值一层一层递进地反馈到各层神经网络去更新系数。这个算法就是今天几乎所有神经网络都在用的“反向传播”算法。“反向传播”听上去很“高大上”,实际上就是在自动控制和系统理论里面多年一直在用的“反馈”,只不过在多层网络中反馈是一层一层递进的。因为一个多层的神经网络要通过成千上万次“用输出误差反馈调整系数”,所以运算量非常大。在20世纪80年代的计算能力限制下,神经网络的规模非常小(例如三层,每层几十个神经元)。这种小规模的神经网络虽然显示了神奇的能力(例如能够识别0~9一共10个手写体数字),但仍然无法找到真正的商用。

从第一个电子神经元感知器的发明(1957年)到神经网络的大规模应用(2012年)整整经历了55年的艰辛探索,许多天才科学家不顾嘲讽和失败,坚信这条路是对的。图3.4是在这个探索旅程中做出重大贡献的科学家。

图3.41940—2010年基于神经网络的AI发展史上做出突破性贡献的科学家

图片来源:https:beamandrew.github.iodeeplearning20170223deep_learning_101_part1.html。

神经网络模型:满是旋钮的黑盒子

在这一节中,我们用最简单的方法介绍机器学习的机理。像图3.3这样一个多层神经网络的左端是输入端,即要识别的信息从这里输入。例如要识别一幅图像,每个输入Xi就是这张图像的一个像素的灰度值(为了简单起见我们假设图像是黑白的,如果是彩色的,我们可以想象三个这样的网络重叠起来用)。从输入层的每个神经元到下一层的每个神经元都有一个连接,从输入层的第i个神经元到下一层第j个神经元的连接有一个乘法因子Wij。每一层到下一层都类似。在输出端,每根线对应一个识别出来的物体。我们可以把每个输出想象成一个灯泡。当机器发现输入是某个物体时,对应该物体的灯泡就在所有输出灯泡里最亮。

像这样一个多层次的神经网络是如何“学习”的呢?我们可以把这个多层网络看成一个黑盒子。盒子外面有许多可以调节的旋钮,如图3.5所示。

图3.5机器学习:调节黑盒子外的旋钮

我们的第一个任务是训练这个黑盒子能够识别图像中的物体。例如在图3.5中,输入端有两张图,一张汽车图片和一张猫的图片。我们训练的目的是只要输入各种汽车的图片,机器就能告诉我们“这张图是汽车”(对应“汽车”这个物体的输出端的灯泡最亮)。同样,只要我们输入猫的图片,机器就告诉我们“这张图是猫”(对应“猫”的灯泡最亮)。训练的过程是这样的:我们先指定输出的一个灯泡最亮对应于识别出了汽车,第二个灯泡最亮对应猫,等等。我们先找到足够多的汽车图片(例如1万张,训练图片越多,训练出的机器判断越准确),一张一张给机器“看”(实际训练是一组一组地给机器看)。在机器没有训练好时,当我们输入一张汽车图片时,输出的灯泡会乱亮。我们此时耐心地调节那些旋钮直到只有对应“汽车”的灯泡亮为止。然后我们输入下一张汽车图片,也调到只有对应汽车的灯泡亮为止,如此一直到1万张。然后我们再输入第一张猫的图片,调节旋钮直到对应“猫”的灯泡亮为止,也如此一直到1万张猫的图片都输入完为止。如果我们让机器学习1000种物体的图片,那我们对每种物体图片都要如此操作,让输出端对应这种物体的灯泡最亮。所以在机器学习中,“训练”是最耗时的。在训练过程中,这些训练用的图片我们事先知道是什么内容,或者叫作“标注”过的图片。当训练结束后,第二步是测试。也就是拿一些不在训练集里面的图片让机器辨认,如果机器都能辨认出来,这部机器就算训练好了,可以交付使用了。一旦训练测试结束,机器的参数集就不改变了,也就是所有的旋钮都固定不动了。只要是输入训练过的种类,机器都应该能识别出来。

如果一部机器要识别1000种物体的图片,就要至少有1000个输出端(每个输出端对应一种物体)。假设图片分辨率是100×100=10000像素(很低的分辨率),如果这部机器只有三层神经网络(深度最浅的“深度”学习网络),输入端和中间层之间,中间层和输出之间的连接就有10000×10000+10000×1000=1.1亿个。也就是这部机器有1亿多个旋钮。截至2017年,最大的神经网络已经号称有上万亿的参数,即上万亿个旋钮。这么多旋钮显然无法用人工去调节。

雾里下山:训练机器模型

幸运的是数学上200年前就有了“自动”调节旋钮的办法。这个办法叫作“最陡梯度法”,或者通俗地叫作“雾里下山法”。当我们训练一个机器学习模型时,我们事先知道每一张图片是什么物体(汽车、猫等已经标注的图片),我们输入汽车图片时,要求只有对应“汽车”的那个灯泡最亮。在我们调节旋钮之前,灯泡的亮和灭都是混乱的,和我们的要求有很大误差。这些误差是由旋钮的值决定的。如果把这些误差画成一幅图像,就像图3.6一样有很多山峰,误差就是山峰的高度,图像的横轴和纵轴就是旋钮的值。

图3.6用“最陡梯度法”寻找误差最小的“山谷”

图片来源:维基百科。

当我们输入第一张图片时,我们可能站在一个随机的位置,例如某一座山峰的山顶或半山腰,我们的任务就是走到最低的一个谷底(误差最小)。我们此时相当于在大雾中被困在山里只能看见眼前的山坡,一个最笨的办法就是“最陡下降法”:站在原地转一圈,找到一个最陡的下山方向往这个方向走一步。在这个新的位置上,再转一圈找到最陡的下山方向再走一步,如此循环,一直走到山脚为止。

在“最陡下降法”中每次转圈找最陡下山方向相当于用误差函数的偏微分方程求梯度。简单地讲,旋钮的每一步的调节值是可以算出来的。这样我们根据输出的误差一步一步地算出旋钮的调节值,直到满意为止。这种根据误差回头调节旋钮的方法也叫“反向传播算法”,意思是用输出误差一层一层地从输出端向输入端把各层的权重系数算出来。

AlphaGo的“上帝视角”

有了上面的基础,我们现在就可以理解为什么AlphaGo这么厉害。围棋棋盘有19×19=361个交叉点,每个交叉点可以二选一:白子或黑子。这样所有的摆法就是2,或者10。人类2000年来一共保留下来的围棋残局中盘大约3000万个。人类下过的棋局相当于大海里的一滴水(即使剔除那些明显没有意义的摆法)。一位棋手即使每天下2盘棋,50年内天天下,一生也只能下36500盘棋。图3.7是一张“雾里下山”的示意图。下棋的终极目标相当于在群山中找到最低的谷底(对应于最理想的走法)。如果所有可能的走法是绵延几千里的群山,人类棋手2000年来就相当于一直在同一个小山坳里面打转转。第一位棋手偶然的棋路会影响他的徒弟,以后的徒子徒孙都始终在这个小山坳附近徘徊。而机器学习像个“神行太保”,以比人快百万倍的速度迅速扫遍群山,很快就能找到一个远离人类徘徊了2000年的更低的山谷(可能还不是绝对最低,但比人类徘徊处低)。这也是连棋圣聂卫平都连呼“看不懂”AlphaGo棋路的原因。(见图3.7)

图3.7机器学习可以迅速扫过群山找到最低处

热门小说推荐
网游之龙王苍傲

网游之龙王苍傲

一个重生的天才,一段关于网游的传奇。他强大,装备技术和奇遇一个不缺。他仁慈,百花齐放比一枝独秀更能渲染这个精彩的世界。他残忍,龙之逆鳞绝不能触动。他聪明,智慧是一种力量。他虚拟的世界可以成为每个人的梦想舞台,打宝练级PK竞技等等组成了这个世界的节奏。正如足球运动是足球运动员不可缺少的部分一样,游戏,也是我们玩家的第二生命!你喜欢玩游戏吗?...

都市小世界

都市小世界

天降小世界,幸运的李青云不但得到了小世界,还得到了神尊传承,从此李青云走上了如果发展小世界的道路。...

龙行天下

龙行天下

少年富则国富!少年智则国智!少年强则国强!少年称王则国称王!...

修仙奶爸的妖孽人生

修仙奶爸的妖孽人生

小朋友,千万别惹我,我老爸超凶的!小娜扎。九天之下大境,皆为我界!孟浪淡淡道想要嫁给我,那得看我女儿喜不喜欢你!...

这个NPC太凶猛了

这个NPC太凶猛了

穿越到游戏中的魏晋,赫然发现自己竟然成了一名,只能沦为玩家经验值的底层NPC。想象到自己未来的处境,魏晋怒上心头,当即心一横,举起斧头就砍了玩家。爷不伺候了!只是,当他破罐子破摔,占山为王,准备自此逍遥自在时,却听到一则令他张目结舌的消息。我都落草为寇了,你告诉我这里是三国?PS前期发展势力,后期争霸,凭借横...

我在末日当领主

我在末日当领主

末日来临,丧尸横行,昔日的同伴变成恐怖的怪物,物资匮乏同类相残。林昊觉醒了异能,旁人避之不及的,在他眼里通通成了宝贝。叮,发现异变丧尸猫耳娘,是否契约?叮,发现进化期异变怪兽雷电蝠龙,是否契约?叮,发现觉醒异能人,是否契约?别问,问就是全都要!当别人还在争夺物资女人的时候,林昊已经左拥右抱,打下一片江山了。...

每日热搜小说推荐