2.1 CNN

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

其中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图像输出计算如下:

其中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.

FINN(二)CNN,BNN及其硬件实现的背景知识相关推荐

  1. Armbian 笔记二_初识机顶盒硬件设备和接口知识

    ################################################## 目录 盒子硬件初识和接口知识 什么是网络机顶盒 CPU/GPU 视频/音频 视频接口 HDMI/A ...

  2. 硬件工程师入门基础知识(一)基础元器件认识(二)

    硬件工程师入门基础知识 (一)基础元器件认识(二) 1.二极管 2.三极管 3.MOS管 4.IGBT 5.晶振 tips:学习资料和数据来自<硬件工程师炼成之路>.百度百科.网上资料. ...

  3. 机器视觉(二):机器视觉硬件技术

    目录: 机器视觉(一):概述 机器视觉(二):机器视觉硬件技术 机器视觉(三):摄像机标定技术 机器视觉(四):空域图像增强 机器视觉(五):机器视觉与世界杯 机器视觉(六):频域图像增强 机器视觉( ...

  4. 我的智能充电桩开发笔记(二):系统硬件电路设计概述

    2.我的智能充电桩开发笔记(二):系统硬件电路设计概述 2 系统硬件电路设计 ​ ∗ ∗ ∗ ∗ 开 放 全 部 硬 件 , 软 件 设 计 资 料 , 如 硬 件 原 理 图 ,

  5. hpgen8服务器修改电源模式,用HP GEN8+WIN2012+Hyper V+黑群晖5.2组建家庭NAS中心 篇二:HP GEN8硬件改造...

    用HP GEN8+WIN2012+Hyper V+黑群晖5.2组建家庭NAS中心 篇二:HP GEN8硬件改造 2017-11-19 15:55:35 127点赞 945收藏 205评论 追加修改(2 ...

  6. LSM6DS3TR-C姿态传感器的使用(二)---HAL库硬件IIC和官方例程

    上篇记录了,利用模拟IIC读取LSM6DS3TR数据,这篇记录利用硬件IIC和LSM6DS3TR官方例程,读取加速计.陀螺仪.温度数据,并利用加速计数据装换成角度. 官网例程写的很好,有兴趣的网友可以 ...

  7. linux的硬件系统管理,Linux 系统硬件管理的基础知识(四)

    以下主要介绍我的***次安装Linux系统遭遇,以及怎么度过这个遭遇的,希望对大家有所帮助.不喜欢的可以略过.以下接<Linux 系统硬件管理的基础知识(三)>. 四.关于存储设备的不同的 ...

  8. 硬件工程师入门基础知识(一)基础元器件认识(一)

    硬件工程师入门基础知识 (一)基础元器件认识(一) 今天水一篇hhh.介绍点基础但是实用的东西. tips:学习资料和数据来自<硬件工程师炼成之路>.百度百科.网上资料. 1.贴片电阻 2 ...

  9. 四旋翼飞行器2——自己设计四旋翼飞行器的硬件准备和基础知识

    四旋翼飞行器2--自己设计四旋翼飞行器的硬件准备和基础知识 文章目录 四旋翼飞行器2--自己设计四旋翼飞行器的硬件准备和基础知识 DIY四轴需要准备什么零件 [基本原理与名词解释] 1.遥控器篇 什么 ...

最新文章

  1. 棋盘游戏的人工智能(二)------剪支
  2. linux cat 命令详解--转
  3. (三)Linux查看和修改文件权限
  4. 计算机硬件软件维护报告,计算机软硬件及络维护技能实习报告.doc
  5. Ubuntu系统备份工具大全(官方整理推荐)
  6. 玩转oracle 11g(10):初步了解Rman备份
  7. [Leedcode][JAVA]第[945]题
  8. 生成step文件_利用opencv给彦女王生成一副蒙太奇画像
  9. 【AI视野·今日CV 计算机视觉论文速览 第164期】Fri, 18 Oct 2019
  10. [log4j]log4j简单配置
  11. PID控制的输入量与输出量的关系
  12. HDU1860 统计字符【水题+输入输出】
  13. Netflix推出Hollow,处理内存数据集的Java库
  14. android u盘启动制作工具,多系统U盘启动盘制作工具(YUMI)
  15. java 忽略微信表情,java过滤微信表情符号
  16. 【小资生活】话剧——无人生还
  17. 阿里云数据库李飞飞:云计算推动数据库向云原生快速演进
  18. 比较TTL集成电路与CMOS集成电路
  19. JS的重绘(repaints)和重排(reflows)
  20. cisco硬件维修(交换机路由器防火墙模块电源维修)

热门文章

  1. 信息过剩而注意力稀缺的时代需要的是专注
  2. 医疗行业:容灾备份平台建设及运维难点
  3. 反相畴的基础知识和一篇论文
  4. node启动之后内存占用过高解决方案
  5. 【PyTorch训练中Dataset多线程加载数据,比Dataloader里设置多个workers还要快】
  6. MongoDB 3.2.7 for rhel6.4 副本集-分片集群部署
  7. 关于程序员的20 幅幽默漫画,太真实了!
  8. 怎样防止苹果系统更新_苹果xs换过原装屏幕可以更新14系统吗?
  9. 求一个数的最小素因子外加快速分解质因子
  10. python的cfg是什么模块_使用安装模块设置.py以及设置.cfg