DNN硬件加速器设计1 -- 序(MIT)

        参考MIT的DNN硬件加速器设计课程和自己之前在设计CNN硬件加速器课题中的理解,梳理了自己对DNN硬件加速器设计的基本理解框架,整个知识框架如下所列:

1. Overview of Deep Neural Networks

2. Survey of DNN Development Resouces and DNN Hardware

3. DNN Accelerators

4. Network and Hardware Co-Design

5. Benchmarking Metrics for DNN Hardware

1. Overview of Deep Neural Networks

1.1 Background of Deep Neural Network

(1)Artifical Intelligence 与 Machine Learning 之间是什么样的关系?什么是Machine Learning ?

        答:Machine Learning是Artifical Intelligence研究领域的一个知识子集,是实现Artifical Intelligence的一种方式。对Machine Learning的定义描述可以引用Arthur Samuel的一句话" Field of study that gives computers the ability to learn without being explicitly programmed ".

(2)什么是Brain-Inspired Machine Learning?它和Machine Learning之间是什么关系?

        答:Brain-Inspired Machine Learning是一种通过理解或者模仿生物大脑如何工作而设计的一种仿生算法。

 图 1

        在大脑中有大约86B个如图1所示的神经元,神经元是大脑中处理电信号的基本运算单元。神经元之间通过大约10**14 - 10**15个轴突(Synapses)相互连接。神经元从树突(dendrites)获得电脉冲形式的输入信号,信号沿着轴索(Axon)传递电信号。轴突末端(Axon termials)和其他神经元的树突(dendrites)相连接,在神经元轴突上的轴突参数(Synaptic weights)用于控制传递的信号强度。

(3)Spiking-based Machine Learning是什么? 它和Brain-Inspired Machine Learning之间是什么关系?

        答: Spiking-based Machine Learning缩写为SNN,被称为脉冲神经网络,又称为类脑神经网络。SNN并不是一个相CNN,RNN那样的网络结构,而是一个新型的,更加接近人脑的一种神经网络。不同于CNN,RNN的权值参数是数值类型编码,SNN采用的是长短脉冲序列来编码,在激活函数方面,不同于CNN,RNN采用可导的激活函数,SNN采用的阈值的分段函数。Spiking-base Machine Learning是Brain-Inspired Machine Learning的一种实现方式。

(4)什么是Neural Networks? 它和Brain-Inspired Machine Learning之间是什么关系?

        答:

 图 2

        图2所示的运算结构为Neural Networks的基本运算单元,其结构来自对实际生物神经元结构的抽象。计算过程是:输入信号值X0和相应的权值参数W0相乘,然后将结果累加,之后将累加和与偏移量b相加,最后经过特定的激活函数产生输出信号值。

 图 3

        多个如图2所示的神经元在纵向上进行排列,就形成了一个基本运算层,将多个运算层进行级联便形成了如上图3所示的多层神经网络。

        Neural Network是Brain-Inspired Machine Learning的一种实现方式。

(5)什么是Deep Learning? 那些原因推动了Deep Learning的发展?

        答:Deep Learning本质就是层数更深的神经网络。推动Deep Learning飞速发展的原因主要有以下三点: 1) 海量的数据支持(如何从众多数据中获得实际有效的数据,数据处理),2)硬件算力的支持(如何充分利用硬件算力平台,异构计算),3)新的神经网络算法(算法设计)

(6)Deep Learing的实际应用领域有哪些?

        答: 1)图像处理相关的有: Image Classification, Image Segmentation, Object Localization, Action Recognition, Object Detection, Image Generation

         2) 文本处理相关的有: Speech Recognition, Natural Lanuage Processing, Speech Translation, Audio Generation

        其他的领域还有:Games, Medical Applications, Self-Driving等

1.2 Overview of Deep Neural Networks

(1)DNN发展的时间线

        答:在1940s,Neural networks被首次提出;在1960s, Deep neural networks被首次提出,在1990s,出现了早期的针对shallow neural nets的硬件计算平台;在1998年,针对MNIST数据集的LeNet网络被提出;在2011年,Microsoft将DNN应用于Speech recognition领域;在2012年,深度学习(Deep learning)开始替代传统的机器学习算法,例如:AlexNet用于Image Classification;从2010开始,对DNN硬件加速器的研究开始兴起,例如:Neuflow, DianNao, etc.

(2)DNN网络类型

        答:1)全连接神经网络(Fully-Connected NN); 2)卷积运算神经网络(Convolutional NN);3)循环神经网络(Recurrent NN)4) 长短记忆神经网络(Long short-Term Memory)

(3)Deep Convolutional Neural Networks

 图 4

        如图4所示为DCNN的基本结构图。

1)卷积运算层(CONV Layer)

        卷积运算层的计算量占了网络整体计算量的90%左右,在整个运行时间(runtime)和能耗(energy consumption)中占了主导地位。

 图 5

        如图5所示,是卷积运算的过程示意图。权值参数以计算窗口的形式在特征数据上滑动进行卷积滤波(乘累加)运算,其数学计算公式如下所示:

 图 6

        如果只是进行一次前向传播的运算是没有N(fmap batch size)这个参数的。也就是一次前向传播运算算法没有如下图7所示的7层for循环运算的最外层循环:

 图 7

2)激活函数(Activation Functions)-- 目的:引入非线性计算,要求:连续可导

1. 一些传统的激活函数

 图 8

2. 一些现今的激活函数

图 9 

3)全连接运算层(Fully-Connected Layer)

        全连接运算层本质上是一种矩阵向量乘运算,计算示意图如下图10所示:

 图 10

4)池化运算层(Pooling Layer)

        池化运算层是一种下采样滤波计算,用来减小输入特征的大小,以减小后续的计算量。如下图11所示为最大值池化和均值池化的示意图。

 图 11

        通常的池化运算有三种,最大值池化,最小值池化,均值池化,特殊的池化有空格池化。对于最大值,最小值池化,因为都是比较运算,有益于硬件实现,而均值池化中需要做除法,如果没有专用除法器电路,而是使用FPGA实现,可以使用移位运算来近似替换,但是会不可避免的引入精度丢失的问题。

        如下图12所示为池化运算的计算过程算法表示,和卷积运算相似,下图中6层for循环的最外层for循环是batch size.只一次前向传播计算时,池化运算只需要内5层for循环运算。

 图 12

5)归一化层(Normalization Layer)

        归一化层一般被放置在CONV/FC Layer与Activetion function之间。注意:归一化层被认为是在更深的神经网络中获得高准确率和在网络循环过程中,快速收敛的关键。在后续的量化处理中,也起着很重要的作用。

        如下所示是归一化层中的计算公式以及相应参数的含义:

         有一种类型的归一化层叫做Local Response Normalization (LRN), 该归一化层的计算原理是采用试图模仿大脑中的信号抑制原理的方案。

图 13 

        但该类型的归一化层现在已经不用了,具体原因,我猜测估计是网络实验效果不佳吧,没有找到理论解释。(欢迎有大佬解答下疑惑...)

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值