2.4 从卷积神经网络理解深度学习

在机器学习中,神经网络与深度学习在当前具有很大的影响力,因此值得我们系统地进行理解。

2.4.1 神经网络与深度学习的概念关系

我们需要厘清神经网络与深度学习概念之间的关系。神经网络与深度学习的概念关系如下图所示。

神经网络与深度学习的概念关系

机器学习包含两个非常重要的概念——深度学习和神经网络(上图的两个椭圆),两者的交集(上图的灰色部分)是深度神经网络,其中包含了深度卷积神经网络(上图中间的圆形)。我选择了非常重要的深度卷积神经网络进行详细的讲解,产品经理理解了它也就基本理解了当前的人工智能。

2.4.2 从生物神经元到人工神经元

生物神经元是一种细胞,是神经系统的基本结构和功能单位之一。神经系统由大量的神经元细胞构成,神经元细胞由细胞体、树突和轴突等部分组成。神经元细胞的一端是树突,另一端是突触。某个神经元细胞通过一端的树突获取其他神经元细胞的突触传递过来的刺激,这种刺激单向地传递到另一端的突触,突触以化学或电作用的方式传给其他神经元细胞的树突。这样众多的神经元被连接起来,构成了生物(当然包括人类)的神经系统,孕育出了智能。下图为生物神经元的示意图,图中有两个神经元细胞,其通过突触、树突发生联系。

生物神经元示意图

生物神经元可以被视为基本的信息编码单元。生物神经元和生物神经系统为人工神经元和人工神经系统提供了借鉴。人工神经元模型如下图所示。

人工神经元模型

一个人工神经元接收来自其他多个神经元传递过来的多个输入值,上图用X1X2,…,Xn来表示。这些输入值乘对应的权重然后求和,上图中的W1W2,…,Wn等代表权重。最后,将所得到的和与阈值对比,如果所得到的和超过了阈值,就通过一个激励函数输出一个数。

激励函数,也叫激活函数。常见的激励函数有很多种,如Sigmoid函数(又称S形生长曲线)、ReLU函数(线性整流函数)。产品经理在入门阶段不需要深究不同激励函数的数学细节,只要知道有多种类型的激励函数即可。

为了表达简洁,后文提及的神经元均指人工神经元。

从上面的介绍可以看出,神经元的功能非常简单,看上去和“智能”一点关系都没有。为了便于理解,我们不妨将神经元和晶体管做个比较。单个晶体管功能简单、能力有限,但如果将数以亿计的晶体管有机集成到一块芯片上,它就能成为功能强大的CPU或GPU,成为当今信息社会的基石。同理,单个神经元虽然简单,但如果能把大量的神经元有机组合成一个神经网络,它就能实现人工智能。

2.4.3 神经网络

将大量的神经元按一定的结构连接起来,就构成了神经网络。具体的结构方式有很多种,下图是一种常见的神经网络结构。这是一个3层的神经网络,输入层不计入层数。

一种神经网络结构的示意图

这是一个很简单的神经网络示意图。从左往右看,输入层(input layer)输入数据,经过两层隐藏层(hidden layer)的处理,最终由输出层(output layer)输出结果,其中箭头表示数据的流向。上图中的隐藏层有两层,更简单的只有一层,更复杂的可能有数十层甚至数百层。

神经网络根据组织和训练方式的不同,分为多种类型。上面这个3层的神经网络只能实现简单的功能,如果要实现更复杂的功能,就需要一个更复杂的神经网络。当神经网络层数比较多的时候,就称其为深度学习神经网络。当前,人工智能的大多数应用成果,都是基于深度学习神经网络得出的。

2.4.4 卷积运算

卷积神经网络是一种重要的神经网络。2012年,卷积神经网络AlexNet在ImageNet图像识别大赛中获得冠军,此后卷积神经网络蓬勃发展,并获得广泛应用。

卷积神经网络是以卷积运算为核心算法的神经网络。卷积是两个函数之间进行的一种数学运算,我们结合图片识别的例子来讲解。图片识别的例子如下图所示。

图片识别的例子

为了便于理解,我特意选用了一个很简单的原图——只有5像素×8像素,图中每一个方格代表一个像素,每个像素的值只有两种可能——0或1。卷积核以3像素×3像素为例,为了与原图区别加了灰色。

卷积运算的过程如下图所示。

卷积运算的过程

卷积核先从左上角开始。灰色代表叠加上去的卷积核,每次都进行一次求内积。按顺序“滑动”卷积核,直到“滑”过整个图像,就完成了整个卷积过程,得出了卷积结果。

我们来形象地理解一下“卷积”一词——“卷”就是用一个卷积核从第一个像素开始,席卷所有的像素。“积”是内积,就是将两个矩阵对应位置的值相乘再相加。

卷积运算并不复杂,只是计算量比较大。那么,我们做卷积的目的是什么呢?简单地说,是为了从复杂的原图中提取特征。经过卷积处理之后的图像如下图所示。左图是原始图像,右图是经过卷积运算之后的结果。

经过卷积处理之后的图像

在上图中,卷积计算将原图中的很多细节“丢”掉了,但是将物体的轮廓凸显出来了。而要判断图片中是什么内容,轮廓是重要的依据。

不同的卷积核可以从图像中提取出不同的特征。提取的特征越多,机器识别图像的准确率就越高。例如,机器识别出一个物体的嘴像鸭子嘴、脖子像鸭子脖子、翅膀像鸭子翅膀、腿像鸭子腿,那就可以判断出这个物体就是鸭子。

2.4.5 卷积神经网络的结构和处理过程

理解了卷积运算及其作用,我们来看卷积神经网络的整体结构。

人在识别图像时,首先是获取颜色和亮度特征,其次是获取边、角等局部特征,再次是纹理等更复杂的信息,最后形成整个物体的概念。卷积神经网络模拟了人类的识别方式。

卷积神经网络是以卷积运算为核心的,因此卷积层是它的核心层。但除此以外,卷积神经网络还包括其他类型的层,它们紧密配合卷积层来提取、归纳图片特征,最终在输出层输出结果。

我们举一个卷积神经网络模型的实例。这个卷积神经网络的层数较少,只能识别0~9这10个阿拉伯数字。卷积神经网络模型的实例如下图所示。

卷积神经网络模型的实例

在这个卷积神经网络模型中,输入层和输出层之间有6个隐藏层:2个卷积层、2个池化层和2个全连接层。

1. 卷积层

卷积运算的目的是提取特征,为最终的综合判断奠定基础。上图的卷积神经网络有2个卷积层,可以提取更多、更细的有用特征。

2. 池化层

池化层,也有人根据其实际作用将其翻译成“下采样层”。池化是对经过卷积处理后的图像进行又一次有效特征提取和模糊处理。可以简单地将其理解为对图像数据的一次“有损压缩”,能减小数据的处理量。

池化的具体算法就是将图像的某一个区域用一个值代替,如最大值或平均值。如果取最大值,就叫作最大池化;如果取平均值,就叫作均值池化。池化进一步减小了图像尺寸,大幅减少了计算量。最大池化示意图如下所示。

最大池化示意图

上图左侧是池化之前的情况,包含4个2×2的区域。采用最大池化法,在每个2×2区域中取最大值来代表这个区域。上图右侧是池化完的数据,可以看出数据量大幅减少。

卷积层与池化层交替出现,从而可以一步步提取特征、降低数据量。

3. 全连接层

全连接层的每一个节点都与上一层的所有节点相连,这是全连接层名称的由来。卷积层提取的是局部特征,而全连接层将诸多的局部特征组合起来,从而在输出层做出最后的判断。

卷积神经网络相当于代表大会的整个运作过程,每个卷积核相当于一个领域的代表,众多的卷积核构成了全体代表。代表大会要对一个复杂议案进行讨论,最后决定是否通过。议案中不同的内容会被相应领域的代表理解,这相当于卷积;然后进行分组讨论、分组投票、分组计票,这相当于池化;最后要合并投票,这相当于全连接。

最后由输出层输出结果。

卷积神经网络不仅涉及卷积这一种算法,还涉及最大池化等其他算法。因为卷积是核心算法,所以才将这种神经网络命名为卷积神经网络。

2.4.6 神经网络“智能”的形成过程

并不是有了结构就有了“智能”,神经网络需要一个过程才能产生“智能”。

1. 设计、创建模型

根据要解决的问题,设计模型并用代码来创建模型。

刚刚创建的神经网络模型就相当于一个刚刚诞生的人类婴儿的大脑,并不具有“智能”。“智能”的形成还要依靠后面的环节。

2. 导入训练数据集,训练模型并检验

经过训练的模型才会具有“智能”。“智能”相当于人类婴儿通过学习逐渐学到的众多知识点。

训练模型需要预先导入训练数据集。数据集包含了大量的手写数字图片,有各种各样的具体样式。但仅仅将众多数字图片输入模型是不行的,因为模型并不认识这些图对应着什么数字。我们需要对数据做标注,告诉模型每张图片对应的数字。在人类的指引下,模型就会逐渐摸索出不同数字的规律。

模型训练成功与否,需要经过实践检验,这需要通过不同于训练数据的测试数据来检测模型的输出效果。训练数据、人工标注和测试数据的对应关系如下图所示。当然,真实的数据量远大于下图所示的数据量,但下图已经可以将其原理揭示清楚了。

训练数据、人工标注和测试数据的对应

测试数据和训练数据是不同的。例如,我们用很多张手写的数字“3”来训练模型,让模型能正确地认出众多不同的数字“3”。目标是让它以后“看”到一个刚刚写出的(模型在训练时没有见过)数字“3”,也能准确地认出这是数字“3”。

如果能够做到,那就表明模型训练成功了。如果测试效果不好,那就要从模型本身、训练数据集等方面找出原因,并进行调整,直到获得好的测试结果。这个过程有一定的理论依据,但也有很大的经验成分。

3. 使用模型,解决问题

这是我们的最终目的,让具备“智能”的模型为我们解决问题。

2.4.7 深度神经网络

随着待解决的问题越来越复杂,神经网络的层数也会逐渐增加,当其达到一定数量时就被称为深度神经网络。

斯坦福大学的李飞飞教授发起的ImageNet图像识别大赛号称“计算机视觉世界杯”,其部分参赛神经网络模型的层数如下表所示。

从表中可以看出,神经网络层数的增长速度惊人,与神经网络层数增加同步的是运算量的增长。这里存在一个边际效益递减的现象,而且递减非常严重。神经网络的层数算术级增加,导致了计算量的指数级增加,最终获得改进的可能非常小。

截至2019年年底,最深的模型大概有107个人工神经元,但即便如此还是比青蛙的神经系统规模要小,和人类相比更是差了几个数量级。人工神经网络的规模大约每2.4年翻一倍,按照这个发展速度大概到2045年会达到人类大脑的规模。2045年这个时间点被认为是奇点,其根据就在于此。

深度神经网络、卷积神经网络是从不同角度对神经网络进行分类,两个概念有一定交集。深度是指神经网络的层数多、层级深;卷积是一种运算方式。在当前的工程实战中,大多数卷积神经网络都是深度神经网络。

上面举例讲解的卷积神经网络比较简单,只能识别10个阿拉伯数字。那么对于更复杂的图像识别,如识别一张彩色图片中的物体是车还是马,就需要用到深度卷积神经网络了。

我们来看一个深度卷积神经网络的例子——VGG模型,它有22层。当模型训练完成后,给这个模型一张彩色图片,它能识别其中的物体具体是什么。

深度卷积神经网络VGG的结构如下图所示。每层底部的数字是该层的序号,顶部的数字是该层的神经元数量。由图可知,VGG模型包含了4种类型的层。这一次我们从数据的角度来理解深度卷积神经网络是如何运作的。从左往右看,顶部的数字是该层的神经元数量。输入层是224×224×3,前两个数字对应着图片的像素,3代表3个色彩通道(RGB色彩模式),每个色彩通道的值对应1个神经元。隐藏层的第1层是卷积层,顶部的224×224×64代表这一层有224×224×64个神经元。第22层是输出层,变成了一维的1000个神经元,这表示它可以识别出1000种物体。

深度卷积神经网络VGG的结构

从数据变化的角度看,输入的原图相当于一个长宽都很大的扁平纸箱子,经过深度神经网络众多层的处理,这个扁平纸箱子最终在输出层被“拉”成了一个很窄、很薄的长纸条,这个长纸条有1000个格子,每个格子对应一种物体。模型根据提取的特征,把“识别”出来的结果写在某个格子里。准确地说,它在每个格子里都“写”了一个概率值。

最终输出的概率值是通过Softmax函数处理获得的。Softmax函数就是归一化指数函数,产品经理不必细究其具体定义和算法,只需要知道它的作用是将分类的结果以概率值的形式展示即可。VGG结构图中的最后一层(第22层)既被称为输出层又被称为softmax层。输出层是指该层的位置和作用(输出结果),softmax层是指请该层执行的算法,是对同一个事物不同角度的命名。例如,输出层在“车”这个“格子”里写了一个值0.9025,在“马”这个格子里写了一个值0.0872,那么我们就可以判断图片中的物体是车而不是马。

我花了好长时间才真正理解深度卷积神经网络的原理,并深深感叹深度卷积神经网络发明人的智慧和数学的重要性。由此更确定了当前人工智能中的“智能”的源泉还是人类。人类将智能问题巧妙地转化为计算问题,而计算机还是只会做计算的机器,只是在人类的指导下表现出了“智能”的样子。

2.4.8 深度卷积神经网络的应用

以深度卷积神经网络为代表的深度神经网络,为人工“智能”带来了革命性的变化。以ImageNet图像识别大赛中的部分数据为例进行说明,具体如下图所示。

ImageNet图像识别大赛中的部分数据

人类的错误率约为5%,且长期稳定。截至2011年,人工智能的表现一直很糟糕,错误率高达25%,这样的识别率完全无法投入使用。但在2012年,深度学习算法“进场”,将错误率大幅降低到15%左右。由此赛场的风向整体转变,整个竞赛在深度学习模型之间展开。此后,人工智能的错误率逐年下降,最终低于人类的错误率,也因此开启了人工智能的应用热潮。

深度学习的应用非常广泛,其中包括人脸识别。在2016年至2018年的应用狂想期,人脸识别是热门领域之一。

人脸识别就是根据人脸图像判断人的身份,其在身份识别和身份验证中广泛应用。现在的手机普遍采用了人脸识别技术,手机通过该技术能够“认出”正在操作手机的是不是主人。这样既安全又方便,而以前这两者很难同时做到。

人脸识别的过程分两步:人脸检测和人脸体征提取。其他的工作要么为这两步配套,要么是这两步的延伸。人脸检测就是从画面中找出人脸,这是第一步。然后针对检测出的人脸提取特征,找到每张人脸的特征值。人脸检测、人脸体征提取如下图所示。把特征信息和人脸的名称保存下来,就形成了人脸库。有了人脸库就可以进行各种应用——人脸核实身份、人脸比对及人脸搜索等。

人脸检测、人脸体征提取,来自商汤公司官网

人脸比对只是给出一个适配数值,如下图所示。

人脸比对只是给出适配数值,来自虹软科技官网

在有些场景中,86.14%的适配值就足够了,但门禁、金融等领域则要求更高的适配值。所以,如何使用人工智能模型给出的结果还是由人类根据不同的场景来决定的。

深度学习大幅度提高了人脸识别的准确度,这也是当前人脸识别领域的主流算法。深度学习对AI的实际应用做出了重大贡献,也造就了旷视科技、商汤等多个独角兽公司。这也是我利用大量篇幅来介绍它的原因。