商务统计学基础 | 第四章 神经网络模型
本节的目标是对另一种非常重要的机器学习模型进行介绍,而该模型是一种非常典型的黑盒子类型的模型,具有难以解读的特点,它就是神经网络模型。这类模型极其重要,因为它是深度学习的模型基础。而深度学习是目前人工智能领域最受关注的算法,因此极其重要,值得了解和学习。为了帮助大家理解此类方法在实际中的巨大应用,首先与大家分享几个经典成功案例。为了直观方便,这些案例以图像应用为主。当然这绝不意味着神经网络模型的应用仅局限于图像数据。事实上,神经网络模型在几乎所有的非结构化数据分析中都有极其成功的应用,例如:声音、语言等。而本节案例以图像为主仅仅是因为其更加简单直观而已,希望向大家展示各种有趣的图像识别应用问题是如何被规范成一个关于X与Y的问题的,以帮助大家快速建立一个理论框架。
案例1:手写数字识别。
手写识别是指将手写字符转换为机器可读的格式的过程。在数字化时代的背景下,很多传统纸质文件都一步步走向电子化,而在这一过程中手写识别起着至关重要的作用。例如企业内部的报账流程就可以通过手写识别加快速度。据百度报道,中国移动设计院就曾对内部报账系统进行包含手写识别在内的智能化改造,使得原本20分钟的人工填报流程被缩短至1分多钟。而手写识别中最基础的类型就是手写数字识别。以银行手写支票识别为例,在电子支付日益普及之前,支票曾经是一种重要的支付方式。据美联储统计,2000年时支票曾是全美最主要的非现金支付方式,总支付金额达到400至500亿美元。在银行进行支票兑现的过程中,银行工作人员需要识别支票上的手写数字,并将其输入银行系统中。传统的人工识别方式费时费力,因此人们提出使用神经网络来识别手写数字。为此发展了一些用于训练神经网络的数据集,例如MNIST数据集。这是一个手写阿拉伯数字数据集,可以从多种渠道公开获取。该数据集最早由图灵奖获得者LeCun1等人给出,是一个重要的学习资源。该数据集对应的是一个十分类问题,即将一张分辨率的黑白图片分类为数字0至9。其中部分数据如图4.7.1所示。对于该案例而言,像素的手写数字图像就构成了X,而该图像上的数字到底是几,就构成了。因此这个问题的本质就是一个十分类的回归分析或机器学习问题。但其独特之处在于输入X是一个高度非结构化数据,对此传统的线性或广义线性模型处理能力有限,而基于神经网络的深度学习模型大放异彩!
图4.7.1 MNIST数据集节选
案例2:车牌识别。
就像每位公民都有身份证,汽车的“身份证”就是车牌。汽车的年检信息、违规记录和车主信息等都与车牌牢牢绑定在一起。正因此,我国《道路交通安全法》规定上路行驶的机动车都需要悬挂机动车号牌。在各行各业智能化自动化的趋势下,车牌自动识别系统正在不断发展。车牌自动识别系统有多种应用场景。例如在执法领域,自动车牌识别系统可以用于在视频监控中锁定目标车辆,进而帮助追回被盗车辆、识别通缉犯等等。根据美国警察行政人员研究论坛的报告,2012年大约71%的美国警察部门正使用某种形式的自动车牌识别系统。此外,自动车牌识别系统还可用于高速公路收费等场景。在自动车牌识别系统中算法需要做的正是在各种各样的场景、角度、天气下精准地识别出车牌号,而神经网络是解决该问题的一种常用方法。为此人们发展了一些用于训练神经网络的数据集,例如CCPD数据集。这是一个国内停车场车牌数据集,可以从GitHub网站公开获取。该数据集由中科大团队在2018年提供2,其中包含了近30万张720×1160分辨率的图片,其中部分数据如图4.7.2所示。这就构成了本案例的X数据,而本案例的Y就是具体车牌号。这显然是一个非常复杂的问题,因为图片中车牌的具体位置和拍摄角度也是未知且各不相同的。面对这么复杂的问题,传统的线性或广义线性模型难以应对,而只能借助基于神经网络的深度学习模型。有报道表明基于该数据集训练神经网络,车牌识别的准确率可以达到98.5%。
案例3:自动驾驶目标检测。
人是交通事故中最不确定的因素。根据中国汽车技术研究中心等机构编制的《自动驾驶汽车交通安全白皮书》,在2011年至2021年的5664起乘用车参与的事故案例中,驾驶员人为因素占比约为81.5%。这意味着,如果能够尽可能降低驾驶中人类驾驶员失误的可能性,那么将极大降低事故发生率。而自动驾驶的最终目标正是完全取代人类驾驶员,从而尽可能减小事故发生率。正由于发展自动驾驶技术的利好所在,我国交通运输部和科技部发布的《“十四五”交通领域科技创新规划》中提出,到2025年实现自动驾驶技术在部分场景得到示范应用。受到政策端的促进,我国自动驾驶技术正在蓬勃发展。据艾媒咨询统计,2021年中国无人驾驶汽车行业投融资金额达到782.4亿元,并且从2019年到2020年该行业投融资规模增长了219.4%。从技术层面上看,要想让汽车能够自主行驶,就需要汽车能够识别并理解路面中的各种元素,并根据不同的道路情况选择不同的行动。这些元素可能包括路标、红绿灯、其他车辆、行人、人行道和地面划线等等。让计算机检测和识别这些元素的过程就叫做目标检测,而神经网络是在自动驾驶中进行目标检测的一种常用方法。为此人们发展了一些用于训练神经网络的数据集,例如CODA数据集。这是一个道路目标检测的极端情况数据集,可以从GitHub网站公开获取。该数据集由华为实验室等机构3在2022年提供,其中包含了1500 个真实世界的驾驶场景,涉及的极端情况包括车辆、行人、骑行者、动物、交通设施、障碍物和杂项,其中部分数据如图4.7.3所示。这些在不同驾驶场景采集的图像数据就构成了本案例的X,而本案例的Y就是各场景中值得关注的极端情况,例如车辆、行人和交通设施等。这显然是一个非常复杂的问题,因为不同路况、天气、角度和遮挡物的情况下车辆、行人和交通设施都可能呈现不同的面貌。面对这样复杂的问题,传统的线性或广义线性模型难以应对,而只能借助基于神经网络的深度学习模型。
图4.7.3 CODA数据集节选
案例4:肺结节识别。
在信息化时代,人的一举一动都会产生数据。例如在医院体检的过程中,胸部CT照片、血液检查结果等都是丰富的数据。事实上,市场研究机构IDC曾经预测,到2020年全球医疗数据量将达到40万亿GB,这一数字是2010年的30倍。在医疗数据大量增长、信息技术急速发展的背景下,医疗服务的全流程正走向信息化和智能化。例如,在智慧医院中医学影像信息存储系统、临床决策系统和各类智能医疗装备也在不断发展。2021年国家卫健委等十个部门发布了《“十四五”医疗装备产业发展规划》,该文件强调了要加速信息技术融入医疗装备产业。在医疗智能化发展的过程中,计算机辅助诊断是非常重要的一环。计算机辅助诊断是指通过医学图像处理技术辅助医生发现病灶,从而提高诊断效率和准确度。从产品应用角度来看,在2022年3月26日,国家药监局就公布了国内首批肺炎CT影像AI辅助诊断的软件产品注册证。在计算机辅助诊断的具体技术层面中,神经网络是一类常用且十分有效的模型。为此人们发展了一些用于训练神经网络的数据集,例如LIDC-IDRI数据集。这是一个肺部结节CT扫描数据集,由美国国家癌症研究所等机构在2021年提供4。其中共包含1018份CT扫描结果,而每份CT扫描结果包含200至400张分辨率为512×512的灰度图片,部分数据如图4.7.4所示。这些CT扫描图片就构成了本案例的X数据,而本案例的Y就是该病人肺部是否有结节,以及各结节位置。这显然是一个非常复杂的问题,因为结节的大小和位置各异,即使是专业医生也有可能出现误判和遗漏。面对这样复杂的问题,传统的线性或广义线性模型难以应对,而只能借助基于神经网络的深度学习模型。
图4.7.4 LIDC-IDRI数据集节选
在充分了解案例应用的前提下,我们再进一步学习什么是神经网络模型。为什么神经网络模型能产生如此巨大的建模能力呢?遗憾地是,关于如此重要的问题,学术界仍然无法给出一个令人信服的答案。但这并不妨碍我们入门学习。为此,本节尝试从最简单的情形出发,然后逐步过渡到更一般化的深度学习模型。这里首先考察一个最简单的单变量逻辑回归模型。具体而言不妨设X是一个一维的解释性变量,而是一个0-1型因变量。一个标准的逻辑回归模型会假设:
那么接下来可以用神经网络的语言将该模型重新表述一遍。具体而言,这里用一个小小的圆圈圈住X,形成一个小小的结点,并称其为一个神经元。这个神经元出现在图4.7.5中的最左边,代表着这个模型的第一层,也叫做输入层。
上式说明了几个问题:第一,对于一个二分类(以及多分类)的逻辑回归模型,需要一个神奇的非线性变换,该变换被称为Softmax变换。而因此产生的两个神经元和构成了该神经网络模型的输出层。第二,对于一个单变量的二分类逻辑回归模型其实只需要两个参数(即)足矣。但是当用神经网络模型去表达的时候,却消耗了四个参数(即),这显然不是一个好消息。通过公式(4.7.2)的推导很容易发现,其实这四个参数是不可识别的,真正可以识别的是它们的某种差异,而该差异正是逻辑回归模型的两个参数。因此,为了用神经网络模型方法表达一个逻辑回归模型(以及其他所有的分类问题),其实是付出了代价的,那就是模型过参数化了。所谓过参数化就是指该模型其实只需要两个参数,但是却使用了四个参数,因此相应的参数不可识别。另一方面,对于过参数化模型而言,在实际计算中如果从不同的初值出发,所获得的参数估计可能非常不同,这就让神经网络的参数估计结果难以解读。不过,这似乎并不太影响预测精度。而付出不可识别性代价获得的优点是模型的图像化表达方式非常自然优美,这也让后续的参数估计的算法设计相对简单。否则就必须回答一个问题:使用哪一类Y(或1)来作为参照基准?
至此,本节已经将一个简单的逻辑回归模型表达成了一个神经网络模型。在这个过程中涉及到4个未知参数(),请问应该如何估计?为了回答这个问题可以先回顾一下,标准的逻辑回归是如何作参数估计的?答:极大似然估计。那么在神经网络模型的参数估计中也有理由尝试极大似然估计方法。具体而言,假设有N个样本,那么相应的负的对数似然函数为:这就是一个基于对数似然函数的损失函数。在机器学习领域,人们称其为Categorical Cross Entropy。而使用该损失函数获得的最佳估计量为,如前所示,由于参数B是不可识别的,因此的计算非常依赖初始值。不同的初始值会产生不同的估计,但是获得的估计却基本相同,否则损失函数就会差异巨大。因此,在实际应用中,人们似乎不太操心对的解读,因为自己就不是一个稳定的估计量,而人们的所有注意力都放在了预测精度上。这点与前面讲到的统计学回归分析很不一样。
到此为止,本节仅仅将一个标准的逻辑回归模型用神经网络表达了出来。如前所述,逻辑回归是统计学中广义线性模型的特例,因此本质上是一个线性模型。而人们对神经网络模型的热爱显然不是为了表达一个线性模型。如果这就是目标,那么逻辑回归已经做得很好了。人们对神经网络模型的热爱是因为它能表达更加丰富的非线性关系。为此要对模型(图4.7.5)做出必要的改变,请问从哪里开始改变?输入层可以吗?答:不太方便,因为这一层的结构是输入的X数据决定的。那么输出层可以吗?答:也不太容易,因为这一层的结构是输出的Y数据决定的。能改变的就是中间层,那么请问如何改变?第一种修改方法就是多增加一个中间层,也叫做隐藏层,如图4.7.6所示。第一个中间层通过对X的线性变换产生了,而第二个中间层通过对的线性变换产生,然后再把中间层的神经元连接到输出层。此时需要第二个修改,那就是非线性变换。也就是说,在定义的时候,最好不要用简单的线性变换。相反要用,其中是一个关于t的非线性变换,也被称为激活函数,前面提到的Softmax就是一种激活函数。只不过Softmax更多地用于输出层,而少用于隐藏层。换句话说,其实就是对X的线性变换的非线性变换。这样即使仍然是的线性变换,最终输出层的概率也是X的某种不平凡的非线性变换。当然从到也可以考虑非线性变换。在各种非线性变换的帮助下,最终模型能提供的非线性变换一定比简单线性变换灵活许多,并且随着中间层神经元的个数的增加,该模型的灵活性也在增加。从理论上人们可以严格证明,只要选择一个合适的激活函数,并让神经元个数足够大,那么该神经网络模型可以以任意精度近似任意形态的函数。
一个简单而典型的神经网络模型就被定义出来了,它有几个关键元素:第一,输入层;第二,中间层(也叫隐藏层);第三,输出层;以及第四,非线性变换。那么请问应该采用什么样的非线性变换函数或者激活函数呢?从理论上讲,有一大类激活函数都可用,非常丰富。但是最为广泛使用的是一个非常特殊的激活函数,其中表示示性函数,即当x大于0时等于1,而当x不大于0时等于0。在接下来的内容里,我们都假设就是ReLu变换。图4.7.8 (a)中展示了函数的形态,可见这是一个特别简单的分段线性函数。当时,它是常数,而当时,它是线性函数。而作为一个整体,它是非线性函数。该函数在0点是不可导的,但是除此之外,这就是一个非常简单的函数形态,因此计算上很好处理。
令人惊讶的是,看似如此简单的函数却可以组合出或精确逼近各种形态的函数。为了说明这一问题,我们尝试构造一个特别简单的基于ReLu变换的神经网络模型,如图4.7.7所示,其中,而。那么本质上就是X的一个分段线性函数。如果以X作为横轴,而作为纵轴,那么会呈现怎样的函数形态呢?假设中间层神经元数量为9,即。图4.7.8(b)和图4.7.8 (c)分别绘制了使用该神经网络逼近函数和的结果。其中虚线是被逼近的某光滑函数,而实线是图4.7.7中的神经网络模型的逼近情况,可以看到逼近效果良好。
最后对前面构建的神经网络模型再做三点改进,一个典型的神经网络模型就出现了,哪三点改进呢?第一,一个典型的输入层不可能只有一个X,以图像数据为例,哪怕最简单的128×128的彩色图片,也会产生128×128=16384个像素点输入。每一个像素点就是一个X神经元,因此输入层需要改进。第二,图4.7.6中的神经网络结构仅包含两个中间层,而所谓的深度学习模型就是指有很多中间层。例如经典的残差网络ResNet-50模型,就有50个中间层。因此,一个典型的深度学习神经网络模型应如图4.7.9所示。
最后一个改变是在不同位置合理使用更多的非线性变换,除了Softmax与ReLu以外,还有卷积(某种局部线性变化)、极大池化(Max Pooling)、Sigmoid变换等等。而这就有可能产生一个实际可用的神经网络模型。
最后总结一下深度神经网络模型的优缺点。优点是模型形态极其灵活,因此在大样本的支持下,能对复杂数据,尤其是非结构化数据(例如图像、文本、语言)产生传统方法无法比拟的预测精度。但是深度神经网络模型缺点也很多,其中一个缺点在于计算量往往十分庞大。因为深度神经网络模型形态灵活,所以需要大量的参数。以经典的AlexNet模型为例,总共需要对约6100万个参数进行估计,因此需要海量的样本支持。海量样本与海量参数一起产生了海量的计算量,一般CPU无法承受,因此在计算中常常使用GPU来提升计算速度。深度神经网络模型的另一个缺点在于,当计算完成后,整个模型就是一个黑盒子,虽然大量的学者正在努力改善参数的可解释性,但目前仍然难以解读。
作为本节的结束,这里为大家展示一个简单的案例。该案例使用的数据集来自于本节开头案例1中的MNIST数据集。该数据集对应的是一个十分类问题,该问题的输入是一个28×28的像素矩阵X(图4.7.10左图),可视化后是一张黑白图片(图4.7.10右图)。如果没有右图,你能看出这是一个“3”吗?
该问题的目标就是对作自动分类,即将手写字迹图片分类为0到9的阿拉伯数字。如果作一个十分类逻辑回归,那么最终测试集预测精度可以达到90%以上,其实精度也不错。但是如果我们作一个经典的LeNet-5神经网络模型(如图4.7.11所示),那么测试集预测精度可以提升到99.05%。而要达到这样的预测精度,该模型总共消耗了60,850个参数。对于该模型的详细介绍超出了本书的范畴,有兴趣的读者可以学习深度学习领域的相关专著。
这是本书的最后一节了,总结一下。还记得我们从哪里出发的吗?我们从不确定性出发,学习了用于描述各种不确定性的概率函数,其中涉及到未知参数。对于这些未知参数如何估计呢?为此学习了一套简要完整的参数估计理论。基于获得的参数估计,如何在面对不确定性的情况下做出决策?这需要假设检验的理论。面对各种不确定性现象,如何理解其中可被把握的规律呢?这需要回归分析。而从线性回归出发,到深度学习结束,这是一个超级快的过程,显然不可能期待聪明的你在如此短时间内领悟所有的道理。但希望给你一个基本的框架,让你看到这个有趣的不确定性世界。希望给你开一扇门,在不确定性的世界里,给你向前的决心和勇气,加油,好运!
1 LeCun Y, Bottou L, Bengio Y, et al. Gradient-Based Learning Applied to Document Recognition. Proceedings of the IEEE, 1998, 86(11): 2278-2324.
2 Xu Z, Yang W, Meng A, et al. Towards End-to-End License Plate Detection and Recognition: A Large Dataset and Baseline. Proceedings of the European Conference on Computer Vision (ECCV). 2018: 255-271.
3 Li K, Chen K, Wang H, et al. CODA: A Real-World Road Corner Case Dataset for Object Detection in Autonomous Driving[J]. arXiv preprin:2203.07724, 2022.
4 Armato III S G, McLennan G, Bidaut L, et al. The Lung Image Database Consortium (LIDC) and Image Database Resource Initiative (IDRI): A Completed Reference Database of Lung Nodules on CT Scans. Medical Physics, 2011, 38(2): 915-931.
往期推荐