一种基于存储器的卷积神经网络系统的制作方法

文档序号:15934210发布日期:2018-11-14 02:07阅读:214来源:国知局

本发明涉及人工神经网络技术领域,更具体地,涉及一种基于存储器的卷积神经网络系统。

背景技术

卷积神经网络(convolutionalneuralnetwork,cnn)的网络结构是fukushima第一个在1980年提出的。但是由于训练算法难以实现,所以还没有得到广泛的应用。在20世纪90年代,lecun等人将一种基于梯度的学习算法应用于cnn,并取得了很好的结果。之后,研究人员进一步完善了cnn,并在图像识别领域取得了强有力的成果。最近,ciresan等人提出了多层cnn来识别数字,字母,汉字和交通标志。cnn也被设计为模仿人类的视觉处理,并且在处理二维图像时有高度优化的结构来。此外,cnn可以有效地学习2d特征的提取和抽象。除了深度神经网络的共同优点之外,cnn还具有其他所需的特性。卷积神经网络是一种特殊的深层的神经网络模型,它的特殊性体现在两个方面,一方面它的神经元间的连接是非全连接的,另一方面同一层中某些神经元之间的连接的权重是共享的(即相同的)。它的非全连接和权值共享的网络结构使之更类似于生物神经网络,降低了网络模型的复杂度(对于很难学习的深层结构来说,这是非常重要的),减少了权值的数量。

然而,大多数软件卷积神经网络算法是由传统冯诺依曼体系结构下的cpu和gpu实现的。由于深卷积神经网络总是需要大量的训练数据,并利用重量参数达到108级,从存储器获取数据并将其发送给cpu和gpu进行计算以及将结果发送回存储将变得相当耗时,不能满足数据实时处理的需求,并且还可能导致巨大的硬件成本。随着人工智能的高速兴起,我们需要寻找高效的卷积神经网络的硬件实现方案,超越冯诺依曼体系结构的大脑启发式计算架构,实现存储和计算的集成,从而支持更高速度和更低硬件成本的软件算法。



技术实现要素:

针对现有技术的缺陷,本发明的目的在于解决现有深卷积神经网络总是需要大量的训练数据,并利用重量参数达到108级,从存储器获取数据并将其发送给cpu和gpu进行计算以及将结果发送回存储将变得相当耗时,不能满足数据实时处理的需求,并且还可能导致巨大的硬件成本的技术问题。

为实现上述目的,本发明提供一种基于存储器的卷积神经网络系统,包括:输入模块、由norflash阵列作为卷积核构成的卷积层电路模块、基于norflash阵列的池化电路模块、激活函数模块、由norflash阵列作为突触构成的全连接层电路模块、softmax函数模块以及输出模块,卷积核值或突触权重值储存在norflash单元中;

输入模块将输入信号转换成卷积神经网络所需的电压信号,并将结果传入卷积层电路模块;卷积层电路模块将所述输入信号对应的电压信号和存储在norflash单元中的卷积核值进行卷积运算并将结果传入所述激活函数模块;激活函数模块将信号进行激活并将结果传入所述池化层电路模块;池化层电路将激活后的信号和存储在norflash单元中的卷积核值进行池化操作,并将结果传入全连接层电路模块;所述全连接层电路模块将池化操作后的信号与存储在norflash单元中的突触权重值进行乘法运算实现分类作用,并将分类结果传入所述softmax函数模块;所述softmax函数模块将全连接层电路模块的输出结果归一化为概率值,并将结果传入所述输出模块,作为整个网络的输出。

可以理解的是,本发明中使用的存储器为norflash,本领域技术人员还可根据实际需要选择其他类型的存储器,本发明对此不做唯一性限定,以下不再做特别说明。

可选地,该系统还包括:权重处理模块;所述权重处理模块用于连接卷积层电路模块、池化层电路模块以及全连接层电路模块;所述权重处理模块包括:转换模块和驱动模块;转换模块将卷积核值或突触权重值进行相应的矩阵转换映射,并将卷积核矩阵或权重值矩阵转换为norflash的阈值特性,如果卷积核矩阵元素或权重值矩阵为1或-1时,norflash阈值电压被调整为低阈值,阈值调整信号设为1;如果卷积核矩阵元素或权重值矩阵为0时,norflash阈值电压被调整为高阈值,阈值调整信号设为0,并将阈值调整信号发送给驱动模块;驱动模块接收转换模块发送的阈值调整信号,并根据该信号向卷积层电路模块、池化层电路模块以及全连接层电路模块发送脉冲,调整norflash的阈值,即将卷积核矩阵元素或突触权重值存储到norflash中。

可选地,卷积核值和突触权重值通过离线学习方式获得,在离线学习算法中,会有一个训练集和测试集,这个训练集包含多个训练实例,每个训练实例以一个概率分布从实例空间中独立同分布地抽取,目标是根据这个训练集构造一个分类器,模型训练好后,再将模型用于测试集来评估模型的好坏。

可选地,输入模块将外界输入信号转换成所述卷积神经网络所需的电压信号,输入信号与电压信号遵循正比例关系,输入信号值越大,所对应电压信号就越大,反之,所对应电压信号就越小。

可选地,卷积层电路模块将信号与存储在norflash单元中的卷积核值进行卷积运算,为了表示正负卷积核值,电路用两列norflash阵列作为一个卷积核,卷积核转换为两个矩阵k+和k-,相应地输入信号x转换为一维矩阵,k+阵列输出端连接到卷积层电路模块包括的运算放大器的正向输入端,k-阵列输出端连接到运算放大器的负向输入端,则输出结果为y=[(k+)-(k-)]*x,有效的卷积核值为(k+)-(k-),即可实现正值和负值的卷积核值,为了将输入信号能一步进行卷积操作而不需要中间复杂的存储层,将软件中确定的卷积核的数值存储在norflash单元时,卷积核值被映射成可以与整个输入信号进行矩阵乘法运算的矩阵,卷积核被扩展为大型稀疏矩阵,同一行的norflash栅端连接在一起连接输入模块接口,在norflash源端连接一个驱动电压,同一列norflash单元漏极连接在一起,收集阵列漏端的电流即得到卷积运算的结果,同一列上的电流汇集在一起实现加法计算,漏端连接到运算放大器后将运算放大器所得结果传递到激活函数模块。

可选地,池化层电路模块主要分为平均池化操作和最大池化操作,电路结构是卷积层电路结构,两种操作对应的卷积核值不同,同一行的norflash栅端连接在一起并连接激活函数模块,在norflash源端连接一个驱动电压,同一列norflash单元漏极连接在一起并分别连接到池化层电路模块包括的运算放大器的输入端,收集运算放大器的输出结果即得到池化操作的结果,同一列上的电流汇集在一起实现加法计算,然后将运算放大器所得结果传递到全连接层电路模块。

可选地,激活函数模块所包括的激活函数主要有:sigmoid函数、双曲正切函数和修正线性单函数;所述激活函数模块分别连接卷积层电路模块和池化层电路模块,将卷积运算结果进行激活并得到输出值y,同时将输出值转换成电压信号以便作为池化层的输入。

可选地,全连接层电路模块分别连接池化层模块和softmax函数模块,全连接层将最后的输出映射到线性可分的空间,即实现分类的功能,全连接层电路模块其与卷积层电路模块的权重的分布的不同,所述全连接层电路模块完成在感知器网络中简单的一系列乘法加法运算,用于存储与计算权重矩阵,卷积运算电路用于存储与计算一组卷积核数组;为了实现正负权重值,全连接层电路模块使用两个norflash单元作为一个突触,norflash单元栅极连接池化层输出模块,源极连接驱动电压,存储正权重值的norflash单元漏端连接运算放大器正向输入端,反之,连接负向输入端,运算放大器输出端连接softmax函数模块,运算放大器输出结果即为全连接层操作结果,输出结果y=[w1-w2]*x,w1和w2为norflash单元存储的两个权重值,则突触的有效权重值为w1-w2,即可实现正负突触权重值,池化操作后的信号经过全连接层处理后再经过softmax函数模块,将全连接层输出的值归一化为概率值,然后将结果传入输出模块即得到整个网络的输出。

可选地,softmax函数模块实现即将输出结果归一化为概率值的功能,公式中xi表示输入信号x中的第i个元素,为所有输入信号元素的指数和,y为输入信号xi对应的概率输出值。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

本发明提供的基于存储器的卷积神经网络系统,权重处理模块将软件模拟所得卷积核和突触权重值修改成norflash工作方式,将卷积核和突触权重值存储到norflash中。输入模块接收外部信息,该信息经过卷积运算,池化操作,激活函数,全连接层以及激活函数逐层计算后,最终输出模块产生输出结果。norflash阵列构成的卷积层电路模块中,为了表示正负卷积核值,将两列norflash阵列用作一个卷积核。全连接电路模块中,为了表示正负突触权重值,用两个norflash单元作为一个突触。利用norflash的多阶阈值调控功能来模拟卷积神经网络中卷积核和突触权重值的连续调节。传统的冯诺依曼体系结构的大脑启发式计算架构耗时,不能满足数据实时处理的需求,并且还会导致巨大的硬件成本。与上述现有技术的缺陷对比,本发明将卷积神经网络实现硬件化可以实现存储和计算的集成,可以很好地解决上述缺点。

附图说明

图1为本发明实施例提供的基于存储器的卷积神经网络系统结构示意图;

图2为本发明实施例提供的卷积运算原理示意图;

图3为本发明实施例提供的由两个norflash单元组成一个突触的结构示意图;

图4为本发明实施例提供的权重处理模块结构示意图;

图5为本发明实施例提供的输入模块结构示意图;

图6为本发明实施例提供的基于norflash的卷积运算层电路模块结构示意图;

图7为本发明实施例提供的卷积核矩阵和输入矩阵的映射公式示意图;图7(a)为卷积核矩阵k转换成矩阵k+和k-示意图,图7(b)为输入矩阵x转换为一维矩阵示意图;

图8为本发明实施例提供的激活函数模块结构示意图;

图9为本发明实施例提供的池化层电路模块结构示意图;

图10为本发明实施例提供的全连接层电路模块结构示意图;

图11是本发明实施例提供的softmax函数模块结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

本发明的目的在于提供一种基于存储器的卷积神经网络系统。图1是本发明实施例提供的基于存储器的卷积神经网络系统结构示意图。如图1所示,该系统包括:权重处理模块、输入模块、由norflash阵列作为卷积核构成的卷积层电路模块、基于norflash阵列的池化层电路模块、激活函数模块、由norflash阵列作为突触构成的全连接电路模块、softmax函数模块以及输出模块。

权重处理模块将软件所得卷积核数值或全连接层权重值转换成对应的norflash阈值,并存储在卷积层电路模块、池化层电路模块以及全连接层电路模块。

输入模块将外界输入信息转换成所述卷积神经网络所需的电压信号,输入信号与电压信号遵循正比映射关系,输入信号值越大,所对应电压就越大,反之,所对应电压就越小,并将电压信号传入卷积层电路模块。

卷积层电路模块将输入信号和存储在norflash单元中的卷积核值进行卷积运算并将结果传入所述激活函数模块。

激活函数模块将信号进行激活并将结果传入池化层电路模块。池化层电路将激活后的信号和存储在norflash单元中的值进行池化操作,并将结果传入所述全连接层电路模块。

全连接层电路模块将前面整合后的信号与存储在norflash单元中的权重值进行乘法运算实现分类作用,并将结果传入softmax函数模块将输出结果归一化为概率值,然后将概率值传入所述输出模块,得到整个网络的输出结果。

需要说明的是,卷积运算作为一种广义的积分概念,在图像处理和数字信号处理等方面有很重要的应用,卷积核(算子)是用来做图像处理时的矩阵,图像处理时也称为掩膜,是与原图像做运算的参数。卷积核通常是一个四方形的网格结构,该区域上每个方格都有一个权重值。使用卷积进行计算时,先将卷积核进行180°反转,将卷积核的中心放置在要计算的像素上,一次计算核中每个元素和其覆盖的图像像素值的乘积并求和,得到的结构就是该位置的新像素值。沿行方向右移一位继续计算重叠部分的乘积和得到下一个像素值,直到行方向全部重叠过,然后卷积核沿列方向移一位并回到行方向起始点,计算重叠部分乘积和,直到输入矩阵被卷积核全部重叠过。对于一个规模为m×m的输入矩阵经过一个n×n的卷积核后,得到的输出矩阵大小为(m-n+1)×(m-n+1)。图2演示了一个大小为4×4的输入矩阵经过一个2×2的卷积核后得到3×3的输出矩阵的卷积计算过程。

图3是本发明实施例提供的由两个norflash单元组成一个突触的示意图。norflash单元通过编程或擦出操作来改变其阈值电压,从而来存储不同的逻辑值。卷积神经网络运算中存在大量的乘法操作,在norflash中的乘法运算,乘数可以通过编程或擦出存储到单元中,被乘数加载在栅极,两者共同决定了norflash的开启状态。在源端施加一个驱动电压,根据不同的开启状态可以得到不同的电流值,在每列norflash收集漏端电流即得到乘法运算的结果。使用两个norflash单元作为一个突触,可以实现正负权重值,两个norflash单元的栅极连接在一起并连接输入信号对应的电压信号x,源极一起连接到驱动电压,两个漏极端分别连接运算放大器输入端,两个norflash单元分别存储的权重值为w+和w-,则运算放大器输出端的有效输出为y=[(w+)-(w-)]*x,突触的有效权重值则为[(w+)-(w-)],即可实现正负权重值,其中x为输入信号对应的电压信号。

图4是本发明提供的权重处理模块结构示意图,其连接卷积层电路模块,池化层电路模块和全连接层电路模块。包括:转换模块和驱动模块。转换模块将卷积核值和突触权重值进行相应的矩阵转换映射,并将卷积核矩阵和权重值矩阵转换为norflash的阈值特性,如果卷积核矩阵元素和权重值矩阵为1或-1时,norflash阈值电压被调整为低阈值;如果卷积核矩阵元素和权重值矩阵为0,norflash阈值电压被调整为高阈值,并将结果发送给驱动模块。驱动模块接收转换模块发送的阈值调整信号,并根据该信号向卷积层电路模块,池化层电路模块和全连接层电路模块发送脉冲,调整norflash的阈值,即将卷积核矩阵元素或突触权重值存储到norflash中。卷积核值和突触权重值由离线训练方式获得。

图5是本发明实施例中提供的输入模块结构示意图,其连接卷积层电路模块,输入模块将外界输入信息通过转换电路模块转换成所述卷积神经网络所需的电压信号,输入信号与电压信号遵循正比映射关系,输入信号值越大,所对应电压信号就越大,反之,所对应电压信号就越小,并将电压信号传入卷积层电路模块。

图6是本发明实施例中提供的基于norflash的卷积层电路模块结构示意图,用黑色圆点代表本发明实施例提供的norflash单元。本发明实施例输入信号采用mnist手写字体数据库为例,该数据集包含

60,000个训练集和10,000个测试集共70,000张手写数字的灰度图片,其中每一张图片包含28×28个像素点。图中示出了输入矩阵为28×28,卷积核大小为9×9,输出矩阵大小为20×20的卷积运算电路。为了表示正负卷积核值,该电路用两列norflash单元阵列来表示,卷积核转换为两个矩阵k+和k-,输入信号x转换为一维矩阵,存储k+的阵列漏极连接到运算放大器正向输入端,存储k-的阵列漏极连接到运算放大器负向向输入端,则运算放大器输出结果为y=[(k+)-(k-)]*x,即可实现正值和负值的卷积核。在神经网络中我们还需加入偏置的作用,所以我们需要的norflash阵列结构为1569行,400列。同一行的norflash栅端连接在一起连接输入模块接口,在norflash源端连接一个驱动电压,同一列norflash单元漏极连接在一起并连接到运算放大器,收集阵列漏端的电流即得到卷积运算的结果,同一列上的电流汇集在一起实现加法计算,并将运算放大器所得结果传递到激活函数模块。为了将输入信号能一步进行卷积操作而不需要中间复杂的存储层,将软件中确定的卷积核的数值存储在norflash单元时,它们必须被设置成使得可以从矩阵乘法运算中确定整个特征映射。为此,卷积核被扩展为大型稀疏矩阵。以下我们以2×2卷积核矩阵k和3×3的输入信号矩阵x为实施例来演示。

图7(a)显示了使用所提出的方法基于norflash的卷积核矩阵k如何转换成矩阵k+和k-。卷积核被转换为两个矩阵,因此norflash阵列可以很容易地解释具有正值和负值的卷积核。由于输入信号矩阵x有9个元素,每个核心矩阵k+和k-必须有9行。

图7(b)显示了输入矩阵x如何转换为一维矩阵,分别乘以k+和k-。由于k的尺寸为2×2,x的尺寸为3×3,所以输出特征的尺寸为2×2。因此,卷积核矩阵必须有8列,每两列输出值分别连接到运算放大器输入端,在运算放大器输出端即得到四个输出值。图7显示的转换方法在权重处理模块中实现。

图8是本发明中的激活函数模块结构示意图,其中激活函数f主要有:s型函数(sigmoid函数)、双曲正切(tanh)函数和修正线性单(relu)函数。激活函数模块分别连接卷积层电路模块和池化层电路模块,将卷积运算结果进行激活并得到输出值y,同时将输出值转换成电压信号以便作为池化层的输入。

图9是本发明实施例中提供的池化层电路模块结构示意图,主要分为平均池化操作和最大池化操作。整个图片被不重叠的分割成若干个同样大小的小块。每个小块内只取最大的数字(或平均值),再舍弃其他节点后,保持原有的平面结构得输出。池化层电路模块分别连接激活函数模块和全连接层电路模块,池化操作是一个更简单的卷积操作,则电路结构也是卷积层电路结构,只是卷积核值发生改变,同一行的norflash栅端连接在一起连接输入模块接口,在norflash源端连接一个驱动电压,同一列norflash单元漏极连接在一起并分别连接运算放大器输入端,收集运算放大器输出端的结果即得到池化操作的结果,同一列上的电流汇集在一起实现加法计算,并将运算放大器输出端连接到全连接层电路模块。池化操作可以非常有效地缩小矩阵尺寸,从而减少最后全连接层中的参数,同时,使用池化层既可以加快计算速度也有防止过拟合问题的作用。本实施例中使用2×2矩阵大小的池化操作,由于卷积运算层的输出矩阵为20×20,则输出矩阵为10×10,所以池化层电路模块norflash阵列大小为801×100。如果使用平均池化操作,则池化层卷积核的值为经过权重处理模块后将值存储在norflash阵列中。池化操作处理后将结果传入全连接层电路模块。

图10是本发明实施例中提供的全连接层电路模块结构示意图,分别连接池化层电路模块和softmax函数模块,全连接层(也叫前馈层)将最后的输出映射到线性可分的空间,即实现分类的功能。全连接层电路模块与卷积运算电路非常相似,只是权重的分布的不同,它完成了在感知器网络中简单的一系列乘法加法运算。该电路用于存储权重矩阵,卷积运算电路用于存储一组卷积核数组。将软件所得全连接层权重值经过权重处理模块转换成对应的norflash单元的阈值,将其存储在norflash中。为了实现正负权重值,全连接层电路模块使用两个norflash单元来作为一个突触,分别存储正负权重值。同样,输入信号转换一维矩阵,norflash单元栅极连接池化层输出,源极连接驱动电压,存储正权重值的norflash单元漏端连接运算放大器正向输入端,反之,连接负向输入端,运算放大器输出端连接激活函数模块,运算放大器输出结果即为全连接层操作结果。输出结果y=[w1-w2]*x。其中,w1和w2为norflash单元存储的两个有效权重值,则突触的有效权重值为w1-w2,即可实现正负突触权重值。池化层输入矩阵大小为10×10,如果最后的分类类别有10类,则本实施例中全连接层电路norflash阵列大小为101×10。信号经过全连接层处理后再经过softmax函数模块,然后将结果传入输出模块即得到整个网络的输出。

图11是本发明中的softmax函数模块结构示意图,分别连接全连接层电路模块和输出模块,softmax函数模块实现即将输出结果归一化为概率值的功能,公式中xi表示输入信号x中的第i个元素,为所有输入信号元素指数和,y为输入信号xi对应的概率输出值。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1