邓 畅,陆 骏,李 广
(中国电子科技集团公司第三十二研究所,上海 200233)
近年来,深度学习算法在多个领域的应用中大放异彩,如深层卷积神经网络不断刷新计算机视觉算法的纪录。伴随着物联网等终端设备的急剧增多以及海量数据流的产生,深度学习算法在终端设备中的应用越来越受到人们的关注。
但是,深度学习算法模型规模大的特点,在执行任务时对存储资源与计算资源的要求较高,因此算法的训练和运行往往在云端进行。深度学习算法在终端设备上的应用始终存在着一些问题:要么终端设备采集数据,传至云上的大型深度神经网络模型进行处理,导致通信成本提高,带来了延迟问题和隐私问题;要么在终端执行的深度神经网络模型必须进行大幅压缩删减,因此损失一定的系统精度。
为了克服这些缺点,本文提出了云端结合的深度学习部署方案:终端设备中部署深度神经网络压缩模型,快速完成特征提取的推理运算,输出的检测结果满足置信度的标准则结束;若终端结果不能满足要求,则终端实现的初始特征提取样本将传至云端,由完整复杂的深度神经网络模型进行进一步处理。这种方法可根据不同精度要求,灵活兼顾实时性、系统精度与通信成本的平衡。另外,由于终端已经实现了特征提取,传至云上的并非传感器采集的原始数据,因此能够提供更好的数据隐私保护。
在人工智能众多技术中,深度神经网络(Deep Neural Network,DNN)[1]是一种通过模拟人脑神经网络实现类人工智能的机器学习技术。鉴于DNN具有高效的数据特征提取与分析能力,现已被广泛应用在计算机视觉[2]、自然语言处理[3]、无人驾驶[4]、智能家居[5]、智慧城市[6]等相关的领域或行业,影响着人们的日常生活。
DNN的本质是通过模拟人脑神经,组合低层特征形成更加抽象的高层特征,从而分析出数据所表达的信息。构建一个DNN主要分为两个阶段:训练阶段与推测阶段。训练阶段需要网络模型先对大量训练数据进行推测,之后利用反向传播算法递归调整网络模型中神经元之间的连接权重,从而最小化DNN推测结果与真实值之间的误差。推测阶段直接利用训练完成的网络模型对数据进行分析,该阶段无需存储训练数据和进行反向传播操作,计算与存储开销远小于训练阶段。
在众多DNN模型中,卷积神经网络(Convolutional Neural Network,CNN)[7]的应用最为广泛。CNN主要由卷积层、全连接层构成。卷积层通过局部感受野、权值共享的思想,使用少量参数即可实现某一类数据特征的提取。但由于卷积层中的卷积操作需要遍历上一层输出的特征面,因此卷积层的计算耗时非常大。全连接层的作用则是组合之前卷积层提取的多类特征。与卷积层相比,全连接层计算用时少,但参数数量十分庞大。经典的DNN模型还有 AlexNet[2]、GoogLeNet[8]等,这些网络模型层数较深、参数数量极大,导致网络模型的存储与计算代价非常高。以AlexNet为例,其网络模型共有61M的参数数量,每个参数为32位浮点型数值,因此加载该模型至少需要104MB的内存空间。当将尺寸为227×227×3的彩色图片作为输入数据时,AlexNet第一层卷积核处理该图片需要进行超过1.8亿次的乘法运算。由此可见,如果运行AlexNet的设备没有强大的硬件资源,则AlexNet网络分析数据所花费的时间很难满足实时性要求。
表1 主流DNN模型的比较
为了提高DNN分析数据的准确度,通常采用的方法是增加其神经网络的层数。这是由于在DNN中,特定的神经网络层被用来提取特定的数据特征,更多的网络层数代表着更多可分析的数据特征,从而使得数据分析的结果也更加准确。表1给出了从2012年到2016年经典DNN模型的比较信息。从表1中可以发现,从AlexNet到ResNet,虽然分类误差率逐渐降低,但网络模型的层数却从8层急剧增长至156层,同时网络模型的参数数量也非常庞大。模型的层数与参数数量在一定程度上代表了DNN分析数据时所需的计算量与占用的内存空间大小,这要求相应的设备需要超强的计算能力与巨大的存储空间。因此目前主流的深度学习框架的模型训练和推理计算均是在云端/服务器端设备上进行,资源受限、强调实时性的嵌入式环境中的深度学习计算引擎的实现还在发展中。
由于嵌入式设备资源受限,部署DNN应用通常会面临以下三个主要问题:①网络模型本身参数数量庞大,且计算过程中会产生大量的临时变量,资源受限的终端设备无法提供足够的内存空间存放程序运行所需的数据;②网络模型计算量过大,执行一次推测过程的响应时间过长,难以满足终端设备的系统实时性需求;③运行DNN过程中由于需要大量的数值计算与频繁的数据读取,高额的能耗会大幅减少设备的工作时长。这些问题已成为DNN与终端设备深度融合道路上较难逾越的鸿沟。
使用DNN处理复杂任务时通常需要构建层数较深的网络模型来增强模型对数据特征的提取能力。增加DNN的网络层数虽然可以在一定程度上提高网络模型处理数据的能力,但也会导致DNN的计算量与参数数量急剧增加,迫使应用DNN的物联网设备配置强大的计算能力和巨大的存储空间。为了解决上述问题,研究人员从简化网络模型的角度设计了各种各样的优化方法,降低网络模型对设备的硬件资源需求。以主流通用的卷积神经网络为例,卷积神经网络结构多适用于多种类的目标识别任务,但规模如此之大的深度神经网络往往是过参数的,不仅增加了模型存储量、降低了运行速度,甚者会引起过拟合问题,以至于该模型在预测其他测试样本时精度严重下降。为了避免过拟合,需对卷积神经网络中的冗余特征参数进行修剪,以匹配较小的图像特征空间。
为实现网络模型在嵌入式设备上的高效运行,可以在终端设备上对深度学习网络模型进行权重量等调整,也可以基于深度学习算法模型,针对大规模的深度神经网络的过参数的特点,通过去除网络冗余参数进行网络模型压缩,以减少存储量并提高运行速度,并完成实时的推理运算。具体优化方式包括特征剪枝和权重量化等方式[11]。
(1)特征剪枝
以卷积神经网络为例,卷积神经网络的参数量与运算量主要集中在卷积核与卷积操作,而卷积核并非全部适用于当前视觉任务。卷积核自身特征各异,故其特征提取偏好各异,现在主流目标识别网络往往为数以百计类目标识别设计,这意味着在特化到某一简单问题时将存在大量特征冗余的卷积核。所以可采用数据驱使法寻找冗余特征的卷积核并将其删减。卷积核的特征学习极其依赖于输入图像,数据驱使法利用这一特性来研究卷积核的特征提取偏好:选取某特定卷积核,然后向网络输入大量具有不同特点的图像块,并依据该卷积核对应神经元的激活值大小记录激活强烈的图像,并分析这些图像块所具有的共同特征。由此确定卷积核的特征提取是否对目标图像有贡献,然后将无贡献或贡献小的卷积核进行剪除以实现网络的特征剪枝。
(2)权重量化
深度学习网络模型具有大量的参数权重。由于网络权重,所学特征往往是有规律的,这意味着权重参数具有相关性,这为网络权重量化提供了条件。算法在应用到目标类别较少的简单任务时,可以用量化所得精度较低的权重进行近似计算。近似计算所带来的误差可通过调节量化程度控制在可接受范围内。
尽管利用模型的优化可以在终端设备上实现深度神经网络部署,但在终端设备上深度学习系统仍面临着两难的境地:要么直接在终端设备上使用压缩后的深度学习网络模型,但会造成系统准确率下降;要么把传感器数据输入到云端的大型深度神经网络中,但需要解决通信开销、延迟和隐私方面的问题。
另一方面,当单个设备的处理能力无法满足DNN日益增长的计算与存储需求,硬件性能的提升又会大幅增加设备的成本时,可以考虑采用分布式系统架构,利用多设备分摊DNN的计算与存储。云端与嵌入式端混合的架构优化,使用若干通过网络互联的计算节点互相配合共同完成某个目标:通过模型并行方法对网络模型进行划分,使用多个计算节点并行处理划分后的模型。这种架构下,在并行方式中,每个设备只运行DNN程序的一部分,对硬件资源的需求大幅降低,每个工作节点不再需要执行完整的DNN计算过程,因而可以有效地降低程序的内存占用率。
一般来说,层数较深的网络模型准确度较高,但资源要求较高;而层数较浅的网络模型准确度较低,资源要求也较低。根据硬件设备性能的差异,计算量大的高精度神经网络模型可以部署在硬件性能较强的云端上,而计算量小的低精度神经网络模型则可以部署在硬件性能较弱的终端设备上。由于不同DNN的计算复杂度不同,动态地选择不同精度的网络模型可以有效降低系统的消耗。
我们提出在终端设备上部署经过压缩优化的浅层神经网络,在云服务器设备上部署深层神经网络,以此构建一个混合云端与终端的基于分布式计算层级的分布式深度神经网络。它由云、边缘和分布式终端设备组成,通过分布式计算,增强了传感器融合、数据隐私和系统容错能力;在可扩展的分布式计算层次结构支持下,不仅可以扩大神经网络的规模,还可以在设备跨度上扩展。它允许将早期的出口点放置在终端设备中。当系统表现可信时,深度神经网络的推理执行可以在本地终端上完成图像分类并退出,进行快速的局部推断;当系统基于判断标准,需要进一步进行额外处理时,中间数据可以传输至云服务器端,进一步利用云端的深层深度神经网络进行处理,以提高系统的表现精度。
此方法的本质是将一个在终端设备上的小型神经网络模型(更少的参数)和一个在云上的大型神经网络模型(更多的参数)组合起来。终端设备上的小型神经网络模型可以快速地初始化数据提取,并分析出这个模型是否是满足要求的。另外,终端设备还可以通过云端的大型神经网络模型执行进一步的程序并完成最终的分类。相比于直接将神经网络输入到云端,这个方法通信开销更低;相比于终端设备上的简单模型,这个方法可以获得更高的准确率。此外,由于使用了从终端设备处理数据的方法代替了原始传输数据的方法,该系统可以更好地保护个人隐私。
此方法通过使用基于熵的确定标准[12],在神经网络的早期点对样本进行分类,称为早期出口点。如果在一个早期出口点,根据目标类计算概率向量的熵,认为样本已经被可信分类,就不需要由更高的云端神经网络层进行进一步的计算;反之,就将数据发送到云端进行进一步的推理计算。当出口点被设置在物理边界上,如在终端设备计算层次结构的最后一个卷积层上,可以提前分类的输入样本将在本地终端上退出,从而降低响应延迟。以图像分类识别为例,终端利用其上的神经网络识别物体图像,若终端设备对图像分类结果的一致程度高于某个阈值,则图像的分类结果可以被认为是可靠的,终端无需再向服务器端发送数据,由终端设备返回最终结果;若分类结果的一致程度低于某个阈值,则终端的分类结果被认为是不可靠的,此时终端可以将处理后的数据发送至云服务器做进一步计算。与直接将原始数据发送至云端进行处理的方式相比,该方法在本地的终端设备上处理了大部分的传感数据,降低了通讯开销,减少了时延。
还可以通过在终端设备和云之间的分布式计算层次中使用边缘服务器来垂直扩展。边缘服务器的作用与云服务器相似,都是从终端设备中获取输出,尽可能进行聚合和分类,如果需要更多的处理,则将自己的中间输出转发给云;在本地正确分类的样本在没有与边缘或云进行任何通信的情况下退出;需要更多特征提取的样本会被发送到边缘,如果有必要,最终会被发送到云。
混合部署是将训练好的深度神经网络映射到异构物理设备上,分布在本地终端、边缘服务器和云服务器。深度神经网络的各个部分都依赖于一个共同的深度学习框架,但基于不同的物理设备的分布,神经网络在不同的物理设备上进行分级推理计算。
全部都基于云的混合分布式神经网络可以看作是在云中运行的标准深度学习网络。这种情况下,在终端设备上捕获的传感器输入以原始格式(原始输入格式)发送到云,在云中执行所有层的深度神经网络的推断。
进一步,我们可以用终端设备执行一部分深度神经网络推理计算来取代将原始输入发送到云这一操作,将这个模型扩展为一个包含终端设备的模型。使用终端设备推理后的出口点,我们可以不通过云就对本地网络所依赖的样本进行分类。对于更复杂的情况,中间的深度神经网络输出被发送到云,在云中使用额外的神经网络层进行进一步的推断,并做出最终的分类决定。中间输出可以设计得比传感器的原始输入小得多,因此大大减少了终端设备和云之间的网络开销。
混合神经网络的推断在按物理设备划分的阶段中使用预测出口阈值T作为对样本预测的置信度的度量。定义T的方法之一是在验证集上搜索T的范围。我们使用归一化熵的阈值作为置信条件,来决定是否在某一特定的出口点完成对样本进行分类。归一化熵被定义为:
其中C是所有可能的标签的集合,x是一个概率向量。这个归一化熵的值在0和1之间,这样可以更容易地解释和搜索其对应的阈值T。例如,η接近0表示关于样本的预测是可信的;η接近1则表示它是不可信的。在出口点计算出η并与T进行比较,以确定是否应在该出口点退出。
在给定的终端设备出口点上,如果预测结果是不可信的(即η〉T),则系统会进一步进入云端执行分类操作。一个混合神经网络的推理过程如下:(1)每个终端设备首先向本地全连接层发送摘要信息;
(2)本地设备确定摘要信息是否能够做出准确的分类;
(3)如果是,则对样本进行分类,并直接在终端设备上完成处理;
(4)如果不是,则设备将中间计算推向云,以便进行进一步的分类处理,让云进行最终分类决策。
深度神经网络中的层级计算单元包括卷积层、池化层和全连接层等。在资源受限的终端设备中部署深度神经网络的浅层模型,在资源丰富的云端上部署深度神经网络的高层模型。云端结合的深度神经网络部署架构如图1所示。在资源受限的终端设备中部署时采用压缩优化的方式,简化网络模型进行权重等调整,降低对设备的硬件资源需求,以实现网络模型在嵌入式设备上的高效运行。
图1 云端结合的混合部署网络
运行在终端的深度神经网络精简模型和运行在云端的深度神经网络原始模型,二者共用同一套浅层网络实现初始的特征提取。原始模型的浅层卷积层权重可直接迁移至压缩模型的浅层卷积层,这是因为浅层卷积核特征为边缘、颜色等广泛存在的基础特征。云端结合的部署方法能够在端快速实现基础特征提取,即时输出低精度检测结果;然后基于必要性判断,可将中间结果传至云,由云中的复杂模型处理输出高精度检测结果。根据不同精度要求,灵活兼顾实时性与通信成本,并提供更好的数据隐私保护。
本节主要展示了利用深度学习混合部署方案的性能表现。这里选用基于AlexNet网络拓扑结构的扩展深度神经网络,搭建云端结合的目标分类系统,用于对物体图片进行分类。压缩得到的网络模型位于终端设备上,原始模型位于云端,共享同样的浅层特征提取网络层。在终端设备上的卷积层有4层,其中conv1层有96个卷积核,conv2层有256个卷积核,conv3层有64个卷积核,conv4层有16个卷积核。终端设备的深度神经网络的分叉出口位于conv2之上。如果终端设备对于验证集中的采样输入分类结果的一致性不高,即归一化熵高于某个特定的阈值,中间结果会继续传输到云设备中进行进一步处理。云设备的卷积层还有3层,conv3层有322个卷积核,conv4层有322个卷积核,conv5层有256个卷积核。
终端设备上的网络模型可以视为原始模型的裁剪压缩。因为深度神经网络的参数量与运算量主要集中在卷积核与卷积操作,而不同卷积核提取的特征各不相同,故它们并非都适合当前任务。终端设备上对卷积核特征剪枝,删减无效特征的卷积核,实现网络规模的压缩,进而减少存储量与运算量。这里采用数据驱使法,利用卷积核特征学习极度依赖于输入图像的特点,来判断不同卷积核的偏好,以寻找并删减冗余的无效卷积核。依据不同索引的卷积核对应神经元的激活值大小,记录卷积核的激活次数,认为激活次数少的卷积核对目标数据库贡献小或无贡献,最后将无贡献或贡献小的冗余卷积核进行剪除。
在混合部署方式下需要的存储量和推理运行时间如表2。
表2 混合部署方式存储量和运行时间测试结果
为检验混合部署中终端出口的阈值门限的效果,设置T值从0.1到1.00,测试得到运行结果见表3。其中T=1.0,意味着所有的验证集采样都在终端分类时满足置信,在终端中即可执行网络推理运算,不用再放入云端处理。T=0.1时,所有的验证集采样在终端分类不满足置信条件,需要进一步输入到云设备中处理。T依次按步长变化时,会有不同比例的采样进一步传输到云端。仅依赖于终端设备的网络推理运算,整体分类的精度较低,而随着云端设备在推理运算中参与的增加,整体分类精度也得到提升。但整个系统表现并不是线性的,可以看到阈值T=0.8时,总体表现较好,分类精度已经达到95%,而此时大约60%的采样在终端设备上就完成了推理运算,约40%的采样需进一步传输到云设备上进行推理运算。
表3 不同阈值下的混合网络比较
在神经网络的早期点对样本进行基于熵的表现标准分类为Teerapittayanon S等在论文[12]中提出。不同于Teerapittayanon S等在论文[12]中提到的混合式神经网络的训练流程,本方法仅在推理阶段基于熵的表现标准进行神经网络的云端混合部署,训练好的神经网络可预先采用压缩等方式部署在终端,不必进行复杂的训练流程,相对更为简单。
在物联网等终端设备中应用深度神经网络可以实现低时延和高效的数据分析,但受限于终端设备的内存和能耗,需要对设备所要求的模型精度和能耗进行约束。本文提出的混合分布式深度神经网络部署方式,运行在终端的深度神经网络精简模型与运行在云端上的深度神经网络复杂模型相结合,二者共用同一套浅层网络实现初始的特征提取。在终端快速实现基础特征提取,然后基于置信度的可靠性判断,在分类结果一致性不满足要求时,将中间结果进一步传至云,云上的复杂模型处理后输出高精度检测结果。此种混合方式灵活兼顾实时性与系统开销,并提供更好的数据隐私保护。