1 深度学习的理论基础
在经典的程序设计中,程序员只要在程序中嵌入足够多的明确规则,人们输入数据,系统就能得出正确的答案。事实上,这对于解决定义明确的逻辑问题可能适用,但对于难以给出明确规则,如:图像分类等更加模糊、复杂的问题,实践的效果却不佳。直到2012年,随着AlexNet人工神经网络诞生,一种新的方法-机器学习才在视觉、听觉等方面取得革命性的进展。
1.1 多层感知机
作为神经网络的起源,了解感知机的构造是通向神经网络和深度学习的一种途径。感知机是由美国学者在 1957年提出来的。感知机接收多个输入信号,输出一个信号。使用单层感知机可以实现与门、或门、与非门三种逻辑电路,然而单层感知机却做不了异或门。如下图1所示:图左为或门输出,它的四个点可以用直线正确分隔开;而图右为异或门输出,它的四个点却不能用直线正确分隔开。
图1 线性空间和非线性空间
单层感知机留有遗憾,但这并不能阻挡人类前进的步伐。专家们通过两层感知机组合叠加,可轻松地将异或门实现!通过增加层,双层感知机可以表示单层感知机无法表示的东西。为“深度学习”带来了“深度”的启发。
1.2人工神经网络
人工神经网络(ANN),是20世纪80 年代以来人工智能领域的研究热点。它与多层感知机有很多共同点,都是由大量的节点相互联接构成。如果用图来简要表示的话,一般可分为三个层:输入层、隐藏层、输出层。
经过抽象整理,神经元可用一个简单的数学表达式进行描述:h =xW + b。简单地说,神经网络就是一个带矩阵运算的复杂函数。与感知机不同,人工神经网络的一个重要特性是它可以自动地从训练数据中学习到合适的权重参数,从而使人工神经网络变得更加自动化、智能化。
神经网络能做到这点,关键在于神经网络采用的激活函数与感知机不同。如图2示,感知机使用的是阶跃函数,而神经网络采用的激活函数是连续的、可导的。以Sigmoid函数为例,函数曲线平滑呈S型,取值范围为0~1,函数的斜率不会为0,其导数可以用其自身来表示:S’(x)=S(x)[1-S(x)]。正是得益于这些有趣性质,神经网络才可以多层叠加来模拟各种复杂问题。
图2 Sigmoid函数和阶跃函数
为了使神经网络能进行学习,专家们引入了损失函数概念。损失函数是衡量神经网络预测结果好坏的基本标志。它的基本思想是:计算预测值与实际标志的差值,差值大则表示预测值与真实值的误差大;差值小则会使损失渐进至局部最小值,从而使预测值逼近于真实值。为了找到使损失值尽可能小的地方,需要对网络参数求导,然后以这个导数为指引,迭代更新参数的值,直到损失值降至最小。神经网络的逻辑处理按“层”来组织,层又被映射成开发语言中的“类”,通过这种模块化,就可以像搭建积木一样构建神经网络。如图3所示,将样本数据作为输入,样本的标签作为真实值参考,这样,损失函数、优化算法和权重之间就形成了一个负反馈关系,通过多次迭代,网络的权重将趋向于收敛,网络模型得到构建。这就是人工神经网络“学习”的原理。
图3 神经网络的损失函数和优化算法之间的关系
1.3 卷积神经网
卷积神经网络(CNN)是人工神经网络向“深度”学习演进的代表算法之一,现已被广泛用于图像识别等各种场合,有着无可比拟的独特优势。以图像识别为例:在数字图像处理中有一种最为基本的处理方法,即线性滤波。卷积神经网络的原理与此类似,它使用的滤波工具是另一个小型矩阵,专家们称之为卷积核。如果将待处理的图像看作一个大型矩阵,图像中的每个像素可以看作矩阵中的每个元素,使用卷积核对全图进行扫描,就好比使用某种局部特征图来对全图进行检测。如图4所示,深度学习出现之前,特征图曾经非常重要。但现代深度学习的理论成熟以后,大部分特征图都不需要人工来设定了,因为神经网络能够利用卷积的设计思想从原始的数据中自动提取有用的特征图。
图4 卷积核扫描获取特征图
2. 人脸识别项目实战
Keras是一个由Python编写的开源深度学习框架,可进行深度学习模型的设计、开发。AlexNet作为一种经典的卷积神经网络,利用Kears实现起来很方便。我们可以将网络模型与损失函数法相结合,在经过模型搭建和图片预处理后,可以对模型进行训练。训练的过程中,通过函数回调的方式来记录每一个迭代训练好的模型。迭代的次数越多,优选出的模型效果会更好。基于深度学习的机器视觉,可以实现图像的分类和人脸的识别,通过将训练好的模型发布成WEB服务,生产活动中其它应用程序就可以进行一些AI功能的WEB服务调用。
笔者以一个数据中心机房监控管理程序为例,通过调用具有人脸识别的WEB服务,就可以使一个常规的信息系统增加一些如:扫脸登录、到访人员自动识别和多人识别等功能,从而为老系统注入新的人工智能元素,为企业的管理水平进一步提升提供了更有力的支撑。项目实施后,采用基于人脸识别技术进行人员身份鉴别和安全事件追溯等功能的创新,极大地提高了数据中心机房监控管理的效率。
感谢
参考文献
[1] [日]斋藤康毅 深度学习入门-基于Python的理论与实现,2018
[2] 王天庆 Python人脸识别从入门到工程实践[M] 机械工业出版社,2019.
作者简介:刘文清(1971-),男,湖南湘阴,大学本科,正高,信息通信系统运维及开发。