面向芯片实现的精简计算卷积神经网络电路设计文献综述

 2022-09-22 11:36:51

文献综述(或调研报告):设计专用的硬件来加速神经网络的想法由来已久。中科院计算所寒武纪团队是最早一批开始这方面研究的团队,他们的研究历程基本涵盖了所有加速思路,因此我们不妨通过他们的DianNao系列来探究神经网络加速芯片的发展。

首先是从ASIC芯片特点出发。在加速芯片诞生前神经网络多使用CPU和GPU这类通用计算模块来执行的。而神经网络通常不需要这些复杂的计算功能,反而更需要更大的计算量。寒武纪团队早在2014年就提出了DianNao结构[1]。这个结构包含输入、输出和权重三部分的DRAM存储器,16组乘法,加法和激活单元,通过让16组数据同时计算实现神经网络的计算加速。这种设计神经网络专用计算单元,让大量数据并行计算的加速思路是使用硬件加速神经网络的基础方案,其后几乎所有方案都是在这个方案的基础上发展而来的。英伟达的NVDLA将这个方案发挥到极致。其后的DaDianNao[2]思路不变,在DianNao的基础上设计了一个合理的布线结构让16个DianNao集成在一块芯片上。之后研究员发现DRAM的读写损失了大量性能,因此为了避免使用DRAM他们又提出了专为卷积神经网络设计的ShiDianNao结构[3]。这一结构的想法是直接从传感器获得输入,输出流回计算单元,而卷积神经网络的权重值通常较少因此可以使用SRAM来存储。通过FIFO等控制器控制数据以一定顺序流入流出计算单元使除权重以外的数据不需要存储在存储器中。这种减少存储访问的加速思路也是目前绝大多数AI芯片采用的思路,只是实现的方案各不相同,例如Google的TPU[4]、清华大学的可重构混合神经网络处理器[5]使用脉动阵列来让数据保持流动以减少存储器的使用。

左上:DianNao 右上:ShiDianNao 下:DaDianNao

左:NVDLA 右:TPU

ShiDianNao结构基本已经完成了目前科技水平下硬件加速方案的探索。之后的Cambricon-X结构则开始尝试从另一个角度提高性能。除了研究如何发挥芯片的硬件特性外,在网络结构上也有许多可以优化的地方。保证准确率同时提高计算速度、降低网络尺寸,也就是精简计算(更多时候称为轻量化),不仅能够应用在设计加速芯片中,还能大幅提高使用GPU计算神经网络的性能。卷积神经网络的思想就是使用卷积来提取图片的平面和特征(颜色)信息,因此为了用更少的计算量获取更准确的信息人们开始了各种各样的尝试。Inception[6][7][8]系列论文首先介绍了同时使用1x1、3x3、5x5、7x7多种卷积核能够提高准确率,将这些卷积核对同一个输入卷积并使用concat将结果组合在一起作为下一层的输入。之后又提出了用两层的3x3卷积代替一层5x5卷积可以实现相同的效果同时降低计算量。这一研究奠定了之后神经网络只使用1x1卷积和3x3卷积的基础。基于这些发现Inception测试了许多种1x1卷积和3x3卷积的组合方式,取得了不错的效果。深度分离卷积[9]为之后的众多轻量级模型提供了一个思路,传统的3x3卷积核对输入的所有通道进行卷积操作,而深度分离卷积则将其改为每个3x3卷积核分别对输入的单个通道卷积,再由1x1点卷积对3x3卷积输出的所有通道卷积并相加,基本实现了传统3x3卷积的功能并大幅减少了计算量。谷歌提出的MobileNet模型[10]将这个做法发扬光大,增加了两个系数进一步压缩模型的规模。Xception[11]则同时参考了Inception和深度分离卷积,提出了1x1卷积和3x3卷积都直接对输入数据操作,再将结果相加。其后较深度分离卷积思想更进一步的bottleneck[12]结构同样促成了一系列轻量级网络,例如Google提出的MobileNetV2[13]模型,在原来设计的基础上又添加了点卷积,首先由点卷积放大通道数,再由3x3面卷积获取平面信息,最后由点卷积减小通道数,相比MobileNet计算量基本不变,准确率有了不小的提升。同样参考了bottleneck结构的ShuffleNet[14]则更进一步,将通道分成3组,使1x1卷积只需要对自己组内的通道卷积,进一步减少了计算量,同时为了保证通道信息不因此被割裂增加通道打乱重组的操作。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。