首页> 中国专利> 一种二值卷积装置及相应的二值卷积神经网络处理器

一种二值卷积装置及相应的二值卷积神经网络处理器

摘要

本发明提供一种二值卷积装置及相应的二值卷积神经网络处理器,所述二值卷积装置包括:XNOR门,其以所采用的卷积核中的元素与待卷积数据中的相应元素作为其输入,其中所述卷积核中的元素与所述待卷积数据中的相应元素均为二值形式;累加装置,其将所述XNOR门的输出作为其输入,用于对所述XNOR门的输出进行累加,以输出二值卷积的结果。根据本发明的技术方案,可以在运算过程中减少进行计算的数据的位宽,达到提高运算效率、降低存储容量及能耗的效果。

著录项

  • 公开/公告号CN107203808A

    专利类型发明专利

  • 公开/公告日2017-09-26

    原文格式PDF

  • 申请/专利权人 中国科学院计算技术研究所;

    申请/专利号CN201710323924.9

  • 发明设计人 韩银和;许浩博;王颖;

    申请日2017-05-08

  • 分类号G06N3/063(20060101);

  • 代理机构11280 北京泛华伟业知识产权代理有限公司;

  • 代理人王勇

  • 地址 100190 北京市海淀区中关村科学院南路6号

  • 入库时间 2023-06-19 03:24:39

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-01

    授权

    授权

  • 2017-10-27

    实质审查的生效 IPC(主分类):G06N3/063 申请日:20170508

    实质审查的生效

  • 2017-09-26

    公开

    公开

说明书

技术领域

本发明涉及计算机处理器,尤其涉及用于神经网络模型计算的处理器。

背景技术

随着人工智能技术的发展,涉及深度神经网络、尤其是卷积神经网络的技术在近几年得到了飞速的发展,在图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐和智能机器人等领域均取得了广泛的应用。

所述深度神经网络可以被理解为一种运算模型,其中包含大量数据节点,每个数据节点与其他数据节点相连,各个节点间的连接关系用权重表示。随着深度神经网络的不断发展,其复杂程度也在不断地提高。

为了权衡复杂度和运算效果之间的矛盾,在参考文献:Courbariaux M,Hubara I,Soudry D,et al.Binarized neural networks:Training deep neural networks with weights and activations constrained to+1or-1[J].arXiv preprint arXiv:1602.02830,2016.中提出了可以采用“二值卷积神经网络模型”来降低传统神经网络的复杂度。在所述二值卷积神经网络中,卷积神经网络中的权重、输入数据、输出数据均采用“二值形式”,即通过“1”和“-1”近似地表示其大小,例如以“1”来表示大于等于0的数值,并用“-1”来表示小于0的数值。通过上述方式,降低了神经网络中用于操作的数据位宽,由此极大程度地降低了所需的参数容量,致使二值卷积神经网络尤其适用于在物端实现图像识别、增强现实和虚拟现实。

在现有技术中通常采用通用的计算机处理器来运行深度神经网络,例如中央处理器(CPU)和图形处理器(GPU)等。然而,并不存在针对二值卷积神经网络的专用处理器。通用的计算机处理器计算单元位宽通常为多比特,计算二值神经网络会产生资源浪费。

发明内容

因此,本发明的目的在于克服上述现有技术的缺陷,提供一种二值卷积装置,包括:

XNOR门,其以所采用的卷积核中的元素与待卷积数据中的相应元素作为其输入,其中所述卷积核中的元素与所述待卷积数据中的相应元素均为二值形式;

累加装置,其将所述XNOR门的输出作为其输入,用于对所述XNOR门的输出进行累加,以输出二值卷积的结果。

优选地,根据所述二值卷积装置,其中所述累加装置包括OR门,所述OR门的至少一个输入为所述XNOR门的输出。

优选地,根据所述二值卷积装置,其中所述累加装置包括汉明重量计算单元,所述汉明重量计算单元的至少一个输入为所述XNOR门的输出。

优选地,根据所述二值卷积装置,其中多个所述XNOR门的输出端连接至所述累加装置的输入端。

优选地,根据所述二值卷积装置,其中所述累加装置还包括寄存器,所述寄存器用于存储所述OR门或所述汉明重量计算单元的输出并将该输出反馈至所述OR门或所述汉明重量计算单元的至少一个输入。

优选地,根据所述二值卷积装置,其中所述累加装置还包括寄存器,所述寄存器用于存储所述XNOR门的输出并将所存储的内容作为所述所述OR门或所述汉明重量计算单元的输入。

并且,本发明还提供了一种二值卷积神经网络处理器,其包括:

上述任意一项所述的二值卷积装置。

优选地,根据所述二值卷积神经网络处理器,还包括:

池化装置,用于对卷积所获得的结果进行池化处理;以及

归一化装置,用于对经过池化的结果进行归一化操作。

本发明还提供了一种针对卷积神经网络中的一层进行计算的方法,包括:

1)对所采用的卷积核中的每个元素与所述层中的相应元素执行XNOR运算,其中所述卷积核中的元素与所述图层中的相应元素均为二值形式;

2)对执行XNOR运算所获得的结果进行OR运算或汉明重量计算。

本发明还提供了一种针对卷积神经网络进行计算的系统,包括:

存储装置;

上述二值卷积神经网络处理器;

其中,所述存储装置用于存储计算机程序,所述计算机程序在被所述处理器执行时用于实现上述的方法。

与现有技术相比,本发明的优点在于:

提供了经过简化的用于执行卷积运算的硬件结构、以及基于该结构的二值卷积神经网络处理器及相应的计算方法,通过在运算过程中减少进行计算的数据的位宽,达到提高运算效率、降低存储容量及能耗的效果。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1是神经网络的多层结构的示意图;

图2是在二维空间中进行卷积计算的示意图;

图3是根据本发明的一个实施例的二值卷积装置的硬件结构示意图;

图4是根据本发明又一个实施例的二值卷积装置的硬件结构示意图;

图5是根据本发明又一个实施例的二值卷积装置的硬件结构示意图;

图6a~6c示出了本发明采用汉明重量计算元件的二值卷积装置的硬件结构示意图;

图7是根据本发明的一个实施例的二值卷积神经网络处理器的结构的示意图;

图8示出了采用根据本发明的二值卷积神经网络处理器对二值卷积神经网络中的一层进行计算的示意图。

具体实施方式

下面结合附图和具体实施方式对本发明作详细说明。

计算机学科中所使得神经网络是一种仿照生物学上神经突触联接结构的数学模型,利用由神经网络所组成的应用系统可以实现诸如机器学习、模式识别等诸多功能。

所述神经网络在结构上分为多层,图1示出了一种神经网络多层结构的示意图。参考图1,所述多层结构中的第一层为输入层,最后一层为输出层,其余各层为隐藏层。在使用所述神经网络时,向输入层输入原始图像,即输入层图层,(在本发明中的所述“图像”、“图层”指的是待处理的原始数据,不仅仅是狭义的通过拍摄照片获得的图像),由神经网络中的每一层对所输入的图层进行加工处理并将结果输入到神经网络的下一层中,并最终将输出层的输出作为所输出的结果。

如前文中所述地,为了应对神经网络日益复杂的结构,现有技术提出了一种二值卷积神经网络的概念。顾名思义,二值卷积神经网络的运算包括对所输入的数据进行“卷积”操作,并且其还包括诸如“池化”、“归一化”、“二值化”等操作。

作为二值卷积神经网络中重要的一项操作,“卷积”指的是待操作的数据与卷积核经过翻转和平移后所重叠部分的面积。下面将通过图2详细介绍“卷积”的计算过程。

图2示出了在二维空间中利用大小为3乘3的“二值”的卷积核对大小为5乘5的“二值”的图像进行卷积的计算过程。参考图2,首先针对图像从上至下的第1-3行、从左至右的第1-3列范围内的各个元素,分别采用在卷积核中对应的元素与每个所述元素相乘:例如,采用卷积核中第1行第1列的元素(表示为“卷积核(1,1)”)乘以图像中第1行第1列的元素(表示为“图像(1,1)”)得到1×1=1,采用卷积核中第1行第2列的卷积核(1,2)乘以图像中第1行第2列的元素图像(1,2)得到1×0=0,类似地计算卷积核(1,3)乘以图像(1,3)得到1×1=1,依次类推计算得出9个结果并将这9个结果相加得到1+0+1+0+1+0+0+0+1=4以作为卷积结果中第1行第1列的元素,卷积结果(1,1)。类似地,计算卷积核(1,1)乘以图像(1,2)、卷积核(1,2)乘以图像(1,3)、卷积核(1,3)乘以图像(1,4)、卷积核(2,1)乘以图像(2,2)…,依次类推计算出1+0+0+1+0+0+0+1=3以作为卷积结果(1,2)。采用上述方式可以计算出如图2所示出的大小为3乘3的卷积结果矩阵。

所获得到的如图2所示出的卷积结果通过缓冲和二值化处理被输入到下一层的二值卷积神经网络中。

上述示例示出了卷积的计算过程所包括的“乘”、以及“加”或“累加求和”的运算。

发明人意识到基于二值的乘法运算所特有的特性,使得二值卷积运算中的“乘”可被“异或非”运算所代替,即仅利用一个逻辑元件XNOR门便可完成在现有技术中必须采用乘法器才可完成的“乘”的运算。可以看出,基于二值的卷积过程相较于传统的卷积更为简单,其无需进行诸如“2×4”这样复杂的乘法运算,在进行“乘”的运算时,若进行乘法运算的元素中有任意一个为“0”则所获得的结果便为“0”,若进行乘法运算的全部元素均为“1”则所获得的结果便为“1”。

下面将通过一个具体的示例来详细说明在本发明中可以利用XNOR门元件来代替乘法器的原理。

在实际使用二值化的卷积时,首先会对图像和卷积核中的非二值数值z进行二值化处理,即:

其中,将大于等于0的数值z二值化为“1”以代表图2中用于卷积运算的符号“1”,将小于0的数值z二值化为“-1”以代表图2中用于卷积运算的符号“0”。

对经过二值化处理的图像和卷积核的值进行“异或非”运算,即存在以下几种情况:

输入A输入B输出F符号-1-111-11-101-1-101111

通过上述真值表可以看出,在针对二值化的数值进行“乘”的运算时,可以采用用于执行“异或非”运算的逻辑元件XNOR门来代替乘法器。而如本领域公知地,乘法器的复杂度远高于一个逻辑元件XNOR门。

因此,发明人认为通过采用逻辑元件XNOR门来代替传统处理器中的乘法器,可以大幅地降低二值卷积神经网络的处理器所使用器件的复杂度。

此外,发明人还意识到基于二值的加法运算所特有的特性,使得上述二值卷积运算中的“加”可被“或”运算所代替,即可以利用逻辑元件OR门便来代替在现有技术中所采用的加法器。这是由于,对上述XNOR门的输出进行的“或”运算的结果可被表达为G=F1+F2...+Fn,并最终输出单比特的结果G,其中Fk表示第k个XNOR门的输出,n表示其输出被用作为OR门的输入的XNOR门总数。

基于发明人的上述分析,本发明提供了一种可被用于二值卷积神经网络处理器的二值卷积装置,其利用基于二值的乘法运算、加法运算的特性,简化了处理器中用于执行卷积运算的硬件的构成,由此提高卷积运算的速度、降低处理器的总体能耗。

图3示出了根据本发明的一个实施例的二值卷积装置的硬件结构。如图3所示,该二值卷积装置包括9个XNOR门以及1个OR门,全部9个XNOR门的输出被用作所述OR门的输入。在进行卷积运算时,由每个XNOR门分别计算n1×w1、n2×w2…n9×w9,以获得输出F1~F9;OR门将F1~F9作为其输入,输出卷积结果中的第一个元素G1。类似地,采用同一个卷积核,针对图像中的其他区域进行计算,可以获得卷积结果中的其他元素的大小,此处不再复述。

在图3所示出的实施例中,并行地利用多个XNOR门进行乘的计算,提高了卷积计算的速率。然而应当理解,在本发明中还可以对所述二值卷积装置的硬件结构进行变形,下面将通过其他几个实施例进行举例说明。

图4示出了根据本发明的又一个实施例的二值卷积装置的硬件结构。如图4所示,该二值卷积装置包括1个XNOR门、1个OR门、以及一个寄存器,所述寄存器用于存储OR门的输出并且其所存储的值被用作所述OR门的其中一个输入,并且所述OR门的另一个输入为所述XNOR门的输出。在进行卷积运算时,依照时刻的推进,分别在第一至第九个时刻将n1和w1、n2和w2、…n9和w9作为XNOR门的输入,相应地对应于每个时刻从XNOR门输出F1、F2…F9以作为OR门的其中一个输入,并且将寄存器中所存储的在前一时刻从OR门中输出的结果作为OR门的另一个输入。例如,当XNOR门输出F1(其大小等于n1×w1)时,从寄存器中读取出预存的符号“0”将其与F1一并作为OR门的输入,并从OR门输出F1;当XNOR门输出F2(其大小等于n2×w2)时,从寄存器中读取出F1将其与F2一并作为OR门的输入,并从OR门输出F1+F2,依次类推直至输出针对F1~F9的累加结果G1

在图4所示出的实施例中,通过增加对XNOR门和OR门的复用率,减少了所采用元件数量,并且该方案所采用的是仅具有两个输入端的OR门,其硬件复杂程度更低。

图5示出了根据本发明的又一个实施例的二值卷积装置的硬件结构。该实施例与图4所示出的实施例类似,均只采用了一个XNOR门、一个OR门和一个寄存器,不同的是在图5中XNOR门的输入被存入可以同时存储多位结果的寄存器中,并且寄存器中的各个结果被用作OR门的输入。该实施例的使用方法与图4中的实施例相类似,均是对XNOR门进行复用,不同的是图5将每个时刻XNOR门所输出的结果存入能够同时保存多位结果的寄存器中,并在获得了全部F1~F9后,由OR门进行“或”的运算以输出G1

在本发明图3、4、5所提供的实施例中,均采用了OR门来实现“加”或“累加”的功能,并且所述OR门的输入均来自于XNOR门的输出,致使最终从OR门输出的结果均为单比特值,由此可以简化计算过程、增加运算速率。该方案所提供的硬件结构尤其适用于针对二值神经网络的专用处理器,这是由于二值神经网络采用数值“1”和“-1”表示神经网络中的权重和数据,在神经网络计算过程存在大量乘法和加法操作,减少计算操作数位宽可以有效地降低计算复杂度。

然而,由于上述采用OR门来实现“加”或“累加”的功能的方案均为单比特计算,因而会引入一定程度的误差。对此,本发明还提供了一种可选的方案,即采用汉明重量计算元件来代替如图3、4、5中所示出的OR门以实现“加”或“累加”的功能。图6a~6c示出了具有汉明重量计算元件的硬件结构,在所述可选的方案中,汉明重量计算元件将XNOR门的输出作为其输入,输出所输出数据中逻辑“1”的数据,即汉明重量。所述方案与上述采用OR门的方案相类似,同样可以达到简化计算过程的效果,并且该方案还可以实现精准的求和操作。

基于上述改进,本发明还提供了一种具有上述二值卷积装置的二值卷积神经网络处理器。

参考图7,所述二值卷积神经网络处理器10可以包括以下部件或装置:如在上述实施例中所提供的二值卷积装置101、与该二值卷积装置连接的池化装置102、与该池化装置连接的归一化装置103、以及与该归一化装置连接的二值化装置104。

其中,所述二值卷积装置101包括XNOR门和诸如OR门或汉明重量计算元件的累加装置,用于对二值卷积核和二值图像数据进行卷积操作;所述池化装置102用于对卷积所获得的结果进行池化处理;所述归一化装置103用于对经过池化的结果进行归一化操作以加速神经网络的参数训练过程;所述二值化装置104用于对处理结果进行二值化操作以用于下一层神经网络。

此外,在本发明中还可以将二值化装置104放置在二值卷积装置101之前,而非将其放置在归一化装置103之后。

并且,应当理解,针对本发明中采用OR门作为累加装置的方案,可以仅针对第一层的神经网络设置二值化装置104,而无需针对随后的各层神经网络设置二值化装置。这是由于当二值卷积装置101的输入为二值化的数据时,从OR门中输出的也是二值化的数据,因而无需再针对随后的各层设置二值化装置。换句话说,在上述情况下,若二值卷积装置101的输入已经过了二值化,则无需在二值卷积神经网络处理器10中设置二值化装置104。

根据本发明所提供的二值卷积神经网络处理器,采用了简化的“乘”和“加”或“累加”元件,例如XNOR门与OR门或XNOR门与汉明重量计算元件的硬件结构,在至少部分计算过程中将数据的位宽降低至单个比特,以降低计算的复杂度、减少数据存储电路的开销,并且缓解进行数据传输时的带宽需求。与采用通用处理器的方案相比,本发明的二值卷积神经网络处理器可以在不过多损失计算精度的情况下,有效地降低芯片的功耗及处理器所采用的电路面积。

在本发明中,还提供了一种采用上述二值卷积神经网络处理器进行计算的方法。图8示出了针对卷积神经网络中的一层(例如输入层、隐藏层、输出层)进行计算的方法,所述方法包括:

S1:利用卷积核对所输入的图层进行XNOR运算,即对所述卷积核中的每个元素与所述层中的相应元素执行XNOR运算;

S2:对执行XNOR运算所获得的结果进行累加运算,例如进行OR运算或汉明重量计算;

S3:对累加后的结果进行池化操作,以将结果输出到卷积神经网络中的下一层中;

其中,在步骤S3中还可以包括对池化操作的结果进行二值化操作,并输出所获得的结果。

通过本发明的实施例可以看出,本发明基于二值化运算的特性,提供了经过简化的用于执行卷积运算的硬件结构、以及基于该结构的二值卷积神经网络处理器及相应的计算方法,通过在运算过程中减少进行计算的数据的位宽,达到提高运算效率、降低存储容量及能耗的效果。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号