参考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

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

DNN硬件加速器设计1 -- 序(MIT)相关推荐

  1. mit数据集_MIT的DNN硬件加速器教程(二)流行的DNN和数据集

    本slide主要介绍当前流行的一些DNN以及数据集 slide链接 https://www.rle.mit.edu/eems/wp-content/uploads/2019/06/Tutorial-o ...

  2. 基于FPGA的LSTM加速器设计(MNIST数据集为例)

    摘要 本文以MNIST手写数字识别任务为例,使用FPGA搭建了一个LSTM网络加速器,并选取MNIST数据集中的10张图片,通过vivado软件进行仿真验证.实验结果表明,本文设计的基于FPGA的LS ...

  3. 如何设计神经网络的硬件加速器

    设计神经网络的硬件加速器的方法有很多种,具体的方法取决于你的应用场景以及你希望达到的性能目标.一些常用的方法包括: 使用专门设计的神经网络处理器,比如 Google 的 Tensor Processi ...

  4. 【基于zynq的卷积神经网络加速器设计】(一)熟悉vivado和fpga开发流程:使用Vivado硬件调试烧写hello-world led闪烁程序实现及vivado软件仿真

    HIGHLIGHT: vivado设计流程: note: 分析与综合 和 约束输入 可以调换顺序 [基于zynq的卷积神经网络加速器设计](一)熟悉vivado和fpga开发流程:使用Vivado硬件 ...

  5. XC7VX690T板卡设计资料:VC709E 基于FMC接口的Virtex7 XC7VX690T PCIeX8 接口卡 软件无线电处理平台 图形图像硬件加速器 Net FPGA

    VC709E 基于FMC接口的Virtex7 XC7VX690T PCIeX8 接口卡 一.板卡概述 本板卡基于Xilinx公司的FPGA XC7VX690T-FFG1761 芯片,支持PCIeX8. ...

  6. 实验项目5.1 深度学习算法与硬件加速器

    实验对CPU的修改不多,如果完全按照RISC-V的要求设计CPU,将mul归类为R-Type的话,改动较多.但是我们可以单独设计一跟op_mul电线,然后单独设计乘法指令. 乘法指令的实现,直接使用其 ...

  7. 硬件加速器为人工智能应用服务

    硬件加速器为人工智能应用服务 Hardware accelerators serve AI applications 硬件加速器(Hardware accelerators)是用于执行特定任务(如对对 ...

  8. 基于FPGA实现的MobileNet V1,FPGA深度学习加速器设计 CNN Accelerators based on FPGAs

    Automatic Generation of Multi-precision Multi-arithmetic CNN Accelerators for FPGAs 最近arXiv上挂出来一篇文章, ...

  9. 基于FPGA的深度卷积神经网络的加速器设计

    英文论文链接:http://cadlab.cs.ucla.edu/~cong/slides/fpga2015_chen.pdf 翻译:卜居 转载请注明出处:http://blog.csdn.net/k ...

  10. 基于pynq的数字识别神经网络加速器设计

    文章目录 基于pynq的数字识别神经网络加速器设计 软件部分 1. 全连接神经网络: 2. 卷积神经网络搭建: 3. 文件格式转换: 硬件部分 1. MNIST的硬件实现思路 2. 代码编写与硬件综合 ...

最新文章

  1. java实现Kafka生产者示例
  2. mysql数据库可以升级吗_[数据库]MySQL升级
  3. 如何让gridview中的checkbox根据数据库情况默认选中?
  4. Linux RHCS中心跳网络接口的指定
  5. 多线程设计模式(二):Future模式
  6. DDD(Domain-Driven Design)领域驱动设计-(二)事件风暴
  7. 【渝粤教育】国家开放大学2018年春季 0689-21T老年心理健康 参考试题
  8. 运筹学笔记 网络计划
  9. 关于城市旅游的HTML网页设计——中国旅游HTML+CSS+JavaScript 出游旅游主题度假酒店 计划出行网站设计
  10. 洛谷·[HNOI2015]落忆枫音
  11. CSScript 使用纪要
  12. 【dgl学习】dgl.canonical_etypes函数解析
  13. 两岸四地消费者信心指数出炉:中国大陆消费者信心指数评析
  14. 个人小程序开发有哪些限制?
  15. 防控青光眼的3大武器
  16. 小学教师听课体会 计算机,小学教师观有效课堂听课心得体会
  17. python爬虫爬取起点小说_python3爬虫-使用requests爬取起点小说
  18. java期末知识点总结_java期末复习
  19. abaqus java 二次开发_Abaqus二次开发介绍
  20. 技术积累 — SecureCRT串口工具及其使用说明

热门文章

  1. 记录一个可以word,xls,PDF互转思维导图的工具
  2. 服务器对大文件传输有限制怎么办,20G、100G、200G大文件怎么通过网络远程传输,一招快速解决网络传输大文件...
  3. aut0cad2010卸载工具_autocad2010官方版
  4. Windows10 VMware 虚拟机桥接模式无法上网 但是和宿主机能互相ping通
  5. MATLAB 棋类小游戏合集(围棋,六子棋,走四棋,九子棋,含禁手五子棋等等)
  6. unity学习之可编程渲染管线 SRP Batcher
  7. 安利一款全网最牛还是免费的群控软件
  8. java IO流的概念理解
  9. 数据库实验一实验报告
  10. 和谐Froala editor编辑器