许文元,方维维,孟娜
(北京交通大学计算机与信息技术学院,北京100044)
随着技术上的不断创新,物联网已经发展成为一个无处不在的全球计算网络。根据思科公司预测,到2030年世界上将会超过5000亿台设备连接到现有的互联网[1-2],为人们的生产生活提供服务。然而物联网在拥有如此光明未来的同时,却也不得不面临一个互联网中存在已久的棘手问题,即全球IPv4地址枯竭导致众多设备无法真正的接入到全球互联网络。这严重制约了互联网尤其是物联网的应用和发展,所以国际互联网工程任务组(IETF)提出了新一版互联网协议IPv6,用以保证所有的可入网设备都能够接入全球互联网络,从而促使物联网的发展进入了新时期。
然而,可以预见的是随着大量物联网设备的加入,海量物联网设备数据会被汇集至物联网网关设备中并转发入互联网世界中导致互联网服务质量变差。而研究发现并非所有的物联网网关设备转发的信息均是目标用户的需求,因此减少物联网网关的无效数据转发,缩小无效带宽占用成为构建高效IPv6物联网系统的一个待解决难题。一个基本解决方案是让物联网网关设备智能化,使得物联网网关设备能够根据目标用户的需求识别出待上传数据中的有效数据和无效数据,通过减少无效数据传输来减少网络中传输的数据总量,缩减带宽占用。
幸运的是,经过几十年的发展,深度神经网络(Deep Neural Network,DNN)可以为设备的智能化提供充分的技术支持。然而,目前大多数高性能的DNN模型都需要大量的算力支持,例如:当图片分辨率为224×224时,执行一次推理,VGG-19[3]则需要196亿次浮点运算[4],因此传统的深度神经网络依赖于能够提供强大算力的云服务器。而与强大的云服务器不同,广泛的物联网网关设备计算和存储能力往往是受限的,所以无法直接部署深度神经网络模型
为了解决以上问题,本文提出一种结合知识蒸馏(Knowledge distillation)与模型早退(Model early exit)的深度神经网络训练方案,构建一个适用于资源受限的物联网网关设备的多退出点轻量级神经网络模型,部署在实际IPv6网络环境中的实验结果表明,物联网网关设备装载入优化模型后,网络带宽占用以及服务时间都得到了大幅减小。
现有的深度神经网络模型通常具有数百万甚至数十亿的参数,严重地阻碍了在资源受限的设备中的部署应用。为了解决该问题,在过去的几年中,模型压缩[5]与模型早退开始成为神经网络研究者关注的主要方向。
神经网络模型压缩通过减少模型的参数量来降低模型的复杂性。先期的研究工作大致可归为以下5类:①模型剪枝,②模型量化,③知识蒸馏,④紧凑模型,⑤低秩分解,模型剪枝通过删除模型结构中不重要的权重参数来减少模型参数量,Han[6]通过设定权重阈值来确定模型权重的重要性,将低于阈值的权重删除,并通过微调模型来保持模型的精度。但是其方法会导致模型结构稀疏化,从而需要特殊的软件或者硬件支持来达到网络模型的推理加速。在此基础上,Li[7]通过使用L1范数来确定神经网络模型滤波器的重要性,通过删除不重要的滤波器来减少网络模型参数,相比于文献[6],它不依赖于特殊的软硬件支持,因此具备更好的部署性[8],但是当剪枝比例逐渐增大时,文献[6-7]不得不考虑随之而来的模型精度下降问题。模型量化通过减少神经网络模型权重的比特数来降低模型的计算与存储需求[9],然而较低比特表示的网络模型往往带来较大的性能损失[10];低秩分解通过将权重矩阵分解为多个小矩阵来加速运算[11],但是其依旧需要特殊硬件支持;紧凑模型[12]即设计新型紧凑模型结构,所以其只适用于具备专业知识体系的研究人员。Hinton[13]提出知识蒸馏的概念,通过使用训练好的较大网络模型(教师模型)指导训练待训练的精简神经网络模型(学生模型)来完成知识的传递,然后将计算量更低体积更小的学生网络模型部署于资源受限的设备中以减少推理时间。之后不同的蒸馏学习范式被相继提出,例如:多教师知识蒸馏[14]。由于知识蒸馏技术的有效性,研究人员也将其与其他的优化方法进行结合,Polino[15]将模型压缩与知识蒸馏结合来进一步提高模型的执行速度;Anil[16]将知识蒸馏方法应用于大规模分布式环境中。
模型早退技术基于深度神经网络模型前期的输出也能够满足一部分场景精度需求这一事实[17],通过避免执行深度神经网络模型深层来达到减少算力的需求。文献[17]通过在原有的深度神经网络模型的基础上添加分支来满足模型早退的需求,极大减少了模型的推理时间;Teerapittayanon[18]又通过使用“云-边缘服务器-边缘设备”三级层次结构并在每层结构设置模型退出点来完成模型早退;Passalis[19]通过重用前期层信息优化多退出点模型;Tan[20]将模型早退与模型划分技术结合优化神经网络模型推理。
本文选取VGG神经网络为框架,它被广泛应用于图像检测等领域且性能表现优异。
知识蒸馏通过引入教师网络(复杂且精度较高模型)引导学生模型(精简模型)训练来完成知识的传递,其中引导方法以及引导程度是决定知识蒸馏效果的关键。
引导的方法直接决定着学生是否能够准确的学习到教师网络所传授的知识,文献[13]使用KL散度(Kullback-Leibler Divergence)来衡量教师网络与学生网络的输出分布差异,以表征学生网络对于教师知识的学习程度。KL散度又称相对熵,是用来衡量两个概率分布间差异的非对称度量,如公式(1),概率函数中一个为真实分布p(xi),对应教师网络的输出分布,另外一个为拟合的理论分布q(xi),对应为学生的输出分布,当KL散度为0时,拟合的理论分布与真实分布完全相同即q(xi)=p(xi),表示学生网络已经完全学会教师网络的知识,因此本文通过最小化教师网络与学生网络输出的KL散度来不断地让学生网络模型逼近教师网络模型,从而达到知识蒸馏的目的。
引导程度决定学生与教师网络的输出分布所能达到的近似程度,文献[13]借鉴工程学的概念将其定义为温度。引用温度的目的是知识蒸馏希望将教师网络产生的信息知识尽可能多地蒸馏到学生网络中而不是仅仅让学生网络模型学习到教师网络模型的分类结果,对应的好处为这样蒸馏出来的学生网络模型具备和教师网络模型一样的概率分布和泛化能力,文献[13]将温度加入到Softmax层中以改善Softmax输出值对于知识传递的影响,改进的Softmax如公式(2)所示:
其中pi表示第i类经过加入温度的Softmax输出的软标签,通过加入温度T可以让Softmax的输出值变缓如图1-图2所示,有利于蒸馏出更多的知识信息供学生网络学习。引入KL散度将学生模型的损失函数公式更新为公式(3):
图1 无温度Softmax输出值
图2 温度为5时Softmax输出值
知识蒸馏方法虽然在保持模型精度的同时,极大减少了模型存储和计算需求。但是,对于一些特殊的任务而言其可能能够接受一定的精度损失从而换取更高的推理速度,因此,本文提出在知识蒸馏学生网络模型中加入多退出点机制来满足此类任务需求。
深度神经网络模型通过在其主干网上添加分支来允许任务从模型的前期退出从而达到节约计算时间的目的,每条分支称为一个多退出点。文献[17]通过联合优化的方法来训练带有多退出点的网络模型,并给予每条分支节点赋予退出阈值来判定当前任务是否可以从当前退出点退出,但是同步优化多退出点模型的操作存在内存占用过高,训练耗时过大的问题,因此本文提出了原基异步训练来生成带有早退节点的学生网络模型。原基异步训练的基础模型是3.1小节通过知识蒸馏训练好的轻量级学生网络模型,并通过添加分支的方式让原基模型发展成为带有多分支的深度神经网络模型。
异步训练中针对每一分支依旧使用交叉熵损失函数来作为优化目标,目标函数为:
y为数据的真实标签,y→为预测标签,r为当前输入数据x在权重参数W下的输出,其中参数权重W部分权重来自于原基网络,如公式(5)所示:
与文献[17]不同,本文不在各个分支网络使用退出阈值来判定当前任务是否可以从当前分支退出,而是构建了一个任务自动判别器来自动判别任务类型来选择合适的网络分支满足当前任务需求。
本文使用CIFAR10作为模型训练实验数据集,它由60000张彩色图片构成,其中包含50000张训练图片,10000张测试图片,共分为10个类别,每个类别拥有5000张训练图片与1000张测试图片。选择经典的深度神经网络VGG-19(包含16个卷积层和3个全链接层)作为知识蒸馏教师网络,VGG11(包含8个卷积层和1个全链接层)作为知识蒸馏学生网络同时为多退出点网络的原基网络,多退出点网络除原基网络外另加入两条分支,与原基网络的重叠层数分别为3、5,本文分别称其为退出点1和退出点2,原基网络为退出点3。所有训练网络的静态学习率设置为0.0006,一次批处理图像128张,其中教师网络训练50轮次,学生网络训练40轮次,退出点2训练10轮次,退出点1训练5轮次。实际部署中,客户端与服务器网络连接带宽为1MB/s,采用TCP连接的方式。
如上3.1小节所述,教师网络对学生网络的引导方法以及引导程度影响知识蒸馏结果的好坏,实验中选取经典的KL散度作为知识蒸馏引导方法,然后探究不同的引导程度对于知识蒸馏学生网络模型收敛以及精度的影响。
引导程度除3.1小节所述温度外,还有教师网络与学生网络的损失占比值α如公式(3)所示。图3展示了相同温度下,不同损失占比对于学生网络收敛性影响,可以看到随着教师网络损失值占比增大(α值增大,详见公式(3))即教师网络对于学生网络的影响增损失值更低。而随着温度增高,教师网络与学生网络输入KL散度函数的输入值变缓(如公式(2)),而真实的学生网络输入值未受影响,即等价于教师网络对于学生网络的控制作用变弱从而导致学生网络占据主导作用,学生网络的损失值起点越高,收敛点的损失值越高如图4所示。
图3 同温度下α对学生模型损失函数影响
图4 同α条件下,温度值对损失函数的影响
随后测量不同温度以及损失占比下学生网络的精度值,如图5所示,无蒸馏环境下直接训练学生网络模型其精度值为83.63%,使用蒸馏方法后训练的学生网络模型精度值均高于无蒸馏方法直接训练网络模型的精度值。当温度值为3以及教师网络损失值占比为0.8时,得到学生网络精度最高值为85.52%,蒸馏方法下学生网络的最低精度值为83.78%,在温度值和损失占比分别为2和0.3时取到。蒸馏方法下学生网络的精度提升0.15%-1.89%。
图5 不同温度与α下蒸馏下模型精度
通过蒸馏方法,我们得到了一个比无蒸馏方法更好的轻量级网络模型,在此基础上,使用3.2小节原基异步训练方案训练多退出点精简神经网络模型并测试其精度如图6所示,退出点2分支网络其精度为84.88%,退出点1分支网络的精度82.74%。图7展示了各退出点网络的一次推理时间,退出点2分支网络相比于原始网络推理时间减少了40.25%,退出点1分支网络相比于原基网络推理时间减少了64.59%,模型识别速度加速比区间为3.04X-8.57X。
图6 不同退出点模型精度图
图7 不同退出点与教师网络模型推理速度
根据训练模型的网络结构,我们提供给用户三级处理速度选择,分别为快、中、慢,这对应多退出点网络中的退出点1分支网络,退出点2分支网络以及原始网络。我们构建一个识别应用用以测试我们的优化模型对边缘网关设备的效力提升。如图8所示,未部署智能识别模型的边缘网关面对客户需求时需要向网络中传输10000张图片,其中客户真正需求照片数为1000张,照片传输有效率为10%。而部署智能识别模型后,根据用户指定的速度需求,边缘网关分别只需向网络中传输1057、1006、1000张图片,极大减少了网络中传输的数据量。由于多退出点精简神经网络识别模型的精度限制,所以图片的传输有效率分别为88.17%、92.84%、93%(如图9所示),但均高于无智能识别模型时图片传输的有效率。同时我们假设每张图片的大小为1MB,如图10所示,使用多退出点精简网络识别模型后,不同指定速度下物联网网关的服务效率分别提升了88.51%、88.39%、87.4%。
图8 不同识别速度选择下网络中传输的图片数图
图9 不同识别速度选择下网络中传输图片有效率
图10 不同识别速度选择下服务时间缩减率
本文通过结合知识蒸馏与模型早退方案构建了一个具备多退出点的精简神经网络模型,使得物联网网关设备能够快速部署和运行深度神经网络模型的同时保持较高的模型精度。通过在真实IPv6网络环境下物联网网关设备中部署多退出点神经网络模型的实验结果表明,我们最大可以减少90%的网络带宽占用以及提升88.51%的服务效率。在接下来的工作中,我们将尝试使用更加有效的知识蒸馏方法如将非对称性的KL散度转换为Wasserstein距离作为学生学习教师知识程度的度量,我们还将探究模型中合适的早退点以提供给用户更多更优的识别速度选择。另外,目标检测依旧是我们感兴趣的方向,我们也将考虑将方法扩展到目标检测中。