神经网络电路装置、神经网络、神经网络处理方法和神经网络的执行程序与流程

文档序号:20605928发布日期:2020-05-01 22:05阅读:214来源:国知局
本发明涉及一种神经网络电路装置、神经网络、神经网络处理方法和神经网络的执行程序(neuralnetworkcircuitdevice,neuralnetwork,neuralnetworkprocessingmethod,andprogramforimplementingneuralnetwork)。
背景技术
::有传统的前馈神经网络(ffnn:feedforwardneuralnetwork)、rbf(radialbasisfunction:径向基函数)网络、归一化的rbf网络和自组织映射(som:self-organizingmap)等。rbfn(rbf网络)使用径向基函数作为在误差反向传播算法(errorbackpropagationalgorithm)中使用的激活函数(activationfunction)。但是,有不能获取较多中间层而难以进行高精度识别判定,或者hw规模大而处理时间长等问题,使得应用领域被限定于手写文字识别等。近年来,作为在用于adas(advanceddriverassistancesystem:高级驾驶辅助系统)的图像识别和自动翻译等中备受关注的新方式,出现了卷积神经网络(cnn:convolutionalneuralnetwork)(层之间不是全连接的nn)、递归神经网络(recurrentneuralnetwork)(双向传播)。cnn是对深度神经网络(dnn:deepneuralnetwork)附加卷积运算得到的神经网络。专利文献1中记载了一种具有处理部的处理装置,该处理部根据纠错码的校验矩阵,使用在递阶神经网络中的松耦合的节点间学习到的权重值和输入信号来解决问题。现有的cnn由单精度(多位)的乘积累加运算电路(product-sumoperationcircuit)构成,故其需要大量的乘法电路。因此,存在着面积和电功率消耗极大的缺点。为此,提出了仅使用二值化的精度、即+1和-1(或者0和1)来构成cnn的电路(例如参照非专利文献1~4)。在非专利文献1~4的技术中,由于使精度降低为二值,导致cnn的识别精度也降低了。为了避免这种问题的发生且保持二值化cnn的精度,需要批归一化电路(batchnormalization)。现有技术文献【专利文献】专利文献1:日本发明专利公开公报特开2016-173843号【非专利文献】非专利文献1:m.courbariaux,i.hubara,d.soudry,r.e.yaniv,y.bengio,“binarizedneuralnetworks:trainingdeepneuralnetworkswithweightsandactivationsconstrainedto+1or-1,”computerresearchrepository(corr),“二值化nn的算法”、[online]、2016年3月、[平成28年10月5日检索],<url:http://arxiv.org/pdf/1602.02830v3.pdf>【非专利文献2】mohammadrastegari,vicenteordonez,josephredmon,alifarhadi,“xnor-net:imagenetclassificationusingbinaryconvolutionalneuralnetworks,”computervisionandpatternrecognition,“二值化nn的算法”、[online]、2016年3月、[平成28年10月5日检索]、<url:https://arxiv.org/pdf/1603.05279v4>【非专利文献3】hirokinakahara,haruyoshiyonekawa,tsutomusasao,hisashiiwamotoandmasatomotomura,“amemory-basedrealizationofabinarizeddeepconvolutionalneuralnetwork,”proc.ofthe2016internationalconferenceonfield-programmabletechnology(fpt),xi'an,china,dec2016(toappear).【非专利文献4】erikonurvitadhi,davidsheffield,jaewoongsim,asitmishra,ganeshvenkatesh,debbiemarr,“acceleratingbinarizedneuralnetworks:comparisonoffpga,cpu,gpu,andasic,”proc.ofthe2016internationalconferenceonfield-programmabletechnology(fpt),xi'an,china,dec2016(toappear).技术实现要素:【发明所要解决的技术问题】在cnn中,当进行学习时权重均等地分布。但是,由于学习数据存在不平衡,因此,不会完全均等地分布,为了进行调整而需要基于偏置(bias)来进行修正。虽然还要根据学习数据的情况,但偏置的精度在使用定点精度时为30~40位,即使使用浮点精度也需要加法器等电路。由于有偏置,因此存在面积和电功率消耗增大这一的技术问题。本发明是鉴于这样的情况而完成的,其目的在于提供一种不需要偏置的神经网络电路装置、神经网络、神经网络处理方法和神经网络的执行程序。【用于解决技术问题的技术方案】为了解决上述技术问题,本发明所涉及的神经网络电路装置是至少包括输入层、输出层和1层以上的中间层的神经网络的电路装置,其特征在于,具有逻辑电路部、求和电路部、批归一化电路部和激活函数电路部,其中,所述逻辑电路部在所述中间层中接收二值的输入值xi和权重wi,且进行逻辑运算;所述求和电路部求出所述逻辑电路部的输出的总和;所述批归一化电路部通过扩大归一化范围且使中心位移的处理来修正由二值化导致的分布不平衡;所述激活函数电路部用激活函数fsgn(b)转换对求出总和之后的信号y进行批归一化得到的信号b,取所述总和后的信号y用下述式来表示。【公式6】其中,γ:缩放系数β:位移值μ’b:除去偏置的平均值。当设输入值x0时的偏置值为w0,且设小批量(mini-batch)的平均值为μb时,μ’b=w0-μbσ2b:小批量的方差值ε:常数。针对其他机构,在发明的实施方式中进行说明。【发明效果】根据本发明,能够提供一种不需要偏置的神经网络电路装置、神经网络、神经网络处理方法和神经网络的执行程序。附图说明图1是说明深度神经网络(dnn)的结构一例的图。图2是表示比较例的神经网络的神经网络电路的结构一例的图。图3是表示图2所示的神经网络电路中的激活函数fact(y)的图。图4是表示将图2所示的神经网络电路的乘法电路替换为xnor门电路的二值化神经网络电路的结构一例的图。图5是表示图4所示的二值化神经网络电路中的激活函数fsgn(b)的图。图6是表示比较例的具有批归一化电路的二值化神经网络电路的结构一例的图。图7是表示利用神经网络的二值化神经网络电路的缩放(γ)来进行的归一化的图。图8是表示利用神经网络的二值化神经网络电路的位移(β)来进行的-1~+1的限制的图。图9是表示本发明的实施方式所涉及的深度神经网络的二值化神经网络电路的结构的图。图10a是说明本发明实施方式所涉及的深度神经网络的“无批归一化”的识别精度的图。图10b是说明本发明实施方式所涉及的深度神经网络的“有批归一化”(有偏置项)的识别精度的图。图10c是说明本发明实施方式所涉及的深度神经网络的“有批归一化”(无偏置项)的识别精度的图。图11是将对本发明实施方式所涉及的深度神经网络的二值化神经网络电路和现有的二值化神经网络电路进行比较的结果制成表来示出的图。图12是说明本发明实施方式所涉及的深度神经网络的二值化神经网络电路的安装例的图。图13是比较表示各fpga安装的硬件的数量的图。图14是表示变形例1的深度神经网络的二值化神经网络电路的结构的图。图15是表示变形例2的深度神经网络的二值化神经网络电路的结构的图。具体实施方式下面,参照附图对本发明实施方式(以下称为“本实施方式”)中的深度神经网络进行说明。(背景说明)图1是说明深度神经网络(dnn)的结构一例的图。如图1所示,深度神经网络(dnn)1构成为具有输入层(inputlayer)11、任意数量的中间层即隐藏层(hiddenlayer)12和输出层(outputlayer)13。输入层(inputlayer)11具有多个(在此为8)输入节点(神经元)。隐藏层12有多层(在此为3层(hiddenlayer1、hiddenlayer2、hiddenlayer3))。实际上,隐藏层12的层数n例如达到20~100。输出层13具有数量为识别对象的数量(在此为4)的输出节点(神经元)。另外,层数和节点数量(神经元数)是一例。深度神经网络1的输入层11与隐藏层12的节点之间全连接,隐藏层12与输出层13的节点之间全连接。输入层11、隐藏层12和输出层13中存在任意数量的节点(参照图1的○标记)。该节点是接收输入且输出值的函数。在输入层11中有输入不同于输入节点的独立的值的偏置(bias)节点。结构通过重叠具有多个节点的层而构建。传播是指将接收到的输入乘以权重(weight),并用激活函数(activationfunction)转换接收到的输入来输出给下一层。激活函数有sigmoid函数、tanh函数等非线性函数、relu(rectifiedlinearunitfunction:线性整流函数)。通过增加节点数量来增加可处理的变量,从而考虑多个要素来确定值/边界。通过增加层数,能够表现直线边界的组合、复杂的边界。学习是指计算误差,且根据误差来调整各层的权重。学习是指解决使误差最小化的优化问题,优化问题的解法一般使用误差反向传播算法(backpropagation)。误差一般使用平方和误差。为了提高泛化能力,在误差中加上正则化项。误差反向传播算法使误差从输出层13开始传播,调整各层的权重。能够通过二维地展开图1的深度神经网络1的结构来构筑适合图像处理的cnn。另外,通过在深度神经网络1中加入反馈,能够构成信号双向传播的rnn(recurrentneuralnetwork:递归神经网络)。如图1的粗虚线三角部所示,深度神经网络1由实现多层神经网络的电路(以下称为神经网络电路)2构成。本技术以神经网络电路2为对象。神经网络电路2的适用位置和适用数量没有限定。例如,在隐藏层12的层数n为20~30的情况下,可以适用于这些层的任意位置,另外可以将任意节点作为输入输出节点。并且,并不限定于深度神经网络1,也可以为任意的神经网络。但是,对于输入层11或输出层13的节点输出,要求多位输出而不是二值化输出,因此不以神经网络电路2为对象。但是,即使在构成输出层13的节点的电路中残留有乘法电路,在面积上也不会导致问题。另外,前提是评价已经学习完毕的输入数据。因此,作为学习结果,已经获得了权重wi。<神经网络电路>图2是表示比较例的神经网络电路的结构一例的图。比较例的神经网络电路20能够适用于构成图1的深度神经网络1的神经网络电路2。另外,在以下的各图的标记中,在值为多位(multi-bit)的情况下用粗实线箭头和线束表示,另外,在值为二值的情况下,用较细的粗实线箭头表示。神经网络电路20构成为具有:输入输入值(判别数据)x1~xn(多位)的输入节点和输入权重w1~wn(多位)的输入部21;偏置w0输入部22,其输入偏置w0(多位);多个乘法电路23,其接收输入值x1~xn和权重w1~wn,且分别将权重w1~wn与输入值x1~xn相乘;求和电路24,其取各乘积值与偏置w0的总和;激活函数电路25,其用激活函数fact(y)对求出总和之后的信号y进行转换。在以上结构中,神经网络电路20在接收输入值x1~xn(多位)并将其乘以权重w1~wn之后,使包含偏置w0且求出总和之后的信号y经由激活函数电路25,据此实现模拟人类的神经元的处理。图3是表示所述图2所示的神经网络电路20中的激活函数fact(y)的图。图3的横轴为取得总和的信号y,纵轴为激活函数fact(y)的值。图3的标记中的○记号为取±1的范围内的值的正侧的激活值(状态值),图3的标记中的×记号为取±1的范围内的值的负侧的激活值。神经网络电路20(参照图2)通过多位实现了高识别精度。因此,在激活函数电路25(参照图2)中能够使用非线性激活函数fact(y)。即,如图4所示,非线性激活函数fact(y)能够在斜率不为零的部分(参照图4的被虚线包围的部分)设定取±1的范围内的值的激活值。因此,神经网络电路20能实现各种活性,识别精度达到实用值。但是,神经网络电路20需要大量的乘法电路23。除此之外,神经网络电路20由于输入输出和权重是多位的,因此需要大量的存储器,读写的速度(存储器容量和带宽)也有问题。<仅二值化的二值化神经网络电路>图2所示的比较例的神经网络电路20由单精度(多位)的乘积累加运算电路构成。因此,有需要大量的乘法电路21,从而面积和电功率消耗巨大的缺点。另外,由于输入输出和权重是多位的,因此需要大量的存储器,读写的速度(存储器容量和带宽)成为问题。因此,提出了仅使用二值化的精度、即+1和-1来构成神经网络电路2(参照图1)的电路(非专利文献1~4)。具体而言,考虑将图2所示的神经网络电路20的乘法电路21替换为逻辑门(例如xnor门(同或门,也称为异或非门)电路)。图4是表示将比较例的图2所示的神经网络电路20的乘法电路21替换为xnor门电路的二值化神经网络电路的结构一例的图。比较例的二值化神经网络电路30能够适用于图1的神经网络电路2。如图4所示,比较例的二值化神经网络电路30构成为具有:输入输入值x1~xn(二值)的输入节点和输入权重w1~wn(二值)的输入部31;偏置w0输入部32,其输入偏置w0(二值);多个xnor门电路33,其接收输入值x1~xn和权重w1~wn,进行xnor(exclusivenor:异或非)逻辑运算;求和电路34,其取xnor门电路33的各xnor逻辑值和偏置w0的总和;和激活函数电路35,其用激活函数fsgn(b)转换对求出总和之后的信号y进行批归一化得到的信号b。二值化神经网络电路30构成为,乘法电路23(参照图2)被替换为实现xnor逻辑的xnor门电路33。因此,能够减少构成乘法电路23时所需的面积。另外,输入值x1~xn、输出值z和权重w1~wn均为二值(-1和+1),因此,与为多值时相比较,能够大幅减少存储器的量,由此能够提高存储器带宽。图5是表示比较例的所述图4所示的二值化神经网络电路30中的激活函数fsgn(b)的图。图5的横轴为求出总和之后的信号y,纵轴为激活函数fsgn(b)的值。图5的标记中的○记号为取±1的范围内的值的正侧的激活值,图5的标记中的×记号为取±1的范围内的值的负侧的激活值。二值化神经网络电路30仅将输入值x1~xn和权重w1~wn二值化。因此,如图5的标记a所示,只能处理仅处理±1的激活函数,因此频繁产生误差。另外,斜率不为零的区间(参照图5的虚线包围部分)不均等,因此无法顺利地进行学习。即,如图6的标记b所示,由于宽度不均等而无法定义微分。其结果,仅二值化的二值化神经网络电路40的识别精度大幅度降低。因此,在非专利文献1~4中记载了为了保持现有的二值化神经网络的精度而进行批归一化的技术方案。<具有批归一化电路的二值化神经网络电路>图6是表示具有批归一化电路(bn:batchnormalization)的二值化神经网络电路40的结构一例的图,该批归一化电路修正比较例的二值化后的精度,保持cnn的识别精度。对与图4相同的结构部分标注相同的标记。如图6所示,比较例的二值化神经网络电路40构成为具有:输入输入值x1~xn(二值)的输入节点x1~xn和输入权重w1~wn(二值)的输入部31;偏置b输入部32,其输入偏置b(多位);多个xnor门电路33,其接收输入值x1~xn和权重w1~wn,进行xnor(exclusivenor:异或非)逻辑运算;求和电路34,其取xnor门电路33的各xnor逻辑值和偏置b的总和;批归一化电路41,其通过扩大归一化范围且使中心位移的处理来修正由二值化导致的分布不平衡;激活函数电路35,其用激活函数fsgn(b)来转换对求出总和之后的信号y进行批归一化得到的信号b。批归一化电路41具有:减法器42,其取通过取权重总和得到的信号y与平均值(μb)的差分;第1乘法电路43,其将减法器42输出、与小批量(mini-batch)的方差值(σ2b)和常数(ε)的和的平方根的倒数相乘;第2乘法电路44,其对第1乘法电路43输出进行基于缩放(scaling)(γ)值(多位)的归一化;加法器45,其在基于缩放系数(γ)进行归一化后,根据位移值(β)(多位)进行位移而进行二分类。缩放系数(γ)和位移值(β)等各参数事先在学习时求出。当按每一学习数据更新权重时,耗费计算时间,且依赖于特定的数据。因此,采用以批量这一汇集的数据数量单位进行更新的方法。所谓小批量是指使批量更小的单位,当前使用该小批量。二值化神经网络电路40具有批归一化电路41,由此,修正二值化后的精度,保持cnn的识别精度。另外,并不限定于xnor门,也可以是任何逻辑门,只要是对输入值x1~xn与权重w1~wn进行xnor逻辑运算的逻辑电路即可。例如,也可以使用xor电路来求出总和,对激活函数取反。<需要批归一化电路的理由>对比较例的二值化神经网络电路40需要批归一化电路41的理由进行说明。图7和图8是说明基于比较例的二值化神经网络电路40的批归一化的效果的图。图7是表示基于比较例的缩放系数(γ)进行的归一化的图,图8是表示比较例的使用位移值(β)进行-1~+1的限制的图。所谓批归一化是指,修正由二值化导致的分布不平衡的电路,在对权重求和后利用缩放系数(γ)进行归一化,之后通过基于位移值(β)的适当的激活进行二分类。这些参数事先在学习时求出。具体如下所述。如图7的中空箭头和符号c所示,批归一化电路41的乘法电路42(参照图6)使用缩放系数(γ)将对权重求和后的信号(结果)y归一化为宽度为“2”(参照图7的阴影部分)。据此,如与图5的宽度(参照图5的阴影部分)进行比较得知的那样,在仅二值化的二值化神经网络电路30中,针对由于不均等的宽度而无法定义微分的问题,使用缩放系数(γ)归一化为宽度为“2”,据此抑制不均等的宽度。在此基础上,如图8的中空箭头和标记d所示,批归一化电路41的加法器45(参照图6)使用位移值(β)将基于缩放系数(γ)归一化后的值限制在-1~+1的范围内。即,与图5的宽度(参照图5的阴影部分)进行比较可知,当图5的宽度(参照图5的阴影部分)较多地向+1侧位移的情况下,使用位移值(β),将基于缩放系数(γ)归一化后的值限制在-1~+1,据此使该宽度的中心为0。在图5的例子中,负侧的激活值(参照图5的虚线包围部分的标记中的×记号)返回原本应该所处的负侧。据此,能够减少误差的发生,提高识别精度。这样,比较例的二值化神经网络电路40中需要批归一化电路41。<基于偏置项进行修正的必要性>如上所述,当进行学习时,权重均等地分布。但是,由于学习数据存在不平衡,因此,不会完全均等地分布,为了进行调整需要基于极小的偏置项进行修正。尽管取决于学习数据,偏置项的精度在使用定点精度时为30~40位,即使使用浮点精度,也需要加法器等电路。即,由于存在学习数据的不平衡,因此完全均等分布非常困难,为了进行调整而需要偏置(或者相当于偏置的操作)。因此,偏置需要为多位。另外,偏置值按照学习数据、学习期间而时刻变化。在没有偏置的情况下不实用。例如在后述的图10的例子中,估计classificationerror达到90%左右。有偏置的直接的技术问题在于需要高精度的电路。这样的高精度的电路的面积和电功率消耗大。(本发明的原理说明)本发明的着眼点在于发现了以下情况:对导入批归一化的操作的nn分析求出与其等效的nn,能够获得无需偏置项的nn。即,当设在权重乘积累加运算后被输入二值化神经网络电路40的批归一化电路41(参照图6)的信号为y时,从批归一化电路41输出的信号(与y等效的信号)y’(中间值)由下式(1)表示。【公式1】其中,γ:缩放系数β:位移值μb:小批量的平均值σ2b:小批量的方差值ε:常数(用于避免0成为除数的常数)在此,上述缩放系数(γ)、位移值(β)、小批量的平均值(μb)、小批量的方差值(σ2b)和常数(ε)是在学习时通过批归一化得到的值。经由二值化神经网络电路40的激活函数后的输出为+1或者-1(根据信号的分配而为0或1)。另外,即使使用上述式(1)的系数γ/√(σ2b+ε)-1对二值化神经网络电路40的中间信号进行转换,经由激活函数后的值也不发生变化,因此可以忽略该系数。因此,上述式(1)成为下式(2)。【公式2】在此,当中间值y’为正时二值化激活函数的值为+1,当中间值y’为负时二值化激活函数的值为-1(根据信号的分配,中间值y’为正时二值化激活函数的值为0,中间值y’为负时二值化激活函数的值为1)。因此,二值化激活函数的值f’sgn(y)由下述式(3)的条件决定。【公式3】因此,根据这些分析操作,如下述式(4)那样得到权重乘积累加运算。【公式4】并且,通过仅二值化的二值化神经网络电路20(参照图2),输入值x0=1。此时,w0为偏置值,因此,上述式(4)成为下述式(5)。【公式5】在此,请注意上述式(5)的第1项的总和运算以i=1开始。即,上述式(5)的第1项表示不包含偏置值的神经网络。另外,上述式(4)的第1项的总和运算以i=0开始。在此,当将w0-μb=μ’b导入上述式(5)时,上述式(5)成为下述式(6)。μ’b是除去偏置的平均值。【公式6】上述式(6)含义如下。即,上述式(6)表示,通过使用除去偏置的神经网络和批归一化进行学习,能准确地实现二值化神经网络。此时,可以说实现上述式(6)的电路结构是学习μ’b,即,是学习将现有技术中学习的小批量的平均值和偏置值的值相减得到的值。在现有技术的神经网络中,随着到达中间层、尤其是随着到达后半部而学习进行收敛。通过随着到达后半部而学习进行收敛,权重的方差成为一定。因此,有对其进行调整的偏置值变得极小的问题。上述式(6)表示即使不单独地学习偏置值,也可以学习等效的二值神经网络。没有分析性的见解则不会成立。[实施方式的结构]图9是表示本发明实施方式所涉及的神经网络的二值化神经网络电路的结构的图。对与比较例的图6相同的结构部分标注相同的标记。本实施方式的二值化神经网络电路提供一种在深度神经网络中安装的技术。二值化神经网络电路100能够适用于图1的神经网络电路2。二值化神经网络电路100(神经网络电路装置)是不需要偏置的二值化神经网络电路。如图9所示,二值化神经网络电路100构成为具有:输入输入值x1~xn(xi)(二值)的输入节点和输入权重w1~wn(wi)(二值)的输入部101;xnor门电路102(逻辑电路部),其接收输入值x1~xn和权重w1~wn,进行xnor逻辑运算;求和电路103(求和电路部),其取各xnor逻辑值的总和;批归一化电路41,其通过扩大归一化范围且使中心位移的处理来修正由二值化导致的分布不平衡;激活函数电路35,其使用激活函数fsgn(b)来转换对求出总和之后的信号y进行批归一化得到的信号b。二值化神经网络电路100是不需要所述式(6)所示的偏置项的二值化cnn。二值化神经网络电路100适用于深度神经网络1的隐藏层12(参照图1)。在此,在深度神经网络1中,以评价已学习的输入值作为前提。另外,在nn中,权重按照客户端的每一识别物体而完全不同。另外,有时权重根据学习而每次不同。在图像处理中,系数完全相同,在该点上,在nn和图像处理中hw有较大的差异。xnor门电路102也可以是包括异或的任意的逻辑电路部。即,不限定于xnor门,也可以是任何门电路,只要是对输入值x1~xn与权重w1~wn进行逻辑运算的逻辑电路即可。例如,也可以是将xor门与not门组合、与and、or门组合、以及使用晶体管开关制作等,只要逻辑上等效,则可以是任何门电路。二值化神经网络电路100是不需要偏置的二值化神经网络电路,删除了在比较例的二值化神经网络电路40(参照图6)中需要的偏置b输入部32。因此,求和电路103仅取各xnor逻辑值的总和。即,求和电路103不像比较例的二值化神经网络电路40(参照图6)求和电路35那样取各xnor逻辑值与偏置b的总和。批归一化电路41具有:减法器42,其取通过取权重总和得到的信号y与平均值(μb)的差分;第1乘法电路43,其将减法器42输出、与小批量的方差值(σ2b)和常数(ε)相乘;第2乘法电路44,其对第1乘法电路43输出进行基于缩放(γ)值(多位)的归一化;加法器45,其在基于缩放系数(γ)进行归一化后,根据位移值(β)(多位)进行位移而进行二分类。激活电路35为模拟激活函数电路的电路,该激活函数电路针对求出总和之后的信号y仅输出符号位。符号位为表示是否激活求出总和之后的多位信号y的二值信号。这样,二值化神经网络电路100的求和电路103如式(6)所示的那样仅取各xnor逻辑值的总和。因此,二值化神经网络电路100成为不需要偏置的神经网络电路。下面,对如上述那样构成的二值化神经网络电路100的动作进行说明。二值化神经网络电路100用于图1所示的深度神经网络1的神经网络电路2。在该情况下,二值化神经网络电路100的输入节点x1~xn是图1所示的深度神经网络1的hiddenlayer1的输入节点。向输入部101输入隐藏层12的hiddenlayer1的输入节点的输入值x1~xn(二值)和权重w1~wn(二值)。在作为乘法的替代的xnor门电路102中,接收输入值x1~xn和权重w1~wn,通过xnor逻辑进行二值(-1/+1)的乘法。经由xnor门电路102之后,求和电路103取各xnor逻辑值的总和。然后,批归一化电路41对取总和后的信号y进行批归一化。激活函数电路35使用激活函数fsgn(b)转换对求出总和之后的信号y进行批归一化得到的信号b。二值化神经网络电路100构成为,比较例的多位结构的乘法电路21(参照图2)被替换为实现xnor逻辑的xnor门电路102。因此,能够削减构成乘法电路21时所需的面积。另外,输入值x1~xn和权重w1~wn均为二值(-1/+1),因此,与为多位(多值)的情况相比较,能够大幅削减存储器容量,由此能够提高存储器带宽。[学习的实施例]为了确认本实施方式的效果,安装vgg11(隐藏层为11层)标准nn,确认了学习是否成功。vgg11是经常使用的标准中有再现性的标准。图10a-c是说明使用比较例和本实施方式的二值化vgg11模型来学习图像识别任务cifar10的结果的识别精度的图。图10a表示以“无批归一化”(有偏置项)方式构成的神经网络电路30(参照图4)的识别精度,图10b表示以“有批归一化”(有偏置项)方式构成的二值化神经网络电路40(参照图6)的识别精度,图10c表示以“有批归一化”(无偏置项)方式构成的本实施方式的二值化神经网络电路100(参照图9)的识别精度。图10c表示安装在vgg11标准nn中来确认本实施方式。图10a-c的横轴为对所使用的学习数据完成更新后的循环即epoch数(学习次数),纵轴为误识别率(classificationerror)。另外,图10a-c使用深度神经网络用的框架软件chainer(注册商标)的float32精度cnn。<批归一化的效果>如图10a的“无批归一化”所示,在比较例的仅二值化的二值化神经网络电路30(参照图4)中,误识别率大(epoch数在200以上;误识别率约为70%),识别精度差。另外,即使持续学习也未发现识别精度的改善(学习不成功)。与此相对,比较例的图10b的以“有批归一化”(有偏置项)方式构成的二值化神经网络电路40(参照图6)和本实施方式的图10c的以“有批归一化”(无偏置项)方式构成的二值化神经网络电路100(参照图9)均随着持续学习而误识别率降低,当epoch数在400以上时误识别率减小(约20%),表示学习成功。这样,在没有批归一化电路41时,学习不成功。在二值化神经网络电路30中,再次确认了需要批归一化电路41。<不需要偏置项的二值化cnn批归一化的效果>如将比较例的图10b的“有批归一化”(有偏置项)和本实施方式的图10c的“有批归一化”(无偏置项)进行比较得知的那样,确认了在有批归一化电路41的情况下,偏置项的有无几乎不会对识别精度产生影响。即,确认了:与比较例的图10b的以“有批归一化”(有偏置项)方式构成的神经网络电路40相比,图10c的以“有批归一化”(无偏置项)方式构成的本实施方式的神经网络电路100(参照图9)中,即使没有偏置项,识别精度也不会降低。图11是将本实施方式的二值化神经网络电路100安装在fpga(digilent公司netfpga-1g-cml)上,且将与现有的多位安装法进行比较的结果制成表来表示的图。图11的表在fpga(digilent公司zedboard)上实现表下方的栏外部所记载的[zhaoetal.]~[finn]的学会发表者(论文发表年份)的神经网络和本实施方式的神经网络的情况下,对各项目进行对比表示。图11的表中的用语如下。implementation是所安装的方法和研究组名称。(year)是相关文献被发表的年份。fpgaboard是fpga(field-programmablegatearray)搭载板的名称。(fpga)是搭载于fpga搭载板的fpga的型号,为了使比较条件一致而使用相同的fpga。clock[mhz]是fpga的动作频率。动作频率越大则越高速地进行动作。#luts是fpga的lut(look-uptable)消耗量,意味着面积。#18kbbrams是fpga的内部存储器块的消耗量,意味着面积。#dspblocks是fpga的内部乘积累加运算块的消耗量,意味着面积。testerror是测试图像的错误率,意味着识别精度。time[msec]是识别时间(单位为毫秒)。(fps)是framespersecond的简称,是每单位时间能识别的图像数。(fps)的数值越大则速度越高。power[w]是电功率消耗(单位为瓦特)。fps/watt是电功率消耗效率。fps/lut是面积效率。fps/bram是存储器量效率。图11的表是对比表示“platform”(平台)、“fpgaboard”(所使用的fpga板)、“clock(mhz)”(用于同步的内部时钟)、“lut,bram,dspblock”(存储器、dsp数)、“testerror”(误识别率)、“time(msec)(fps)”(处理时间(处理速度))、“power(w)”(电功率消耗)、“fps/watt、fps/lut、fps/bram”(数据传输等待时间/外部带有存储器的情况下的传输速度)等各项目。在该表中,应该特别注意的事项如下。<电功率消耗>与表的现有技术例相比较,本实施方式的二值化神经网络电路100能够举出实现电功率的平衡。在现有技术例中,如“power(w)”所示,电功率消耗大,为4.7w、2.5w。由于电功率消耗大,因此,用于避免该情况的控制方法复杂。如“power(w)”所示,在本实施方式中,与现有技术例[zhaoetal.]相比较,将电功率消耗减少到约1/2,为2.3w。<芯片面积>本实施方式的二值化神经网络电路100不需要偏置,且乘法电路为二值逻辑门,因此,如表的“luts,bram,dspblock”所示,芯片面积从46900减少到14509,而减少到约1/3,有不需要外部存储器且存储器控制器简单等效果。芯片面积与价格成正比,因此,能期待价格也便宜两位数左右。<性能等效>本实施方式的二值化神经网络电路100如表的“fps/watt,fps/lut,fps/bram”所示,即使只看功率效率而不看面积,性能功率效率35.7与182.6达到约5倍。并且,数据传输速度168与420达到约3倍。[安装例]图12是说明本发明实施方式所涉及的二值化神经网络电路的安装例的图。<步骤1>首先,使用现有的用于深度神经网络的框架软件chainer(注册商标),在具有gpu(graphicsprocessingunit)的计算机201上学习所提供的数据集(本次为imagenet,提供数据以用于图像识别任务)。学习在gpu上执行。该计算机201具有arm处理器等cpu(centralprocessingunit)、存储器、硬盘等存储机构(存储部)和包括网络接口的i/o端口。该计算机通过由cpu201执行读取到存储器上的程序(二值化后的神经网络的执行程序),而使由后述的各处理部构成的控制部(控制机构)进行动作。<步骤2>接着,使用自动生成工具,自动生成与本实施方式的二值化神经网络电路100等效的c++代码,从而得到c++代码202。<步骤3>接着,使用fpga厂商的高级综合工具(xilinx公司sdsoc)(注册商标),为了用于fpga(field-programmablegatearray)综合而生成hdl(hardwaredescriptionlanguage)203。例如,在高级综合工具(xilinx公司sdsoc)中,使用硬件描述语言(veriloghdl/vhdl)来描述想要实现的逻辑电路,使用所提供的cad工具综合为位流。然后,当将该位流发送给fpga时,在fpga中实现电路。<步骤4>接着,使用现有技术的fpga综合工具vivado(注册商标),在fpga上实现(fpga综合204)并验证图像识别任务。<步骤5>验证之后,完成基板205。二值化神经网络电路100被硬件化而安装在基板205中。如以上说明的那样,本实施方式所涉及的二值化神经网络电路100(参照图9)具有:输入输入值x1~xn(xi)(二值)的输入节点和输入权重w1~wn(wi)(二值)的输入部101;xnor门电路102,其接收输入值x1~xn和权重w1~wn,进行xnor逻辑运算;求和电路103,其取各xnor逻辑值的总和;批归一化电路41,其通过扩大归一化范围且使中心位移的处理来修正由二值化导致的分布不平衡;激活函数电路35,其使用激活函数fsgn(b)转换对求出总和之后的信号y进行批归一化得到的信号b。求出总和之后的信号y由式(6)表示。另外,在神经网络处理方法中执行以下步骤:输入输入值x1~xn(xi)和权重w1~wn(wi)的步骤;接收输入值x1~xn和权重w1~wn,进行xnor逻辑运算的步骤;如式(6)所示,仅取各xnor逻辑值的总和的步骤;进行批归一化的步骤;使用激活函数fsgn(b)转换对求出总和之后的信号y进行批归一化得到的信号b的步骤。学习时由不需要偏置项的二值化cnn进行学习,在实现电路时也不需要偏置项。据此,不需要保持偏置项的存储器和加法器电路,能够由二值的输入、权重和批归一化电路41来实现cnn。因此,能够几乎不使识别精度降低而实现在面积、电功率消耗、速度方面优异的cnn。例如,如图11的表所示,本实施方式所涉及的二值化神经网络电路100将电功率消耗(power[w])削减至一半,且将面积削减至约三十分之一(fps/watt、fps/lut、fps/bram的相乘效果)。在本实施方式中,不需要在二值化神经网络电路40(参照图6)中必须的偏置本身,因此能够削减面积,还能够削减存储器量。另外,如对图10(b)、(c)进行比较得知的那样,本实施方式的二值化神经网络电路100在识别精度方面没有差异。图13是比较表示各fpga安装的硬件的数量的图。使用赛灵思公司的fpga计算出定点精度、二值化、本实施方式分别要求的硬件的数量。具体而言,安装了tensorflow教程cnn。另外,安装在digilent公司的netfpga-1g-cml板上。各fpga安装的比较是本实施方式(二值化(批归一化+无偏置))、比较例的定点(16位)和比较例的二值化(仅有偏置)。fpga安装的硬件的数量由ff(flip-flop)数、lut数、18kbbram数和dsp(digitalsignalprocessor)48e数表示。如图13所示,确认了:相对于定点精度,本实施方式(二值化(批归一化+无偏置))和二值化(仅有偏置)的ff数、lut数、18kbbram数、和dsp48e数中任一硬件数量均减少。另外得知,相对于二值化(仅有偏置),本实施方式(二值化(批归一化+无偏置))的硬件数量(面积)也仅增加了1~2%左右。并且,对本实施方式的效果进行叙述。(1)与无批归一化的cnn的比较本实施方式与无批归一化的cnn相比,不需要偏置项电路,且学习时不需要偏置,因此具有易于学习的优点。但是,需要批正则化项用的电路。另外,如由图13的本实施方式(二值化(批归一化+无偏置))和比较例的二值化(仅有偏置)的比较得知的那样,硬件数量(面积)、电功率增加百分之几。(2)学习时的比较如所述图10b、图10c所示得知,本实施方式的二值化神经网络电路100的识别精度(参照图10c)、比较例的以“有批归一化”(有偏置项)方式构成的二值化神经网络电路40的识别精度(参照图10b)、和学习时间没有差异,可以视为大致相同。另外,在实现电路时的差异由图13表示。(3)易设计性在有偏置值的情况下,由于其值是极小的值(定点30~40位),因此在电路设计时应予注意。已判明,与现有的具有偏置的二值化神经网络电路相比较,根据本实施方式能够构成以下cnn:将电功率消耗削减至一半,将面积削减至约三十分之一(参照图11),同时如图10所示,识别精度大致同等。期待作为使用深度学习的adas(advanceddriverassistancesystem:高级驾驶辅助系统)摄像头图像识别用的边缘嵌入式装置硬件方式实用化。尤其是在adas中,在车载的基础上还要求高可靠性和低发热。如图11的表所示,本实施方式所涉及的二值化神经网络电路100的电功率消耗(power[w])大幅降低,而且不需要外部存储器,因此,也不需要用于冷却存储器的冷却风扇或冷却片。适合搭载于adas摄像头。[变形例]图14是表示变形例1的深度神经网络的二值化神经网络电路的结构的图。对与图9相同的结构部分标注相同的标记,省略重复部分的说明。变形例1的二值化神经网络电路100a能够适用于图1的神经网络电路2。二值化神经网络电路100a(神经网络电路装置)是不需要偏置的二值化神经网络电路。如图14所示,二值化神经网络电路100a构成为,在图9的二值化神经网络电路100的基础上还具有存储偏置值的偏置存储器110(存储部、偏置值输入部)。二值化神经网络电路100a读出存储于偏置存储器110的偏置值且将其输出给求和电路103。在该情况下,与使用偏置的二值化神经网络电路40(参照图6)同样,二值化神经网络电路100a构成为向求和电路103输入偏置值。通过由求和电路35取xnor门电路34的各xnor逻辑值与偏置值的总和,二值化神经网络电路100a能够实现与使用偏置的二值化神经网络电路40(参照图6)等效的神经网络处理方法。另一方面,二值化神经网络电路100a也可以向求和电路103写入0而代替读出存储于偏置存储器110的偏置值,据此能够实现执行式(6)的电路的二值化神经网络电路100a的神经网络处理方法。在该情况下,二值化神经网络电路100a是不需要偏置的二值化cnn。根据变形例1,能够将二值化神经网络电路100a替换(改用)为使用偏置的现有的二值化神经网络电路40(参照图6)来使用,由此能够通用地适用。尤其是,能够不进行使用偏置的现有的二值化神经网络电路40自身、连接于使用偏置的现有的二值化神经网络电路40的存储器、读写控制部的设计变更和认证而适用。另外,能够合理有效使用在现有的二值化神经网络电路40中存储的资源。图15是表示变形例2的深度神经网络的二值化神经网络电路的结构的图。对与图9相同的结构部分标注相同的标记,省略重复部分的说明。变形例2的二值化神经网络电路100b能够适用于图1的神经网络电路2。二值化神经网络电路100b(神经网络电路装置)是不需要偏置的二值化神经网络电路。如图15所示,二值化神经网络电路100b构成为,在图9的二值化神经网络电路100的基础上还具有:输入偏置值b的偏置值输入部120;接通或断开偏置值b向求和电路103的输入的开关121。二值化神经网络电路100b读出存储于偏置存储器110的偏置值且将其输出给求和电路103。在该情况下,二值化神经网络电路100b构成为,与使用偏置的二值化神经网络电路40(参照图6)同样,向求和电路103输入偏置值b。通过由求和电路35取xnor门电路34的各xnor逻辑值与偏置值b的总和,二值化神经网络电路100b能实现与使用偏置的二值化神经网络电路40(参照图6)等效的神经网络处理方法。另一方面,二值化神经网络电路100b通过断开开关121来断开偏置值b向求和电路103的输入,能够实现执行式(6)的电路的二值化神经网络电路100a的神经网络处理方法。根据变形例2,能够将二值化神经网络电路100b替换(改用)为使用偏置的现有的二值化神经网络电路40(参照图6)来使用,能够得到与变形例1的情况同样的效果。与变形例1的二值化神经网络电路100a相比,变形例2结构更简单,能够更通用地适用。本发明并不限定于上述的实施方式例,只要在没有超出技术方案所记载的本发明的要旨的范围内,还包括其他变形例、应用例。例如,也可以代替作为乘法电路的逻辑门而使用lut(look-uptable)。该lut代替进行xnor逻辑运算的xnor门电路102(参照图9)而使用作为fpga的基本结构要素的查找表。lut存储相对于二输入(x1,w1)的二值(-1/+1)的xnor逻辑结果y。通过使用lut,能够消除批归一化电路的面积和存储参数的存储器面积与存储器带宽,且能够实现性能上等效的电路结构。lut是fpga的基本结构要素,fpga综合时的亲和性高,易于利用fpga进行安装。另外,为了使本发明易于理解而详细说明了上述的实施方式的例子,但并不一定限定于具有所说明的全部结构。另外,能够将某一实施方式的例子的结构的一部分替换为其他实施方式的例子的结构,另外,还能够对某一实施方式的例子的结构增加其他实施方式的例子的结构。另外,实施方式的例子能够以其他的各种方式来实施,在没有脱离发明的要旨的范围内能够进行各种省略、置换和变更。这些实施方式及其变形例被包含在发明的范围和主旨中,同时也包含在技术方案所记载的发明及其同等的范围内。另外,在上述实施方式中说明的各处理中,还能够手动进行作为自动进行的处理说明的全部或者一部分处理,或者还能够采用公知的方法来自动进行作为手动进行的处理说明的全部或者一部分处理。除此之外,除非另有说明,否则可以对上述文本中和附图中所示的处理步骤、控制步骤、具体名称、包括各种数据和参数的信息任意地进行变更。另外,图示的各装置的各结构要素是功能性概念的要素,在物理上不一定必须如图示那样构成。即,各装置的分散和集成的具体方式并不限定于图示,也可以构成为按照各种负荷和使用状况等,使其全部或者一部分以任意的单位在功能上或物理上分散或集成。另外,上述的各结构、功能、处理部、处理机构等的一部分或者全部例如也可以通过利用集成电路进行设计等而由硬件来实现。另外,上述的各结构、功能等也可以通过软件来实现,该软件用于解释并执行由处理器实现各个功能的程序。实现各功能的程序、表、文件等信息能够保存在存储器、硬盘、ssd(solidstatedrive)等存储装置、或者ic(integratedcircuit)卡、sd(securedigital)卡、光盘等记录介质中。另外,在上述实施方式中,装置使用了神经网络电路装置的名称,但这是为了便于说明,名称也可以是深度神经网络电路、神经网络装置、感知器等。另外,虽然方法和程序使用神经网络处理方法的名称,但也可以是神经网络运算方法、神经网络程序等。附图标记说明1:深度神经网络;2:神经网络电路;11:输入层;12:隐藏层(中间层);13:输出层;35:激活电路(激活电路部、激活电路机构);41:批归一化电路;42:减法器;43:第1乘法电路;44:第2乘法电路;45:加法器;100、100a、100b:二值化神经网络电路(神经网络电路装置);101:输入部;102:xnor门电路(逻辑电路部、逻辑电路机构);103:求和电路(求和电路部、求和电路机构);110:偏置存储器(存储部、偏置值输入部);120:偏置值输入部;121:开关;x1~xn(xi):输入值(二值);w1~wn(wi):权重(二值)。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1