2.2 深度神经网络
2016年3月,随着Google的AlphaGo以4∶1的悬殊比分战胜韩国的李世石九段,围棋——这一人类一直认为可以在长时间内轻松碾压AI的竞技领域已然无法固守,而深度学习(deep learning)这一象征着未来人工智能领域最重要、最核心的科技也越来越成为人们关注的焦点。
这里所谓的深度学习实际指的是基于深度神经网络(deep neural networks,DNN)的学习,也就是深度人工神经网络所进行的学习过程,或称作Deep Learning。这个Deep指的是神经网络的深度(层数多)。当然,其实业界没有特别具体地定义,大于多少层的算深度网络,少于多少层的不算,没有这样一个说法。所以在这里我也就不强调多深算深的概念了,我们就权且管超过2层的——也就是1个隐藏层和1个输出层以上深度的都叫深度神经网络好了。不过呢,深度学习这个词我觉得还有另外一个层面的意思,就是说用这样一个网络可以学到很多深层次的东西,能够提取到很多用纯粹基于统计学指标、传统机器学习或显式的特征与内容描述所无法名状的东西。机器能够学习到比较丰富的信息,这是人类在发明出计算机以后一直都在尝试挑战的一个领域。读过本书姊妹篇《白话大数据与机器学习》的朋友估计应该不会陌生,在那本书中,我们讨论过很多机器学习相关的算法。在这种非深度学习的场景中——我姑且称之为“浅度学习”吧,人们输入给模型的学习样本都是要经过高度提炼的向量内容,而不能像我们在深度学习那样直接把一张图、一段语音、一段视频的多媒体资料丢给机器去学习。
就拿我们前面说过的那个例子来看,(年龄,身高,体重,血压,血脂)这样的数据向量必须由人来提取、整理并明确定义每个向量维度的确实含义。剩下的过程就是基于这些人类已经抽象过的指标来寻找它们之间的逻辑关系。这就是与“深度学习”相对的“浅度学习”的工作场景。
如果使用贝叶斯概率进行学习,那就是用统计的方法解释不同事件先验概率和后验概率的量化关系计算问题;如果使用决策树归纳一个分类模型,那就是用维度的引入把分类模型向信息熵降低的方向做引导,还是一个统计过程;如果是用支持向量机SVM做分类,那就是寻找超平面来保证分类的置信度最大,也就是让样本点距离超平面尽可能远,仍然是一个统计过程;这些问题大部分靠线性模型或者统计学概率模型能够给出清晰的物理含义解释,当然它们的局限性也非常明显。如果读者朋友对这个部分还不是太了解,建议参考相关的书籍进行一下知识补充。
注意,在这里要强调一下,在很多初学者中有一些误区,很多人会认为深度学习在任何情况下都要比传统机器学习表现更好,但实际上并不是的。其实想想也知道,这不符合“尺有所短,寸有所长”的哲学观点。从前面的叙述可以看出来,传统机器学习在工作的过程中具有非常好的解释特性,或者说你知道模型在做什么,处理的是什么特征,其中任何一个指标值的大小变化的意义会有良好的解释。而且,传统机器学习在训练的过程中需要很少的样本向量,通常都是百级或者千级就够了,这对于深度学习来说也是无法做到的——它需要数以万计的样本来做训练。所以,大家千万不要盲目迷信深度学习的能力,也不要误读了深度学习的作用。
人类的眼睛、耳朵、口舌,是上天赐给人类最敏感和感知细腻的器官。没错,眼睛让我们看到不同的形状、不同的颜色、不同的大小,它使我们能够轻松辨别千百万种不同的物体;耳朵可以听到20 Hz~20 000 Hz之间的声波,能够感知不同的人通过声波传递给我们的信息;口舌的存在也极为精妙,舌头可以用来尝出酸甜苦辣咸(医学家说“辣”的辨别其实不是舌头的特性,而是包括皮肤在内的很多细胞都有的特性),而人的声带发出的声音或高亢嘹亮,或低回婉转,能够传递蕴含着丰富信息的音频数据。
刚刚说的这些领域中的数据信息大都属于特征提取比较困难的,数据量大,而且没办法通过线性关系或者统计概率关系直接描述。这些信息中蕴含的分类规则对于只会做加减乘除、比大小和读写数据的计算机来说显得太困难了。你想啊,把一张照片送到计算机里面,你就让他判断这里面的人物漂亮不漂亮,不难为死它么?它看到的不过是一堆堆的数字而已,还没法直接比大小。
遗憾的是,这种非离散的数据信息是远比我们前面例子所指出的病患体检指标的数据难于量化的。也许有人说,不对,起码音频视频的数字化早在几十年前就已经被人类掌握并非常成熟地应用于家用PC中了,我们现在用的mpeg文件、avi文件、mp3和mp4文件,里面都蕴含着丰富的音视频多媒体信息,怎么能说难于量化呢。是的,这些文件确实可以用来承载完整的音视频信息,但是这些音视频信息最终的解读在相当长的一段时间内只能由人来完成。换句话说,在一张照片中,究竟表示的是一匹马,一辆车;在一段视频里,播放的究竟是一部歌剧,还是一部动作电影,这些内容让计算机自己来做判断和识别几乎是没有办法的。因为,我们量化存储的这些帧数据所承载的信息都是关于屏幕上某个点的颜色的,而这是极难与其实际承载的内容发生关联的,更别说还要进行相应统计和概率计算了。
比如下面这两张图片,我们打眼一看就觉得两幅雕塑表示的内容主题是相似的。但是承载它的文件你用肉眼再怎么仔细看,也无法看出这一堆堆数据之间的关系,不仅如此,即便你用其他任何一种常规性的机器学习算法,你也无法把这两个雕塑关联在一起,因为它们看上去是如此“不相似”。
在我们连图片所承载的内容信息是不是相似都无法判断的情况下,显然是没有办法做更深一步的分析的。在我们束手无策的时候,出现了一类神器一般的算法逻辑系统,这就是我们刚才所说的神经网络,尤其是层级比较深的神经网络。
深度学习(deep learning)这个概念最早是由著名计算机科学家Geoffrey Hinton等人于2006年和2007年在《科学》(《Sciences》)杂志上发表的文章中所提出的。就深度学习而言,在最初被提出的时候指的是深度神经网络(deep neural network),而随着神经网络层数的增多,网络就具备了很多原先非深度神经网络所不具备的学习能力,在设计合理的情况下它能学到很多层面的内容,显得更为“智能”。也正是因为这一点,它使我们人类感觉到它学习层面的“深度”。还是那句话,虽然“深度学习”这个词本身单指网络的深度,但是如果你认为它指的是学习层面有深度,我觉得同样不能算错,因为它真的是这样,你在后面就会看到它有多么强大了。