宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

2.1 CNN

这项工作的重点是监督学习,其目标是找到一个函数g(xi),它近似于映射xi→yi ∀i,其中{xi,yi}是一个输入/输出对,称为训练样例。 多层感知器是一种人工神经网络,其神经元在多层中排列,神经元将前一层的所有神经元的输出作为输入。 在数学上,全连接网络的第l层中nth神经元的输出al,n计算如下:
FINN(二)CNN,BNN及其硬件实现的背景知识-风君子博客

其中wl,n,s是 lth层中sth突触与nth神经元的输入相连的的权重,bl,n是偏置项,fact是激活函数,S1是连接到lth层中每个神经元的突触数。

流行的激活函数包括:双曲正切函数,fact(a)= tanh(a); 和整流线性单位(ReLU),fact(a)= max(0,a)。 此外,我们只研究推理问题,假设认为参数w已经被学习了。

卷积神经网络(CNN)是多层感知器的变体,其中,前一层仅接收来自前一层的小接收场的输入。 这种方法大大减少了所涉及的参数数量,但仍能找到局部特征(例如:边缘,角落)。

神经网络中的基本2D卷积层类似于全连接层,除了以下的不同外:
a)每个神经元接收的图像为 输入,生成的图像作为其输出(而不是标量);
b)每个突触学习一小部分(卷积窗口的大小)权重;
c)输出图像中的每个像素是由所有突触权重和相应图像之间的卷积的总和得到的。

lth卷积层的输出,需要输入Sl个尺寸为Rl×Cl的图像,(r,c)位置上的像素、pl,n,r,c,nth图像输出计算如下:
FINN(二)CNN,BNN及其硬件实现的背景知识-风君子博客

其中Jl×Kl是卷积窗口的大小。2D卷积层可以减少到矩阵乘法,然后再进行是元素激活函数运算,在后面会对此进行更加详细的介绍。

CNN拓扑结构由几个常见的基元组成:卷积层,池化层和全连接层。

池化层可以被看作2D图像的简单降低取样频率取样器。 基本最大池化层将图像划分为给定窗口大小的小子块,然后用其最大元素替换子块。 平均池化层类似,但使用平均函数而不是max

2.2 BNN

虽然浮点数是处理神经网络训练期间处理的小更新的自然选择,但结果参数可能包含大量重复信息(参考论文1)。拥有冗余的几个可能的原因之一是精度(参考论文2)。BNN另一方面,计算输出所涉及的一些或所有算法被约束为单比特值。我们考虑神经网络层的二值化的三个方面:二进制输入激活,二进制突触权重和二进制输出激活。 如果这三部分都是二进制的,我们将其称为完全二值化,将具有一个或两个部分是二进制的情况称为部分二值化。

Kim和Smaragdis(参考论文3)认为完全二值化可以提起预定一部分突触权重为0,其他所有突触权重为1。他们使用MNIST数据集的全连接网络得到了98.7%的准确率,并观察到只有XNOR和bitcount操作是必要的用于这样的神经网络的计算。XNOR-Net由Rastegari等人提出(参考论文4) 在ImageNet数据集上应用了卷积数据集,其灵感来自于AlexNet,ResNet和GoogLe Net,实验报告得出,完全二值化高达51.2%的和部分二值化65.5%的Top-1精度。

由Zhou等人提出的DoReFa-Net(参考论文5)探讨了前向传递和后向传递期间精确度的降低,这打开了在FPGA上建立神经网络的有趣可能性。 他们的结果包括在SVHN和ImageNet数据集上进行部分和完全二值化的配置,包括最佳情况ImageNet top-1准确度为:完全二值化53%,部分二值化53%。

最后,Courbariaux等人的工作(参考论文6) 描述了如何训练完全连接和卷积网络的完整二值化和批量归一化层,报告MNIST,SVHN和CIFAR-10数据集的竞争准确性。 这项工作是使用他们开放的源实现进行的。 在本文的其余部分,我们使用首字母缩略词CNN来指代传统的或非二值化的神经网络。

2.3 神经网络在硬件

在FPGA和ASIC上,将神经网络映射到硬件,需要大量的先前工作。通过介绍Misra和Saha 的工作(参考论文7),以进行更加深入的研究学习。 在这里,介绍一组最新且具有代表性的作品,通过它们的基本架构将它们分为四类:
1)单个处理引擎,通常采用收缩阵列的形式,按照顺序处理每一层;(参考论文8)
2)流式架构,由每个网络层一个处理引擎组成; (参考论文9)
3)矢量处理器,其指令专用于加速卷积的基元运算;(参考论文10)
4)神经突触处理器,它实现了许多数字神经元及其互连权重。(参考论文11)

收缩阵列
Zhang描述了一个单处理引擎风格的体系结构,使用theoretical roofline models tool来设计加速器,来优化每个层的执行运算。 Ovtcharov(参考论文12)实现了类似的风格架构,但实现了比Zhang快3倍的速度。 Chen的Eyeriss(参考论文13)使用16位固定点而不是浮点,并结合几种不同的数据重用策略。 每个2D卷积被映射到1D卷积跨多个处理引擎,允许每个处理元素的完全规则的访问模式。 报告得出,使用数据重用这种方法,比其他方法提供了2.5倍的更高能源效率。 Andri(参考论文14)等人的YodaNN具有与Zhang(参考论文8)类似的设计,但探索了固定大小窗口的二进制权重。

流式架构
Venieris和Bouganis (参考论文9)提出了一种同步数据流(SDF)模型,用于将CNN映射到FPGA,这与我们的方法类似。 主要的不同之处在于我们的设计针对BNN进行了优化,而其设计针对的是传统的CNN。 他们的手动调谐设计达到了高达1.62倍的性能密度。 Alemdar(参考论文15)在MNIST数据集上实现具有流媒体的全连接三元权重神经网络,报告显示,每秒高达255K帧,但是专注于这些网络的训练方面。

矢量处理器
Farabet(参考论文10)描述了一种可编程的ConvNet Processor (CNP),它是一种RISC矢量处理器,具有针对CNN的特定宏指令,包括2D卷积,2D空间池,点积和元素非线性映射函数(2D convolutions, 2D spatial pooling, dot product and an elementwise non-linear mapping function)。 作者还创建了一个工具,用于将高级网络描述编译成用于调用CNP的主机代码。

神经突触处理器
TrueNorth (参考论文11)是一种低功率、并行ASIC,具有4096个神经突触内核,每个内核实现256个二进制输入,256个神经元和256×256阵列的突触。 内部路由器可以将任何内核上的任何输入连接到任何内核上的任何神经元,从而允许在固定硬件上实现许多网络拓扑。

作者不了解任何研究完全二值化神经网络到FPGA的映射的出版物。 与现有技术相比,二进制网络推理引擎可以显著提高分类率,同时降低功耗并最大限度地减少延迟。目前,这是以较大网络的精度略有下降为代价的,但我们认为
a)在某些领域是有用的尝试:不需要最高精度,或者可以用较小的网络解决(例如扑克牌或手写数字的分类)(参考论文16);
b)通过增加网络规模可以提高准确度(参考论文2);
c)机器学习研究是一个持续主题。

参考论文
1)S. Han, H. Mao, and W. J. Dally. Deep Compression:Compressing Deep Neural Network with Pruning,Trained Quantization and Huffman coding. CoRR,abs/1510.00149, 2015

2)W. Sung, S. Shin, and K. Hwang. Resiliency of deep neural networks under quantization. CoRR,abs/1511.06488, 2015

3)M. Kim and P. Smaragdis. Bitwise neural networks.CoRR, abs/1601.06071, 2016

4)M. Rastegari, V. Ordonez, J. Redmon, and A. Farhadi.XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks. In ECCV, 2016

5)S. Zhou, Z. Ni, X. Zhou, H. Wen, Y. Wu, and Y. Zou.DoReFa-Net: Training low bitwidth convolutional neural networks with low bitwidth gradients. CoRR,abs/1606.06160, 2016

6)M. Courbariaux and Y. Bengio. Binarynet: Training deep neural networks with weights and activations constrained to +1 or -1. CoRR, abs/1602.02830, 2016

7)J. Misra and I. Saha. Artificial neural networks in hardware: A survey of two decades of progress.

8)C. Zhang, P. Li, G. Sun, Y. Guan, B. Xiao, and J. Cong. Optimizing FPGA-based accelerator design for deep convolutional neural networks. In Proc. ACM/SIGDA ISFPGA, pages 161{170. ACM, 2015.

9)S. I. Venieris and C.-S. Bouganis. fpgaConvNet: A Framework for Mapping Convolutional Neural Networks on FPGAs. In Proc. IEEE FCCM, pages 40{47. IEEE, 2016.

10)C. Farabet, C. Poulet, J. Y. Han, and Y. LeCun. CNP:An FPGA-based processor for convolutional networks.In Proc. IEEE FPL, pages 32{37. IEEE, 2009.

11)S. K. Esser, P. A. Merolla, J. V. Arthur, A. S. Cassidy,R. Appuswamy, A. Andreopoulos, D. J. Berg, J. L.McKinstry, T. Melano, D. R. Barch, et al.Convolutional Networks for Fast, Energy-Efficient Neuromorphic Computing. CoRR, abs/1603.08270,2016.

12)K. Ovtcharov, O. Ruwase, J.-Y. Kim, J. Fowers,K. Strauss, and E. Chung. Accelerating deep convolutional neural networks using specializedhardware, February 2015

13)Y.-H. Chen, J. Emer, and V. Sze. Eyeriss: A spatial architecture for energy-efficient dataflow for convolutional neural networks. In Proc. ACM/IEEE ISCA. IEEE, 2016.

14)R. Andri, L. Cavigelli, D. Rossi, and L. Benini.YodaNN: An ultra-low power convolutional neural network accelerator based on binary weights. CoRR,abs/1606.05487, 2016.

15)H. Alemdar, N. Caldwell, V. Leroy, A. Prost-Boucle,and F. P´etrot. Ternary Neural Networks for Resource-Efficient AI Applications. CoRR,abs/1609.00222, 2016.

16)Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner.Gradient-based learning applied to document recognition. Proc. of the IEEE, 86(11):2278{2324, 1998.