完全硬件实现的忆阻器卷积神经网络(CNNs)

原文标题:Fully hardware-implemented memristor convolutional neural network
作者:Peng Yao.et al.
期刊:Nature
这篇是2020年初清华大学发表在nature上的文章,当时就看见很多媒体报道,这篇文章也是去年WOS(Web of Science)上忆阻器方面被引次数最多的三篇文章之一(被引45次)。以下只翻译了摘要,后续翻译会更新。

摘要:
忆阻器实现的神经形态计算系统,提供了一种训练神经网络的高速、低功耗的方法。然而,作为图像识别最重要的的模型之一——卷积神经网络(CNNs),还没有用忆阻器交叉开关阵列——一种忆阻器在交点处的交叉点阵列,实现完全硬件化。而且,由于良率低、变化大和器件的其他不理想特性,实现堪比软件CNNs的处理结果是非常有挑战性的。这里,我们报告了高良率、高性能和统一的忆阻器交叉阵列的制造方法,这些阵列是用于实现CNNs的,它们集成了8块2048个单元的忆阻器阵列来提高并行计算的能力。除此之外,我们提出了一种高效的混合训练方法来适应器件的不完美之处,并且提高系统的总体性能。我们建立了一个5层忆阻器CNN网络来实现MNIST图像识别,实现了96%以上的正确率。除了用共享输入的不同内核做并行卷积计算,忆阻器阵列中多个相同内核的复制被证明可以并行处理不同的输入。在能量效率方面,基于忆阻器的CNN神经形态系统比最先进的图像处理单元(GPU)高两个数量级,而且表现出可以拓展为更大的网络,例如残差神经网络。我们的结果有望提供一种可行的用于深度神经网络和边缘计算的硬件解决方案,这种基于忆阻器的方案将没有"冯诺依曼瓶颈"。

正文:
CNNs已经成为最重要的深度神经网路之一,在图像处理相关的任务中扮演着重要的角色,例如图像识别、图像分割和物体识别。一个典型的CNN计算过程包括大量的滑动卷积操作。在这方面,非常需要能够支持并行乘累加运算(MAC)的计算单元。这种需求已经导致了传统计算系统的重新设计以在更高的性能和更低的功耗下执行CNN,重新设计的范围从总体的应用平台,例如图像处理单元(GPUs),到特定应用的加速器。然而,在计算效率方面更进一步的改进将最终受限于这些体系的冯诺依曼架构,在这种架构中,内存和处理单元在物理上的分离导致了大量的能量消耗和单元间数据交换的巨大时间延迟。相比之下,基于忆阻器的神经形态计算提供了富有前景的无冯诺依曼计算模式,因此消除了数据传输的代价。通过直接使用欧姆定律来做乘法和基尔霍夫电流定律来做加法,一个忆阻器阵列能够实现并行存内MAC操作,造就了速度和能量效率显著提升的模拟存内计算。

基于忆阻器的神经形态计算方面的研究涵盖了大量的主题,从器件优化到系统实现。一些有关存内计算的实际应用的试验性证明也被报道了。最近的研究报道证实了对于MNIST手写数字数据库应用图像识别的二层和三层忆阻器多层感知器。然而,一个完整的、对于更加复杂的图像识别任务更加必要的CNN,还没有在一个基于全忆阻器的硬件系统中实现。原因主要存在于缺乏实现忆阻器CNN的高效解决方法:首先,生产的忆阻器CNN经常有低良率和忆阻器阵列不统一的问题。第二,很难实现和软件结果相媲美的表现(例如,图像识别正确率),原因是器件的不完美,例如工艺偏差、电导漂移和器件状态死锁。第三,由于需要在不同的输入批次之间滑动,CNN中的关键卷积操作是需要时间的,这通常是一系列过程,并且对于全连接向量-矩阵乘法(VMM)将导致忆阻器卷积器和忆阻器阵列之间的速度不匹配。

在本研究中,一个用于MNIST数字图像识别的完全5层忆阻器CNN被成功地证实。优化的材料堆栈使得2048个1T1R构成的阵列中有着可靠的和统一的模拟开关特性。通过(我们所)建议使用的混合训练策略,对于整个测试数据集的识别准确率达到了96.19%。更进一步地,将卷积核复制到三个并行的忆阻器卷机器将忆阻器CNN的延迟大约减少了1/3。我们的高集成度的神经形态系统提供了一种可行的方案来显著提升CNN的效率,方法是通过消除基于忆阻器的卷积计算和全连接VMM的吞吐量差距。

实现具有实用价值的忆阻器神经计算系统通常需要集成多个忆阻器交叉开关阵列。通常,将权重分散到不同的阵列对于并行计算是有利的,在(神经)网络的规模逐渐增加的情况下,这逐渐变得必需。然而,之前关于神经网络的验证依赖于单个阵列,主要是由于生产高度可重复阵列的挑战。忆阻器阵列的偏差和不理想特性被视为实现神经形态计算的巨大障碍。

这里我们提出一种用于神经网络的通用忆阻器计算架构。忆阻器单元使用TiN/TaO_x/HfO_x/TiN构成的材料堆栈,在增强(置位)和抑制(复位)过程中通过调节电场和热量,表现出连续的电导调控能力。材料和制造过程和传统的CMOS过程相兼容,所以忆阻器阵列可以方便地在晶圆代工厂中的后道工序中生产,来达到减少过程偏差和实现高重复率的目的。在相同的编程条件下,生产的交叉阵列表现出统一的模拟开关特性。因此,一个多忆阻器阵列硬件系统就用一块定制的PCB板和一块FPGA评估板搭建好了。正如系统原理图所展现的,这个系统主要由8个忆阻器处理单元构成。每个处理单元有其自己的集成2048个单元的忆阻器阵列。每个忆阻器连接到一个晶体管的漏极,即形成一种1T1R的配置方式。每个忆阻器阵列有着128*161T1R个单元构成的集合。其中有着128条平行的字线和128条水平的电源线,并且有着16条垂直的位线。这个阵列表现出出人意料地可重复的多级电导状态。图中展现出在32种不同的电导状态中,1024个忆阻器的分布,其中所有的曲线都是无重叠地分离着的。冲击脉宽50ns、相同的置位和复位冲击串用于闭环编程操作,来达到一个特定的电导状态。测量流程在方法部分阐述。

正如图2所展示的,一个5层CNN建立在一个忆阻器硬件系统上来识别MNIST手写数字图像。CNN中详细的数据流和相应的忆阻器映射在方法部分描述。

实现基于忆阻器的卷积操作需要执行在不同的核之间的滑动操作。忆阻器阵列在共享不同核的输入的条件下,可以很高效的实现并行MAC。图2b展示了一个典型的卷积示例在滑动过程中的示意图,图2c揭示了在1T1R忆阻器阵列中的相关操作。输入值依据它被量化的位码、通过脉冲的数量来编码。一个有符号的核权重,被映射到一对忆阻器的电导的差分。在这种方法下,一个核中的所有权重都被映射到两行电导上:一行通过正的脉冲输入来表示正的权重,另一行通过大小相等的负脉冲来表示负的权重。在将编码脉冲输入到位线之后,通过两条差分电源线上的输出电流被探测和求和。差分电流是相应于输入批量(数据)和选中核的加权和。有着不同权重的不同核被映射到不同对的差分行,并且整个忆阻器阵列在相同的输入下并行地执行MAC。所有想要的加权和结果可以同时得到。

在典型的CNN训练中,有必要根据最后的输出反向传播目标梯度,来达到更新所有权重的目的。这项任务要求相当复杂的操作,来将编码读脉冲从后向前、一层一层地应用于电源线。而且,由于器件的不理想特性,例如非线性和非对称的电导调节,训练一个复杂的深度神经网路是有挑战性的。相比于纯粹的原位训练方案,异位训练看起来像是一条利用了已有的高性能参数的捷径。然而,不可避免的硬件缺陷,例如器件缺陷和导线的寄生电阻与电容,将使得在把异地学习到的权重转移到忆阻器电导时,权重变得模糊并且使系统的性能下降。因此,异位训练在正常情况下需要提前了解硬件的情况,并且基于这种代价高昂的认识,使用软件来学习权重。

为了避免各种不理想的器件特性,我们提出一种混合训练方法来实现忆阻器卷积神经网络。在图3a中展示的整个流程表包含两个阶段。首先,一个CNN模型进行异位训练,之后所有被确定的权重通过一种闭合回路写入的方法传输到忆阻器处理单元。

完全硬件实现的忆阻器卷积神经网络相关推荐

  1. Ristretto:面向硬件的卷积神经网络逼近

    Ristretto是一个自动化的CNN近似工具,可以压缩32位浮点网络.Ristretto是Caffe的扩展,允许以有限的数字精度测试.训练和微调网络. Ristretto速览 Ristretto T ...

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

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

  3. sift论文_卷积神经网络设计相关论文

    最近梳理了一下卷积神经网络设计相关的论文(这个repo现在只列出了最重要的一些论文,后面会持续补充): Neural network architecture design​github.com 1. ...

  4. 深度概览卷积神经网络全景图,没有比这更全的了

    翻译 | 林椿眄 编辑 | Just 出品 | AI科技大本营(公众号ID:rgznai100) [AI科技大本营导读]深度卷积神经网络是这一波 AI 浪潮背后的大功臣.虽然很多人可能都已经听说过这个 ...

  5. 跨界 | 土木工程也开始AI化了:用卷积神经网络实现结构损伤视觉识别

    作者 | 长河 本文来源于微信公众号十千牛(shiqianniu) 自从AlphaGo与柯洁的一场鏖战,人工智能.机器学习.数据挖掘.深度学习.深度人工神经网络--类似的关键词充斥着各大科技类新闻媒体 ...

  6. 深度学习笔记之《解析卷积神经网络》附下载地址

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 <解析卷积神经网络>是 @魏秀参 博士撰写的深度学习实践手册,主要以卷积神 ...

  7. 如果卷积神经网络存在根本性的缺陷,你会怎么看?

    作者 | Ben Dickson 译者 | 香槟超新星 经过一段漫长时期的沉寂之后,人工智能正在进入一个蓬勃发展的新时期,这主要得益于深度学习和人工神经网络近年来取得的长足发展.更准确地说,人们对深度 ...

  8. 7大类卷积神经网络(CNN)创新综述

    点击上方"视学算法","星标"或"置顶" 关键时刻,第一时间送达 本文转载自:机器之心    参与:王淑婷.姜悦 作者:Asifullah ...

  9. 如何在NLP领域应用卷积神经网络CNN

    1.CNN使用原理 (1) 相对于图片像素,在NLP任务中,将句子和文章作为一个矩阵来输入给CNN网络,矩阵中的每一行代表一个标记token,通常是一个词语,但是,也可以是一个字符.也就是说,矩阵中的 ...

最新文章

  1. 1724: [Usaco2006 Nov]Fence Repair 切割木板( 贪心 )
  2. CSS:基本概念、选择器、伪类伪元素
  3. linux crontab日志,crontab的用法---linux定时任务
  4. Python的解析式与生成器
  5. maven 项目 missing jdk.tools.jar
  6. 北京市延庆县门户网站改版及电子政务网站群建设项目落定西部动力
  7. 微信测试是否被删软件,检测微信是否被删,这个方法超好用!
  8. 基于python的web框架——Flask 学习笔记
  9. Bluedroid 函数分析:BTA_GATTC_Open
  10. Java前端内联和外联的区别,css外联和内联、嵌入的区别是什么?
  11. NKOJ 5140 大吉大利 晚上吃鸡
  12. owncloud创建app
  13. 用妙记多 Mojidoc 实践康奈尔笔记法
  14. WatchOS开发教程之四: Watch与 iPhone的通信和数据共享
  15. 命令行批量缩小图片尺寸
  16. 非华为电脑多屏协同_苹果转华为后的真香体验1-非华为电脑体验跨屏协同,好用...
  17. python利用turtle库绘制正方形绕一个顶点旋转
  18. 【物联网+区块链=?】展锐、蚂蚁链、广和通联合发布可信上链模组
  19. Python调用WPS API
  20. Python-爬取今日头条美图

热门文章

  1. asp接收ajax乱码_Asp中处理AJAX乱码问题总结
  2. 在虚拟机上装win2003 server心得体会
  3. 形容PHP程序员的语句,形容程序员的句子
  4. python 打包exe thread报错_pyinstaller 打包exe 遇到的坑
  5. Win10(UEFI启动)安装Ubuntu18.04双系统
  6. python轮胎_如何用数据分析方法剖析途虎轮胎数据
  7. linux 输入是否为数字,【shell】Linux shell 之 判断用户输入的变量是否为数字
  8. Android系统自带样式(android:theme)
  9. vue.js分页组件(新手学习记录)
  10. notepad设置中文