摘 要: 本文针对边缘智能设备低功耗,轻算力的要求,采用了新型存算一体器件忆阻器作为基础电路元件,设计了低功耗、图像识别电路。该电路采用多个忆阻卷积层和忆阻全连接网络串联的方式,获得了较高的识别精度。为了减小忆阻卷积层计算所需的忆阻交叉阵列的行尺寸和列尺寸的不平衡,同时降低输入电压方向电路的功耗,将输入电压反相器置于忆阻交叉阵列之后。该电路可以将完成忆阻卷积网络运算所需的忆阻交叉阵列的行大小从 2M+1 减少到 M+1,同时将单个卷积核计算所需的反相器的数量降低到了 1,从而大幅度降低了忆阻卷积网络的体积和功耗。利用数学近似,将 BN 层和 dropout 层计算合并到 CNN 层中,减小网络层数同时降低电路的功耗。通过在 CIFAR10 数据集上的实验表明,该电路可以有效地对图像进行分类,同时具备推理速度快 (136ns) 和功耗低的优点 (单个神经元功耗小于 3.5uW)。
罗佳; 冉欢欢; 何凯霖; 丁晓峰, 控制与决策 发表时间:2021-08-02
关键词: 边缘计算;忆阻器;卷积;反相器;数据集;神经元
0 引 言
随着近年来人工智能的蓬勃发展,大量卷积神经网络相继被提出,而进一步依托于互联网的高速发展,由大量数字处理设备和服务器所组成的大型数据计算中心相应产生,这为各类模型的提出和运算提供了极佳的实验基础,同时数据计算中心的不断扩大,也相应促进互联网技术的相应发展,云计算正式诞生。云计算拥有大量的应用场景和需求,在商用上,类似于谷歌和亚马逊这样的互联网公司早早布局 [12],拥有了持续的用户数据接入。云计算目前拥有广阔的市场和用户,主要通过网络通信接入海量的用户数据运算后,反馈给用户。显然,整个过程极度依赖网络通信,对通信要求较高,同时由于双向通信会损失一部分的时间延时,对应高响应要求的处理事件不友好。而涉及到用户数据,对于用户的隐私保护和接入管理也同样重要,云计显得难以处理以上问题。在这样的情况下,边缘计算进入了大家的视野,将用户数据保留于边缘端,减少数据对于云计算的上传,降低通信要求,在边缘端部署部分算力,满足低功耗要求,并且对用户隐私数据进行实时保护 [3]。边缘设备的计算方式正是解决上述问题的合理设计。而在对于海量图像数据分析和处理领域,深度学习网络拥有极佳的效率和性能,这可以满足图像识别对效率和精度的要求。而图像数据的分析和处理的效率及性能极大程度取决于神经网络的构架,Iandola 等人提出了一个名为“squeezunet”的小型卷积神经网络架构 [4]。Szegedy 等人提出了一个更加深入的卷积神经网络架构,称为 Inception[5]。 Dai 等人对 Szegedy 的研究进行了改进 [6]。Zeiler 和 Fergus 提出了一种可视化卷积神经网络激活函数 [7],Google 的研究人员提出了 BlazeFace[8] 一个超高性能的人脸检测网络,通过 BlazeFace,移动平台上可以达到 1ms 以内的检测速度,拓宽了很多基于边缘计算的人脸相关联应用的发展空间。Krizhevsky 等人提出了一种深度卷积神经网络结构 AlexNet,这是深度学习的一个重大突破 [9]。AlexNet 由 5 个卷积层和 3 个全连接层组成。这种架构使用图形处理单元(GPU)进行卷积运算,ReLU 作为激活函数, ReLU 激活函数不仅在计算方面比 Sigmoid 更加简单,而且可克服 Sigmoid 函数在接近 0 和 1 时难以训练的问题。并使用 dropout 来减少过拟合问题 [10]。传统深度学习对于计算能力的需求极大,传统的冯诺依曼计算机体系结构通过运算器和控制器进行数据处理,利用提取和存储存储器内的数据,数据传输效率较低,而神经态计算计算结构,有别与传统的冯诺依曼计算机体系结构,以生物神经元系统的信息传递为参照,实现神经系统类似的神经元的计算 [11]。而作为模拟神经元的基础电路元件所需的元件信息的传递功能,系统记忆学习能力和高度灵敏性也是目前神经态计算系统面临的主要问题。随着近年来元件领域的发展,纳米级原件出现并迅速被广泛应用,比传统 CMOS 体积更小的纳米硅薄膜晶体管的出现,不仅大大降低了电路的功耗,电路的速度也得到极大的提升 [12]。忆阻器的出现为上述问题提供了理想的解决方案。忆阻器是具有动态特性的电阻器,根据激励电压其阻值可变 [13]。与传统电路元件相比,忆阻器的记忆性和灵活性使其更适应于神经态计算计算结构。并且由于忆阻器纳米级尺寸和高速的特性,非常适合边缘设备的低功耗和速度要求。因此,忆阻器可以作为神经态计算计算结构的基础电路元件进行神经网络突触功能的记忆储存功能,实现深度学习网络的结合,拥有广阔的应用空间 [14]。T.A.Bala 等人提出针对忆阻器深度学习神经网络的高效激活电路,从电路设计方向对忆阻神经网络进行优化 [15]。S.wen 和 H. Liu 和 J. Chen 等人针对忆阻器神经网络实际应用场景对网络进行裁剪和优化,通过二值化和稀疏化等方法降低网络对忆阻器性能要求,提高性能 [1618]。G. Bao 等人针对忆阻器模型与组成电路特性,对比传统网络电路,基于电压电流关系,仿真证明忆阻器网络模型性能和优越性 [19]。G.Wan 等人通过联系忆阻器再神经网络中的应用,从电路和网络上设计了一种具有改进的忆阻器遗忘模型,通过仿真证明有效性,在模拟人脑运算及记忆方面提供了可能性 [20]。通过上述工作,基于忆阻器构建的神经网络电路为边缘设备计算有着广阔的应用前景和大量的实践证明,本文从神经网络各层的运算要求出发,对整体网络构架优化电路,设计出适合各层网络的忆阻器运算电路,依托于忆阻器记忆和计算一体的特性,提高图像识别的效率,降低运算所需的功耗。
1 基本忆阻器神经电路
1.1 忆阻器模型
忆阻器的常用模型采用了其电压阈值的特性,只有当输入电压超过忆阻器的阈值电压时忆阻器的阻抗才会发生变化。输入电压 V (t),忆阻器阻抗 G(t),和当前产生电流 I(t) 有以下关系:
1.2 忆阻器交叉阵列和记忆卷积层
Vin 是外围控制电路的输入(j 是忆阻器交叉阵列的字线号数,Vin 是一个 j 维向量)。根据基尔霍夫电流定律,电路中任一个节点上在任一时刻,流入节点的电流之和等于流出节点的电流之和。
I 是一个 N 维向量,G 是一个 M ×N 的电导矩阵。对于一个 M ×N 的忆阻器交叉阵列,M ×N 维加法和乘法可同时进行,极大地提高了矩阵运算效率并且降低了功耗。而随着忆阻器交叉阵列规模的增加,计算量需求更大的矩阵和向量也可以得到满足。记忆卷积层的计算主要是向量与矩阵的点乘运算,FC 层可以看作是一种 H=1,W=1 的特殊卷积层。记忆卷积层由多个卷积核组成,输出特征映射由卷积核的卷积结果和输入数据组成。令第 k 次记忆卷积层的输入图像为 Hλk in×W λk in×Cλk in, 卷积核为 n×n,步长为 1,其中 n 为用户决定的参数。当使用相同的填充模式时,输出特征映射为 Hλk out ×W λk out ×Cλk out。 (i, j, c) 输出特征可表示为
如果 i 和 j 是不变的,那么第 c 次卷积核 Wc 和输入数据 I i,j in 是不变的,可以在忆阻器交叉阵列位线中得到一个输出特征映射的值。通过上图所示忆阻器交叉阵列,我们需要 (2×N2+1)×Cin 个忆阻器交叉阵列才能在一个卷积计算周期内得到一个 1 × 1 × Cout
1.3 忆阻卷积神经网络上的批量标准化
在深度神经网络中批量标准化层是一种典型的处理层。主要是为标准化每一层的输入。理想的数据标准化公式如下: xˆ (k) bn = x (k) bn − E[x (k) bn ] √ V ar[x (k) bn ] . (7) 数据标准化将影响下一层网络学习提取的特征。因此,BN 层还会包括数据重建功能。BN 层的输出如下: γ (k) bn = β (k) bn xˆ (k) bn + ρ (k) bn , (8) β (k) bn 和 ρ (k) bn 是本层的学习参数,在反向传播网络中, BN 层的参数包括 E\[x (k) bn ],D\[x (k) bn ]。E\[x (k) bn ] 和 D\[x (k) bn ] 是网络训练过程中所有数据的均值和方差的统计值。在后面的网络中这两个参数可以通过下述方程计算:由于式 (7) 和式 (14) 意义相同,因此可只改变忆阻器交叉阵列的系数,便可以使 BN 层和 CNN 层共用一个忆阻器交叉阵列。当一个内核为 N 的 CNN 层后连接着一个 BN 层时,具体电路如图 2(a) 所示,通过共用忆阻器减少了运算放大器的使用,这样大大降低了功耗。
1.4 池化操作
池化层将输入的特征映射分割为多个 N × N 的单元进行最大和平均值的计算,进一步简化提取特征,因此提取的特征图像尺寸变为原来的 1 N2。最大池化和平均池化是池化层的主要操作方式。最大池化通过并联的两个 nmos 二极管选择输入中的最大电压,如图 2(b) 所示,若输入数大于 2,可以通过多个下述结构组合完成。平均池化一般通过加法电路实现,如图 2(c) 所示,平均池化输出一般可以通过下述计算:因此可以用这样的加法电路可以用于忆阻神经网络池化层。
1.5 限流二极管下的 ReLU
ReLU 函数是人工神经网络中的典型激活函数 [21]。其计算简单,有效避免梯度消失和梯度爆炸的特性,在深度神经网络中得到了广泛的应用。ReLU 函数通过以下方式将线形输入非线性化。
ReLU 的实现相当于单向限制电路,只允许电压大于 1 的信号通过,因此限流二极管非常适合担当 ReLU 电路的基础元件。但由于 ReLU 层的输出可能会大于忆阻器的阈值,所以在 ReLU 后加上限制电路,实现方式如下。
F(x) = min(max(0, MT X + B), Vl). (18) 在本文实现 ReLU 层选用限流二极管的另一个原因是功耗较低,在此基础上,只需加上一个上限二极管,实现如图 2(d) 所示。当导通时电路存在压降,所以在理论计算时应该加上二极管的偏置电压。
2 忆阻卷积神经网络的图像分类
2.1 概述
忆阻卷积神经网络由 5 个卷积层和 2 个全连接层组成,其输入图像是尺寸为 32×32×3 的 RGB 色彩图像。前四个卷积层每层之间由一个最大池化层连接,第五个卷积层后经过平均池化层输出到全连接层。全连接层输出后通过递增函数 softmax(x) 层将分类网络结果 x 进行标准化映射到 01。softmax(x) 层输出值最大的通道代表输入图像的分类结果,如图 3 所示。
2.2 忆阻卷积层
根据文章 [22],卷积层的参数可以分离为一个正系数矩阵 K+ 和一个负系数矩阵 K−,当 σb > 0, xb > 0 时
对图像分类的第一层忆阻卷积层,卷积核的大小为 3×3×3,输出通道数为 32。为了实现卷积核的计算需求,则需要忆阻器交叉阵列的规模为 (3 × 3 × 3 + 1) × 32 × 2。通过 DAC 将数据转换输入进忆阻器交叉阵列,经过 BN 层和 RELU 处理后,通过 ADC 转换将数据送出,如图 4(a) 所示。
2.3 最大池化和忆阻卷积层
在第一个忆阻卷积层输出后,经过最大池化层处理后的数据输入第二个忆阻卷积层,第二次忆阻卷积的卷积核尺寸为 3×3×3,输出通道数为 64,为了实现卷积核的计算需求,则需要忆阻器交叉阵列的规模为 (3 × 3 × 32 + 1) × 64 × 2,如图 4(b) 所示。
2.4 平均池化和全连接层
在第五个忆阻卷积层输出后,经过平均池化层处理后的数据输入全连接层。将之前忆阻卷积层计算的特征映射为 3 × 3 × 256 映射为 1 × 1 × 512 的特征向量,需要平均池化电路实现,为了提高计算速度,可以通过同时铺设多个平均池化电路,降低计算周期数来减少电路搭建,在一个周期内结束运算,提高整体运算速率,如图 4(c) 所示。
3 实验分析
3.1 精准度分析
目前国内外学者根据忆阻器的电路特性,建立了大量完善的 MATLAB 的仿真模型,本文的仿真模型采用的是学者们公认的密歇根大学卢伟教授提出的基于 MATLAB 的忆阻器电路模型 [23],能够有效模拟忆阻器的电学特性。本文首先建立忆阻器的 MATLAB 电路模型,然后对神经网络中的各层进行了电路设计,完成了忆阻卷积神经网络电路的构建。通过文章 [24] 对忆阻器网络参数进行编程。输入尺寸为 32×32×3 的 RGB 图像,输出对该图像的十种分类的预测。数据上采用 CIFAR10 数据集,该数据集包含十种分类的对象,每种分类图像数量为 6000 张,总共 60000 张图像数据集。本文实验采用十个分类每个分类 5000 张,总共 50000 张图像进行训练,最后 10000 张图像进行检验测试,准确率大于 %86,如图 5 所示。
3.2 能耗分析
在忆阻卷积神经网络中有五个忆阻卷积层和两个全连接层。从忆阻卷积神经网络的图像分类中可以得出卷积层的等效电导率分布,如图 6(a) 所示,并由等效电导率可以计算出忆阻卷积神经网络的功耗。功耗主要由两部分组成,一是来源于写入电导率,二是预测过程产生功耗,上述两个过程组成了忆阻卷积神经网络工作的主要流程。基于忆阻卷积神经网络的图像分类功耗可以通过下述公式得到:
上式中,U 是通过单个忆阻器的电压,G 为忆阻器的等效电导率,W 是忆阻器消耗的功率,由于忆阻器的 1 Gon 和 1 Goff 分别为 1KΩ 和 1MΩ,所以忆阻器的等效电压电导率分别为 10−3 和 10−6。为了匹配网络的权重,网络权重和忆阻器电导率关系如下:
令 β=0.6,写入电压为 G(t)=6.5V,则可得出每个忆阻卷积层的功耗,如图 6(b) 在导通阶段,忆阻卷积平均功耗为 3.5μW。在网络中的预测过程,功耗随着输入数据变化而变化,可以采用写入电压最大时的最大功耗表示,如图 6(c) 所示。显然,由以上两个过程组成的忆阻卷积神经网络的主要功耗,远远小于 CMOS 电路下同样计算过程的功耗 [25]。表一展示了忆阻卷积神经网络所需要的忆阻器资源量,由于忆阻器的尺寸一般为方形,为了尽可能发挥忆阻器的优势并且合理利用资源,通常使忆阻器的行和列数目尽可能接近。表中可看出需要资源量最大的过程为第四个 MCCN 层,所以这里设计忆阻器交叉阵列规模为 2305×2305,电路便可以满足网络要求。忆阻器的响应时间在 100ps 以下,如果按照每个计算周期 100ps 计算,则本文设计的忆阻神经网络电路所需的推理时间为:136.5ns。与文献 [26] 相比,本文用多个最大池化电路在一个时钟周期内完成计算,将最大池化层的计算周期从 512 个时钟周期降到了 1 个时钟周期。因此本文设计的电路的推理时间更少,电路速度更快。在忆阻器的功耗方面,本文的设计的电路的单个忆阻器的功耗略高于文献 [26] 的数据,但本文设计的电路只需要 5 个忆阻阵列,而文献 [26] 需要 17 个忆阻阵列,在忆阻阵列的数量方面远小于对比文章的结果。忆阻阵列的数量直接决定了忆阻神经网络电路的总功耗和面积。忆阻阵列的数量越多,忆阻神经网络电路的体积越大,总功耗越高。因此本文设计的电路在推理
4 结论
本文基于新型计算存储材料,忆阻器构建了忆阻神经网络电路用于图像识别,并成功对 CIFAR10 图像进行了分类验证。通过实验,忆阻卷积神经网络能比传统计算构架以更高的实时性和更低的功耗进行图像分类,通过对各层网络电路的设计和优化,使计算构架更适合于当前的神经网络和所针对的目标分类。通过优化,将卷积网络运算所需的忆阻交叉阵列的行大小从 2M+1 减少到 M+1,通过对忆阻器交叉阵列系数的更改,在 BN 层和 CNN 层共用一个忆阻器交叉阵列,对运算放大器的替代,同时在ReLU 实现电路上通过二极管的限流,大大降低了功耗。实际电路的特征与目前 MATLAB 的仿真模型存在一定的差异,我们将在后续的实验中进一步对仿真模型进行优化。同时我们也将开展忆阻神经网络电路的设计与验证工作,来证明本文的仿真电路的有效性。