- 文献综述(或调研报告):
卷积神经网络(CNN)是一种很有前景的算法,可用于识别、挖掘和综合应用[1]。近年来,基于CNN模型的应用越来越受到关注,如手写识别[2]、人脸检测[3][4]、视频监控[5]、自然语言分析[6][7][8]、智能交通[9][10][11]。这些最先进的CNN比20世纪90年代使用的CNN[12]大几个数量级,需要存储高达数百兆字节的滤波器权重和每个输入像素30K到600K计算量。这些网络的巨大规模给底层处理硬件带来了吞吐量和能效方面的挑战。
- CNN算法简介
卷积神经网络(CNN)是通过将多个计算层堆叠成有向无环图来构建的[13]。通过每一层的计算,可以提取输入数据的高层抽象特征,称为特征图(fmap),其中保存了关于目标任务的信息。现代CNN能够通过采用非常深的网络层来实现良好的性能。
CNN的主要计算是在执行高维卷积的卷积(CONV)层。在最新的CNN模型中,通常使用从5[1]到数百[14]个卷积层。CONV层对输入fmaps(ifmaps)应用滤波器,以提取嵌入的视觉特征并生成输出fmaps(ofmaps)。滤波器和fmap的维度都是4D:每个滤波器或fmap都是由多个2D平面(即通道)组成的3D结构,并且一批3D ifmaps由卷积层中的一组3D滤波器处理。此外,还有一维偏差值被加到滤波器计算结果中。在表 1 CONV/FC层参数中,CONV层的计算定义为:
(1)
O、I、W和B分别是ofmaps、ifmaps、滤波器和偏差值的矩阵。U是给定的步幅大小。图1显示了此计算的可视化(忽略偏差值的计算)。
图 1 CONV/FC层的计算
表 1 CONV/FC层参数
出于分类目的,通常将少量(例如3个)全连接层(FC)堆叠在CONV层之后。FC层也像在CONV层中一样在ifmaps上应用滤波器,但是滤波器的大小与ifmaps相同。因此,它不像在CONV层中那样具有权重共享属性。在一些附加约束(H=R、E=1和U=1)下,公式(1)对于对FC层的计算仍然适用。在CONV层和FC层之间,可以选择添加其他层,例如池化(POOL)层和批归一化(NORM)层。每个CONV层和FC层之后还有一个激活层(ACT),例如整流线性单元(Relu)[15]。
- CNN算法的硬件挑战
在大多数广泛使用的CNN中,如AlexNet[1]和VGG16[16],卷积层占整个网络计算量的90%以上,并产生大量的数据搬运。因此对运行CNN的硬件的吞吐量和能量效率有很高的要求。
而对于FC层,尽管使用了大量的滤波器权重,但最近的一项研究表明,这些权重可以压缩到其原始大小的1-5%[17],极大程度地减小了FC层参数量的问题。POOL层的处理可以使用CONV层的计算方案,因为其计算是等式(1)的简化形式,其中MAC被MAX操作替换。而ACT层的计算是比较简单的,对于NORM层的支持可以省略,因为它在最近的CNN中的使用减少了[14][16]。
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。