李欣致,董胜波,*,崔向阳,刘志哲,郭广浩
(1.北京遥感设备研究所,北京100854; 2.航天科工网络信息发展有限公司,北京100048)
近年以来科学研究和市场表明,深度学习(Deep Learning,DL)[1]不仅在传统的语音识别、图像识别、搜索/推荐引擎、计算广告等领域证明了其划时代的价值,也引爆了整个人工智能(Artificial Intelligence,AI)生态向更大的领域延伸。深度学习是机器学习(Machine Learning,ML)领域中一个重要研究方向。深度卷积网络现已成为大规模图像识别的首选框架。由于深度学习的训练(Training)和推断(Inference)均需要大量的计算,AI界正在面临前所未有的计算能力挑战。传统的CPU处理器虽然具有强大的控制能力和通用性来处理不同的数据类型,但其需要逻辑判断、分支跳转以及中断等操作作为支撑,内部结构复杂且运算单元相对较少,不适合大规模并行数据运算,采用CPU处理器实现深度学习算法不能满足算法实时性要求。相比与CPU,GPU[2]具有大量运算单元,专门执行复杂的数学运算,对象为类型统一且无依赖的大规模数据。但是GPU没有专门实现神经元单元的电路,使用单个GPU或者集成多个GPU并行工作的处理效率均低于具有同等硬件资源的定制硬件加速电路。与GPU 和CPU相比,FPGA[3]性能更高、能耗更低,可采用FPGA实现定制深度学习硬件加速电路。但是FPGA作为“万能芯片”,需要预先布置大量门阵列以满足用户需求,以面积换速度,使用大量的门电路阵列,消耗更多FPGA内核资源;且FPGA缺少内存和控制器带来的存储和读取操作,虽然速度得到提升,但是运算量受到限制,进而制约了其性能。
AI[4]芯片从广义上定义为能够运行AI算法的芯片。AI芯片作为推动AI技术不断进步的硬件基础,随着市场需求的不断增长,各个领域不断涌现出针对智能应用的新颖设计算法和创新的架构体系。
从现有的市场应用场景角度分析,AI芯片目前主要分为两大方向:一个由数据驱动的云端芯片;另一个是供消费者终端使用的终端芯片。从功能角度分析,AI芯片主要完成训练和推理2个任务。目前,AI芯片的主要应用场景集中在云端和终端。云端AI芯片同时具备训练和推理2个功能。训练主要功能是对网络模型采用大量标注好的数据样本进行训练,得到网络参数,该过程对计算的性能和处理精度有极高的要求,且需要一定的通用性以保证能够完成多样的学习任务;推理主要功能是使用训练过程中建立的网络模型对新的数据集进行识别或分类,没有反向传播(Back Propagation,BP)[5]功能。相对于云端AI芯片,在计算精度、处理性能和通用性方面,终端AI芯片要求较低。但是,在用户体验方面,终端AI芯片需要不断优化,因为终端AI芯片是直接将推理结果反馈给用户。目前训练和推理功能主要由云端AI芯片完成。但随着技术发展和需求改变,市场应用开始逐步向终端AI芯片转移。现有需要具备推理能力设备的主流场景包括智能手机(Smartphone,SP)、高级驾驶辅助系统(Advanced Driving Assistant System,ADAS)[6]、计算机视觉设备(Computer Vision,CV)[7]、虚拟现实设备(Virtual Reality,VR)[8]、语音交互设备(Voice User Device,VUD)以及机器人(Robot)。
目前,大部分终端AI芯片的性能都依赖于在芯片外前期训练过程中的大样本数据库,优质的大数据量对终端AI芯片处理能力起着决定性的作用,且所使用的每一层的参数均在训练过程中产生。当样本量有限时,存在训练时使用的实验样本和真实数据的分布差异大,导致推理的识别率降低。如何在小样本背景下,基于高实时性、低功耗的深度学习终端AI芯片框架,对神经网络参数进行局部优化以提高用户体验,提高终端普适性和准确率是本文研究的重点。
本文针对上述问题,在样本有限情况下,对仅有推理的终端AI芯片进行了研究。使用反卷积特征可视化方法定位识别错误样本的卷积层(Convolutional Layer),根据高层不变性特征调整局部特征点的相关网络层参数,利用终端AI芯片高性能处理能力,对神经网络模型参数进行快速迭代反馈优化,以提高识别准确度。本文使用Kaggle数据集进行实验测试,搭建了5种常用深度学习模型。从实验结果可以得到,可视化反馈AI芯片能够在不重新训练数据情况下优化网络模型参数,有效提高了终端AI芯片的普适性和识别准确度。在此基础上,本文还提出了一种基于AI芯片的可视化反馈AI处理器设计架构,该设计架构的处理效率显著,明显优于CPU、GPU和FPGA。
可视化卷积神经网络(Convolutional Neural Networks,CNN)[9]模型是对CNN卷积核的探索解释,这里的可视化是指可视化CNN模型中的卷积层。CNN算法基于多层感知机(Multilayer Perceptron,MLP)[10],并在此引入了2个重要的运算:卷积和池化。在CNN基础上发展了很多高效的深度学习算法,如 AlexNet[11]、VGGNet[12]、GoogleNet[13]、ResNet[14]、SeNet[15]和YOLOv3[16]等网络结构。可视化算法根据网络模型可分为两大类:一类是基于非监督模型可视化,这类方法不需要BP算法,是对卷积层进行可视化,该类方法直接将图片在已有模型中进行一次前向传播,对某个卷积核响应最大的中间结果进行可视化;另一类方法是基于监督模型可视化,根据BP结果,对分类模型或图像特定类显示可视化,以达到优化图像作用。
只具有推理功能的终端AI芯片不具备BP算法,无法直接优化深度卷积网络的模型参数。本文采用基于非监督模型可视化算法,对特征层进行反卷积处理,对导致识别错误的卷积核进行局部调整参数,替代BP功能,达到优化模型,进而识别该类图像目的。
非监督可视算法以ZFNet[17]提出的反卷积算法为代表。2014年,CNN可视化开山之作[14]首次系统化地对AlexNet进行了可视化,并根据可视化结果改进了AlexNet。文献[14]提出了一种新的可视化技术,揭示了模型中任意层的特征层与输入之间的响应关系,应用于非监督模型。该文献使用了反卷积网络处理方法,将激活值反向处理映射回输入层像素空间,通过这种方式可以展示出每一层对特征映射图(Feature Map)中对一个给定激活值的影响。一个反卷积网络(Deconvolutional Network,deconvnet)[18]可以被看成是一个卷积网络模型,这个模型同样有卷积处理的组件(池化和激活),只是采用了相反的过程,将特征信息反向映射回像素层。
反卷积可视化处理流程如图1所示。反卷积可视化处理目的是用以验证神经网络各个层所提取到的特征信息。以各层处理后得到的特征图结果作为输入,对特征图结果进行反卷积处理,映射到像素层,得到该层结果。为检验一个给定CNN的激活,本文就将该激活的特征层后接一个反卷积网络,然后进行反池化、反激活、反卷积处理。重复上述过程直到原始输入层。
图1 反卷积可视化处理流程Fig.1 Deconvolution visualization process flow
在卷积神经网络中,max-pooling操作过程不可逆,但可以通过一系列switch变量来记录池化过程中最大激活值的坐标位置。反池化是近似处理,只记录池化过程中最大激活值所在的位置坐标信息,其余位置值设置为0。
反激活处理过程采用了和激活过程一致的ReLU函数。这是由于CNN使用ReLU以确保每层输出的激活值都是正数,因此反向过程的输出特征图也需要为正值,说明激活过程和反激活过程没有差别,同样采用了ReLU函数。
卷积过程使用学习到的过滤器对特征映射图进行卷积,为近似反转这个过程,反卷积使用该卷积核的转置来进行卷积操作。
该方法被用于可视化非监督深度体系结构,结合目前的无训练的终端AI芯片易于实现。反激活和反卷积算法可直接使用AI芯片的激活和卷积功能,反池化算法对整体可视化过程影响较小,暂不设计进芯片。其中,反卷积需要卷积核转置完成,在硬件AI芯片处理时可以先使用软件对图像进行转置处理,然后调用芯片的卷积功能完成反卷积运算。
反卷积可视化反馈系统可在具有卷积神经网络结构的终端AI芯片上实现,无需修改硬件架构,可有效增加终端AI芯片的适用性。
图2 卷积神经网络结构Fig.2 Convolutional neural network structure
CNN是深度学习代表算法之一,包含卷积计算且具有深度结构的前馈神经网络。卷积神经网络包括卷积层(Convolutional Layer)和池化层(Pooling Layer)。如图2所示,卷积网络通常有一个输入层,多个卷积和池化层,一个或2个全连接层,和一个输出层的结构组成。笔者将整个结构分为两部分理解:输入层和卷积池化层为特征表示器,全连接层和输出层可以看作一个分类器。例如输入一只狗的图像,特征表示器将图像的原始像素映射为眼睛、耳朵、鼻子、毛发等高级特征,再使用分类器对高级特征进行分类。主要处理流程如图2所示。
AI系统通常涉及训练和推理2个过程:训练过程通常需要大量标签样本数据作为输入训练出复杂的深度神经网络模型,并通过反向传播来不断优化网络参数,以最小化推理过程误差;推理过程是使用训练好的网络模型,对新的数据进行“推断”,如交通监控设备通过后台的神经网络模型,判断行驶车辆是否是可疑车辆。虽然推理过程运算量小于训练过程,但仍设计大量计算。
如图3所示,根据应用场景,现有芯片主要分为两大类:第1类是同时具有训练和推理的云端芯片,第2类是只具有推理功能的终端芯片。随着AI应用的普及且需求量大,带有轻量级训练的终端芯片是必然的发展趋势。
图3 AI芯片云端和终端区别Fig.3 Difference between AI chip cloud and terminal
AI的发展高度依赖海量数据,优质的大数据量数据库对终端芯片处理能力起着决定性的作用,且所使用的每一层的参数均在训练过程中产生。但在很多应用的特定场景下无法获取大量可用数据,比如航拍目标基地、遥感卫星获取舰船、心脑血管堵塞医学影像等。如何在只有某类小样本情况下,通过在终端芯片上进行反馈参数优化以提高用户体验是本文研究的重点。本文针对上述问题,对仅有推理的终端芯片提出一套解决方案。
不可训练的离线终端AI芯片没有BP功能,无法对神经网络参数进行直接优化调整。在小样本情况下,存在训练过程中缺失,但在推理中出现的样本。此时,使用训练过程得到的参数,在仅有推理的离线终端AI芯片判断出错的可能性很大。对于这种问题,目前没有更好的算法可以解决。那么,是否可以通过人工协助处理,对神经网络参数进行优化,以提高系统的分类准确度?
本文对此进行探索,并提出一种解决方案:利用基于非监督模型可视化算法,对深度学习每层卷积图层进行反卷积可视化处理,人工辅助定位误差样本,对影响结果最大的相关网络层进行参数调整,从而对神经网络进行优化处理,到达提高分类准确度目的。算法实现流程如图4所示,主要步骤如下:
步骤1终端芯片卷积、激活、池化处理。
如图5所示,使用有推理离线终端AI芯片对图像进行深度卷积、激活和池化处理,获得所有深度下的卷积层、激活层和池化层。
步骤2反卷积层可视化。
如图6所示,对每一层卷积层进行反卷积处理,通反激活和反卷积,得到每一层反卷积层,对卷积层进行可视化处理。其中,反激活函数使用原ReLU算法,可直接使用芯片完成相关操作;反卷积是将原二维卷积核进行了转置,可以先对图像进行转置,然后在现有芯片上实现处理。芯片没有反池化功能,经试验该功能影响较小,只进行反激活和反卷积处理。
步骤3人工协助调整参数优化。
图4 算法实现流程图Fig.4 Algorithm implementation flow chart
图5 对图像进行快速卷积、激活和池化处理Fig.5 Fast convolution,activation and pooling process of image
图6 对图像进行反激活和反卷积处理Fig.6 Deactivate and deconvolve process of image
当样本量有限,终端AI芯片无法准确识别出目标时,需要对卷积核进行参数调整处理。提取该卷积层对应参数,根据特征的几何不变性和光度不变性以及尺度无关特性对卷积核参数进行反复迭代调整。根据ZFNet[17]分析可知,以AlexNet为例,该网络结构有5层卷积层,神经网络从第1、2层卷积层会学习到图像的一些基本特征信息,包括颜色、线条、边缘等;第3层卷积层开始能够学习到更为丰富的纹理特征;第4、5层学到的是具有辨别性的关键特征。所以,通常卷积网络的后几层卷积层提取出的是关键特征。由于没有BP功能,无法确定卷积核参数变化方向,但可以通过人工辅助,先随机大幅度调参,根据反卷积可视化结果确认趋势后,再自动进行小幅度调参。例如卷积核是11×11大小,有121个数值,先随机100组对121个数值进行±0.1,通过可视化反卷积层对图像进行判断,确认变化趋势后,选出5组进行局部自动调参,以0.01或-0.01进行调整,利用硬件快速计算优势多轮迭代,直到识别出正确结果为止。且通过可视化反卷积图像,提供可视化反卷积层和对应的每一层参数,定位影响结果最大的卷积层。
综上,该方法通过对卷积层进行可视化,人为辅助调整卷积核参数,在一定情况下可达到参数优化效果,见图7,0~250为像素值。但由于没有BP功能,无法对误差进行逆向传播,可能会导致调整后权值仅适用于该张图像,但在其他图像中会仍出现识别错误问题。这是后面需要解决的技术难点,如使用可训练的终端AI芯片,或软件算法先对问题样本同类特征点进行分类,进行人工辅助类样本扩充。
图7 卷积核优化前后反卷积图像和识别结果Fig.7 Deconvolution image and recognition results before and after convolution kernel optimization
本文基于终端AI芯片,提出一种可视化反馈AI处理器架构,如图8所示,终端AI处理器作为协处理器,用于提高图像处理、识别的速度和精度,同时降低功耗。终端AI处理器中包含以下内容:一是缓存器,输入、输出、权重数据存储的3组缓存器,其中权重数据存储包含原卷积核权重、反卷积核权重核和优化卷积核权重3组数据;二是控制器,终端AI包含2个控制器,控制器1用于时序与总线控制,控制器2用于参数反馈调整;三是智能计算核心部分,包含卷积单元、激活单元、池化单元、反激活单元、反卷积单元和参数调整单元,其中卷积单元用于提取图像特征,激活池化单元用于压缩数据,反激活和反卷积单元用于反卷积可视化图像,最后根据反卷积单元,控制器控制参数调整单元对卷积核参数进行调整,迭代处理。研究重点是利用硬件高性能处理能力对参数反复快速迭代,结合反卷积可视化功能对卷积核权重参数进行优化,最终达到识别出目标的目的。
终端AI处理器处理流程如图9所示,具体步骤如下:
步骤1正向卷积处理得到识别结果。
对输入待识别图像进行多轮卷积、激活和池化处理,最后通过全连接层输出识别结果。当结果识别正确时开始识别下一张图,识别错误时,进行反卷积处理。
本色语文,是针对语文教学的种种偏颇认识和违背语文教学基本规律的种种异化行为提出的系统的教学主张,该成果获江苏省首届基础教育成果奖特等奖和国家教学成果奖。语文共生教学,是立足于母语教学的基本规律,运用共生理论,从丰富的教学实践中总结出来的,能体现母语教育规律和本色语文教学主张,具有原创性和推广价值的教学方法。前者是主张,后者是方法;前者主要是理性思考,后者主要是实践操作;前者侧重承继,后者着力创新。
图8 可视化反馈AI处理器Fig.8 Visual feedback AI processor
步骤2反卷积处理得到可视化图像。
对识别错误输出,从最后一层卷积图像开始,先将图像进行装置,然后逐层反卷积处理,得到多层反卷积可视图像,如AlexNet网络,有5层卷积层,经过反卷积处理后,最终得到5组反卷积图像。
步骤3卷积核参数优化。
卷积核参数优化需要用到BP功能,利用梯度信息对参数进行优化。但对于不具BP功能的终端AI芯片,无法通过这种方式对卷积核权重参数进行优化。结合反卷积可视化,利用硬件快速计算能力,选出影响较大的反卷积层对应的卷积核进行局部参数自动调整,反复迭代尝试,直到识别出正确结果为止。然后将新卷积核参数更新进卷积单元,并保留上次卷积核权重参数。
通过上述步骤,终端AI处理器可以利用反卷积可视化图像和硬件快速处理优势,对没有BP的深度学习框架下的卷积核权重进行局部优化参数处理。避免了花费大量时间重新训练网络参数,提供了一种对深度学习模型下人工参与的解决方案,增强了终端AI芯片的普适性和鲁棒性。
本文提出的架构,相比于CPU、GPU和FPGA,在卷积神经网络模型里,更具有高效处理能力和灵活可塑性。所提出的可视化反馈处理器架构,是基于卷积神经网络算法的框架,包含6个核心卷积单元、激活单元、池化单元、反激活单元、反卷积单元和参数调整单元,每个单元内部的参数灵活可配,每个单元之间的顺序和重复性可以调整,并通过片内缓存区对数据进行交互。这种设计方式不仅在每单元对不同功能进行了硬件加速封装,而且使得每个运算单元都有独立高速处理能力,各个硬件设计单元灵活可配置,能够兼容市面上大部分CNN模型算法框架,如AlexNet、VGGNet等。
图9 AI芯片反卷积可视化硬件处理流程Fig.9 AI chip deconvolution visualization hardware processing flow
由于深度学习的数据量和计算量均较为庞大,嵌入式人工终端AI处理器的设计需要同具体算法高度契合,以保证最终处理器产品的高性能、低功耗等指标。对于解决特定问题而设计的AI算法,需要经过通用平台和硬件环境进行多次算法迭代,最终形成准确度高、可行性强的算法数学模型。此后需要对数学模型进行建模分析、提炼基于此分析的工程化模型,即可实行性方案。最终,对该方案进行芯片前端设计,并通过仿真验证该芯片设计所能实现的性能和计算精度;与此同时,通过数据复用、可重构计算等新型设计方法,进一步提升芯片的整体性能和算法的执行效率。
如图10所示,本文实验在TensorFlow平台上搭建了准确度高、可行性强的算法数据模型。然后对该模型进行前端设计,并进行仿真验证。如图10所示,本文在TensorFlow上进行训练,分别搭建了AlexNet、ResNet18、ResNet50、ResNet101和YOlO3五种模型。ResNet18、ResNet50、Res-Net101由ResNet演变而来。使用Kaggle数据集,对12 500张猫和12 500张狗的数据集进行深度学习模型训练,为了充分利用测试图像数据信息,对训练集数据训练30次。然后使用Verilog语言完成可视化反馈处理器设计,并进行仿真处理,将训练好的参数存入权重缓存,然后对1 000张图像测试集进行识别,对识别错误的图像进行可视化反馈卷积核优化处理。
图10 验证平台流程Fig.10 Verification platform process
实验结果如表1所示,可视化反馈终端AI实现了AlexNet(5层卷积层)、ResNet18(17层卷积层)、ResNet50(49层卷积层)、ResNet101(100层卷积层)和YOLO3(53层卷积层)5种模型。测试CPU处理器是Intel E5-2680主频2.4 GHz双核处理器,GPU显卡是NVIDIA GeForce GTX 1080Ti主频1.54 GHz,FPGA使用TI的ARM11。表中展示了每种模型下的实验结果对比,其中AlexNet、ResNet18、ResNet50和ResNet101的图像测试幅宽是244×244,YOLO3的图像测试幅宽是416×416;优化前识别率是优化卷积核参数前的识别率;优化卷积核参数后的识别率不把当前这张图重新识别正确计算在内;平均处理时间是在当前网络模型下识别一张图结果的处理时间,分别在CPU、GPU、FPGA和本文架构上进行测试;平均优化参数时间是当前网络模型下识别错误时,使用可视化反馈参数优化功能下识别正确一张图的平均时间,分别在CPU、GPU、FPGA和本文架构上进行测试。
根据实验结果可以分析出,卷积核优化后识别率有一定的提升,但增幅不大,主要原因是因为样本有限,使得调整后的权值模型适用范围有限,可能仅适用于该图像,在其他图像中仍然无法正确识别。该问题需要进一步探讨和解决,比如可在有轻量级训练终端芯片上,根据高层特征不变性扩展样本,能识别出这一类图像集。对比CPU、GPU和FPGA 3种架构,本文架构的计算效率明显更高,平均处理效率是CPU 的678倍,GPU的14倍,FPGA的2倍。其中,本文架构设计和FPGA效率相近,但在计算优化参数时本文架构的处理效率是其7.6倍,这是由于FPGA受限于并运算。相比之下,本文架构的处理效率优势明显。但优化过程运算量大,使用时间平均是识别过程的23000倍。
表1 不同模型实验结果对比Table 1 Comparison of experimental results among different models
本文提出一种基于终端AI芯片的可视化反馈系统架构方法,针对小样本情况下,对仅有推理功能的终端AI芯片进行了研究,在识别错误的情况下,对错误图像的各个卷积层进行反卷积可视化,利用硬件芯片快速计算优势,对卷积核权重参数进行优化处理,达到可识别图像目的。实验验证表明:
1)所提方法可适性强,可用于所有具备深度学习功能的终端AI芯片,不受限于深度学习反向传播功能。
2)所提方法处理效率高,对比CPU、GPU和FPGA 3种典型架构,本文设计架构具有高效处理能力和灵活可塑性。
3)所提方法提高了终端AI芯片的普适性以及识别准确度,在无BP的终端AI芯片上,可以通过该方法对深度学习网络模型参数进行优化,在不重新训练样本情况下提高了整体识别率。
4)样本过于单一情况下,存在一定风险使得优化后的网络卷积核参数仅适用于该图像,而其他图像仍可能识别错误。且优化过程运算量大,使用时间是识别过程的23 000倍。
基于目前的工作,后续可以开展进一步研究:一是进一步优化网络参数,考虑使用生成式对抗网络(Generative Adversarial Networks,GAN)[19]对识别出错的样本进行扩展,增加网络模型强健性;二是优化算法处理性能,研究新的深度学习可解释算法,结合终端AI芯片特性,对调整参数的效率进行优化加速处理。