本发明是有关于一种运用于类神经网络系统的电路,且特别是有关于一种运用于二进制类神经网络系统的乘积累加电路。
背景技术:
近年来,类神经网络系统(neuralnetworksystem)已经广泛的运用在人工智能的用途(aiapplication)以提供智能处理能力,例如图形识别(patternrecognition)、数据分类(dataclassification)和对象检测(objectdetection)。以下先简单介绍具备识别数字能力的类神经网络系统。
请参照图1,其所绘示为识别数字的类神经网络系统示意图。利用类神经网络系统100可运用于识别手写板102上所书写的数字,其中手写板102是由784(28×28)个感应点(sensepoint)所建构而成。
类神经网络系统100包括输入层(inputlayer)110、隐藏层(hiddenlayer)120与输出层(outputlayer)130。基本上,手写板102上的每个感应点会对应到输入层110的一个输入神经元(inputneuron),因此输入层110共有784(28×28)个输入神经元i0~i783,并可视为输入层110的大小(size)为784。
由于类神经网络系统100需要识别0~9的十个数字,因此输出层130共有10个输出神经元(outputneuron)o0~o9,并可视为输出层130的大小(size)为10。
再者,类神经网络系统100的隐藏层120被设计为具有30个神经元h0~h29,亦即隐藏层130的大小(size)为30。因此,类神经网络系统100的尺寸为784-30-10。
每个神经元之间的连线都代表一个神经元连接权重(neuronconnectionweight)。如图1所示,输入层110中的784个输入神经元i0~i783连接至隐藏层120的神经元h0,而对应的784个神经元连接权重为(ih0,0~ih783,0)。同理,输入层110中的784个输入神经元i0~i783对应地连接至隐藏层120的30个神经元h0~h29。因此,输入层110与隐藏层120之间有734×30个神经元连接权重(ih0,0~ih783,0)、(ih0,1~ih783,1)~(ih0,29~ih783,29)。
同理,隐藏层120的30个神经元h0~h29对应地连接至输出层130的10个神经元o0~o9。因此,隐藏层120与输出层130之间有30×10个神经元连接权重(ho0,0~ho29,0)~(ho0,9~ho29,9)。其中,类神经网络系统100中所有的神经元连接权重(ih0,0~ih783,0)~(ih0,29~ih783,29)与(ho0,0~ho29,0)~(ho0,9~ho29,9)即组合成为权重群组(weightgroup)。
基本上,将前一层(previouslayer)的每个神经元数值乘以对应的神经元连接权重后并加总之后即可获得下一层(nextlayer)的神经元数值。以隐藏层120的神经元数值h0为例,
同理,隐藏层120中其他神经元h1~h29也是以相同的方式来计算。
再者,输出层130的输出神经元数值o0即为,
同理,而输出层130其他神经元o1~o9也是以相同的方式来计算。
在实际应用类神经网络系统100之前,需要进行训练阶段(trainingphase),以获得权重群组中所有的神经元连接权重。举例来说,经过多次的迭代训练(iterationsoftraining)并获得所有神经元连接权重后,即可获得一个训练完成的(well-trained)类神经网络系统100。
在应用阶段(applicationphase)时,即可在手写板102上写入数字,并由类神经网络系统100来进行识别。如图1所示,在手写板102上写入数字7后,输出层130中的输出神经元o7数值最高,亦即类神经网络系统100识别出数字7。
当然,图1的类神经网络系统100仅是一个范例。对于更复杂的类神经网络系统,可以使用多个隐藏层来让类神经网络系统具备更佳的识别能力,而每个隐藏层的尺寸也不限定。
由于类神经网络系统中需要不断的进行乘法与加法运算,因此利用计算机系统可以进行上述的运算。举例来说,将所有的神经元连接权重储存于计算机系统的存储器中。接着,利用计算机系统的中央处理单元(cpu)来存取(access)存储器中的神经元连接权重,并进行乘法与加法运算后即可计算出所有神经元数值。
然而,当类神经网络系统的尺寸越大时,存储器的容量也必须增加以便用来储存神经元连接权重以及神经元数值。并且,由于中央处理单元必须不断地存取存储器中的数据,使得计算机系统的效能大幅地降低且耗费大量的功耗(powerconsumption)。
现今,针对类神经网络系统的特性,已发展出一种乘积累加电路(multiplyaccumulatecircuit,简称mac),用来计算神经元数值。
请参照图2a至图2c,其所绘示为乘积累加电路器的方块图(blockdiagram)、公知乘积累加电路组(macgroup)与控制电路示意图。
如图2a所示,乘积累加电路200中,每个输入数值x1~xm乘上对应的权重w1,j~wm,j后,将结果加总即获得输出数值yj。亦即,
应用到类神经网络系统时,乘积累加电路200中的权重w1,j~wm,j即为神经元连接权重。将前一层(previouslayer)的多个神经元数值即为输入数值,而乘积累加电路200的输出值yj即为下一层(nextlayer)的神经元数值。
如图2b所示,乘积累加电路组250包括j个乘积累加电路251~25j,此乘积累加电路组250可以进行类神经网络系统中前一层大小(size)m,下一层的大小(size)j的运算。
以乘积累加电路251为例来作说明,乘积累加电路251包括m个电导(electricalconductance),其电导值(conductancevalue)分别为g1,1~gm,1。其中,每个电导皆由可变电阻(variableresistor)所组成。而调整后(tuned)的可变电阻,其电阻值(resistancevalue)的倒数即为电导值。举例来说,调整好的电阻值为5欧姆(ohm,ω),其电导值为0.2西门子(siemens,s)。再者,根据类神经网络系统中的神经元连接权重来调整对应的电导值g1,1~gm,1。
再者,乘积累加电路251的m个输入端接收m个输入电压v1~vm,每个电压值v1~vm分别代表前一层的m个神经元数值,乘积累加电路251的输出端产生一个输出电流i1代表下一层的神经元数值。乘积累加电路251的m个输入端与输出端之间连接对应的电导g1,1~gm,1。再者,乘积累加电路252~25j也有相同的结构,此处不再赘述。
在类神经网络系统的训练阶段(trainingphase)时,可调整每个乘积累加电路251~25j中的所有m×j个电导值g1,1~gm,j作为m×j个神经元连接权重。
在类神经网络系统的应用阶段(applicationphase)时,所有乘积累加电路251~25j的输入端接收m个输入电压v1~vm,所有输出端连接至接地电压(未示出)。因此,所有乘积累加电路251~25j的输出端产生的输出电流i1~ij即代表下一层的j个神经元数值。
以乘积累加电路251为例,n个电导g1,1~gm,j接收对应的m个输入电压v1~vm后,产生m个电流i1,1~im,1。而叠加的(superposed)m个电流i1,1~im,1即为输出电流i1,亦即
如图2c所示,控制电路290包括数字模拟转换器(digital-to-analogconverter,dac)260、乘积累加电路组250、模拟数字转换器(analog-to-digitalconverter,adc)270。其中,数字模拟转换器260可将数字数值转换为模拟电压,模拟数字转换器270可将模拟电流转换成数字数值。
首先,前一层的m个神经元数值din_1~din_m输入数字模拟转换器260,并转换为对应的m个输入电压v1~vm。再者,乘积累加电路组250接收m个输入电压v1~vm,并产生j个输出电流i1~ij。之后,模拟数字转换器270接收j个输出电流i1~ij,并转换为下一层的j个神经元数值do_1~do_j。其中,神经元数值din_1~din_m、do_1~do_j皆为数字数值。
换言之,任意尺寸的类神经网络系统即可利用图2c的控制电路290来组成。以图1的类神经网络系统100为例,其尺寸为784-30-10。因此,类神经网络系统100包括二个控制电路。第一个控制电路接收输入层110的748个神经元数值i0~i783,并产生隐藏层120的30个神经元数值h0~h29。第二个控制电路接收隐藏层120的30个神经元数值h0~h29,并产生输出层130的10个神经元数值o0~o9。
以上述图2b与图2c为例,神经元数值din_1~din_m、do_1~do_j皆为多个比特的数字数值(multi-bitdigitalvalue),且对应的电导g1,1~gm,1也是需要根据多个比特的数字数值的神经元连接权重来进行调整。
近年来,二进制类神经网络系统(binaryneuralnetworksystem)逐渐受到重视。二进制类神经网络系统的神经元数值以及神经元连接权重皆为一比特的二进制码(one-bitbinarycode)。因此,相较于图1与图2b的类神经网络系统需要进行复杂的数值计算,二进制类神经网络系统可以有效地减少存储器的储存空间、降低计算机系统的计算量、以及降低功耗(powerconsumption)。
技术实现要素:
本发明系有关于一种乘积累加电路,接收类神经网络系统中第一层的m个一比特神经元数值。该乘积累加电路包括:m个非易失性存储单元与m个电流源。该m个非易失性存储单元与该m个电流源形成m条电流路径,该m条电流路径连接于第一供应电压与输出端之间。该m个非易失性存储单元中的第一非易失性存储单元与该m个电流源中的第一电流源形成第一电流路径,该第一电流源的第一端接收该第一供应电压,该第一电流源的第二端连接至该第一非易失性存储单元的第一端,该第一非易失性存储单元的第二端连接至该输出端,且该第一电流源的控制端接收该第一层的m个一比特神经元数值中的第一一比特神经元数值。
为了对本发明的上述及其他方面有更佳的了解,下文特举较佳实施例,并配合附图,作详细说明如下:
附图说明
图1为识别数字的类神经网络系统示意图;
图2a至图2c为乘积累加电路器的方块图、公知乘积累加电路组与控制电路示意图;
图3为本发明乘积累加电路的第一实施例;
图4为本发明第二实施例的乘积累加电路及其乘积累加电路组;
图5为本发明第三实施例的乘积累加电路及其乘积累加电路组;
图6为本发明第四实施例的乘积累加电路及其乘积累加电路组;
图7为本发明第五实施例的乘积累加电路及其乘积累加电路组;以及
图8为可运用于多比特类神经网络系统的乘积累加电路。
具体实施方式
本发明提出一种运用于二进制类神经网络系统的乘积累加电路。在乘积累加电路中,利用非易失性存储器的存储单元来记录神经元连接权重,并且搭配电流源(currentsource)即可完成乘积累加电路。
众所周知,现今的非易失性存储器的存储单元可分为多次编程存储单元(mtpmemorycell)、单次编程存储单元(otpmemorycell)、掩膜式只读存储单元(maskromcell)。举例来说,可变电阻式存储器(resistiverandomaccessmemory,简称rram或者reram)的存储单元可作为mtp存储单元。浮动栅晶体管(floatinggatetransistor)可组成mtp或者otp存储单元。反熔丝晶体管(antifusetransistor)可组成otp存储单元。
基本上,上述的mtp或者otp存储单元皆可利用适当的偏压来控制存储单元呈现二种不同的储存状态。再者,掩膜式只读存储单元则是利用半导体制程,将存储单元制作成二种不同的储存状态。
以反熔丝晶体管所组成的otp存储单元为例,当反熔丝晶体管的栅极氧化层未破裂(rupture)时,反熔丝晶体管的电阻值很大,大约为几百万欧姆(mω)以上,可视为第一储存状态。当反熔丝晶体管的栅极氧化层破裂(rupture)时,反熔丝晶体管的电阻值非常小,大约为几千欧姆(kω)以下,可视为第二储存状态。换言之,针对otp存储单元,在编程动作(programaction)时,可以提供适当的偏压来控制otp存储单元呈现二种不同的储存状态。
类似地,在reram存储单元中,当reram存储单元未进行初始化动作(formingaction)之前,reram存储单元的电阻值非常大,约为几百万欧姆(mω)以上,可视为第一储存状态。当reram存储单元进行初始化动作之后,reram存储单元的电阻值大幅降低,约为几千欧姆(kω)以下,可视为第二储存状态。也就是说,针对reram存储单元,可以选择性地进行初始化动作用以控制reram存储单元呈现二种不同的储存状态。
由以上的说明可知,经由适当的控制,非易失性存储单元可呈现高电阻值的第一储存状态或者低电阻值的第二储存状态。其中,高低电阻值相差可达103倍以上。再者,以下的说明中,将高电阻值的第一储存状态定义为关闭状态(offstate),将低电阻值的第二储存状态定义为开启状态(onstate)。
根据本发明的实施例,本发明运用可呈现二种储存状态的非易失性存储器的存储单元并搭配电流源(currentsource),组成运用于二进制类神经网络系统的乘积累加电路。
请参照图3,其所绘示为本发明乘积累加电路的第一实施例。乘积累加电路300包括:m个电流源301~30m及m个非易失性存储单元311~31m。其中,乘积累加电路300的m个输入端接收前一层的m个一比特的神经元数值din_1~din_m,m个电流源301~30m受控于m个神经元数值din_1~din_m。当任一个电流源301~30m动作时,可以产生的电流大小为iu,例如iu等于0.1μa。
在乘积累加电路300包括m条电流路径(currentpath),每一条电流路径包括电流源与非易失性存储单元。在第一电流路径中,电流源301受控于神经元数值din_1,电流源301的第一端接收第一供应电压vss,电流源301的第二端连接至非易失性存储单元311的第一端,非挥发存储单元311的第二端连接至乘积累加电路300的输出端o。在第二电流路径中,电流源302受控于神经元数值din_2,电流源302的第一端接收第一供应电压vss,电流源302的第二端连接至非易失性存储单元312的第一端,非挥发存储单元312的第二端连接至乘积累加电路300的输出端o。依此类推,在第m电流路径中,电流源30m受控于神经元数值din_m,电流源30m的第一端接收第一供应电压vss,电流源30m的第二端连接至非易失性存储单元31m的第一端,非挥发存储单元31m的第二端连接至乘积累加电路300的输出端o。
根据本发明的实施例,非易失性存储单元311~31m可储存一比特的神经元连接权重w1~wm。非易失性存储单元311~31m可由mtp存储单元、otp存储单元或者掩膜式只读存储单元来实现。根据本发明的实施例,非易失性存储单元311~31m的动作原理类似于开关(switch)。举例来说,当非易失性存储单元为关闭状态(offstate)时,其电阻值非常大,电流无法通过非易失性存储单元,视为神经元连接权重为"逻辑0"。当非易失性存储单元为开启状态(onstate)时,其电阻值较小,电流可通过非易失性存储单元,视为神经元连接权重为"逻辑1"。
基本上,乘积累加电路300于应用阶段时,乘积累加电路300的输出端o会接收第二供应电压vd,且第二供应电压vd会大于第一供应电压vss。例如,第二供应电压vd为3.3v,第一供应电压vss为接地电压。
再者,乘积累加电路300于应用阶段时,根据前一层的m个一比特的神经元数值din_1~din_m,以及非易失性存储单元311~31m储存的一比特的神经元连接权重w1~wn,即可在乘积累加电路300的输出端o产生输出电流io。
以第一电流路径为例,当非易失性存储单元311所储存的神经元连接权重w1为"逻辑0"时,无论电流源301是否动作,第一电流路径的电流ib1为零。当非易失性存储单元311所储存的神经元连接权重w1为"逻辑1"且神经元数值din_1为"逻辑0"时,电流源301不动作无法产生电流,第一电流路径的电流ib1为零。当非易失性存储单元311所储存的神经元连接权重w1为"逻辑1"且神经元数值din_1为"逻辑1"时,电流源301动作,产生电流iu,第一电流路径的电流ib1即为iu。同理,其他电流路径运作皆相同于第一电流路径,此处不再赘述。
因此,乘积累加电路300于应用阶段所产生的输出电流io即为:
在上式中,wi与din_i皆为一比特的二进制码。再者,将输出电流io进行数字化(digitalized)后,即可成为下一层的一个一比特的神经元数值。举例来说,当输出电流io大于参考电流时,则下一层的一个一比特的神经元数值为"逻辑1"。当输出电流io小于参考电流时,则下一层的一个一比特的神经元数值为"逻辑0"。
相同地,组合数个乘积累加电路即可以成为乘积累加电路组(macgroup)。以下以实际的电路元件来实现本发明的乘积累加电路。请参照图4,其所绘示为本发明第二实施例的乘积累加电路及其乘积累加电路组。
乘积累加电路组包括j个乘积累加电路41~4j,每一个乘积累加电路41~4j可产生对应的输出电流io1~ioj。每一个乘积累加电路41~4j的结构相同,以下仅介绍乘积累加电路41。
乘积累加电路41包括:m个电流源411~41m以及m个非易失性存储单元431~43m。其中,乘积累加电路41的m个输入端接收前一层的m个一比特的神经元数值din_1~din_m,m个电流源411~41m受控于m个神经元数值din_1~din_m。再者,乘积累加电路41包括m条电流路径(currentpath),每一条电流路径包括电流源与非易失性存储单元。m条电流路径的连接关系类似于第一实施例的乘积累加电路300,此处不再赘述。
根据本发明的第二实施例,乘积累加电路41中的电流源411~41m以n型晶体管来实现,且所有的n型晶体管的尺寸(size)相同。因此,当任一个n型晶体管开启(turnon)时,可产生的电流大小为iu。
以电流源411为例,n型晶体管的栅极端接收对应的一比特的神经元数值din_1,n型晶体管的第一漏/源端(drain/sourceterminal)接收第一供应电压,n型晶体管的第二漏/源端连接至非易失性存储单元431的第一端,非易失性存储单元431的第二端连接至输出端o1。
举例来说,将"逻辑1"的神经元数值定义为n型晶体管的开启电压(onvoltage),将"逻辑0"的神经元数值定义为n型晶体管的关闭电压(offvoltage)。因此,神经元数值为逻辑"1"时,n型晶体管开启并产生电流iu,神经元数值为逻辑"0"时,n型晶体管关闭且无法产生电流。其中,开启电压(onvoltage)可为3.3v,关闭电压(offvoltage)可为接地电压。
相同地,非易失性存储单元431~43m可由mtp存储单元、otp存储单元或者掩膜式只读存储单元来实现。乘积累加电路41中的非易失性存储单元431~43m可储存一比特的神经元连接权重w1,1~wm,1。当非易失性存储单元为关闭状态(offstate)时,其电阻值非常大,电流无法通过非易失性存储单元,视为神经元连接权重为"逻辑0"。当非易失性存储单元为开启状态(onstate)时,其电阻值较小,电流可通过非易失性存储单元,视为神经元连接权重为"逻辑1"。
因此,乘积累加电路41于应用阶段所产生的输出电流io1即为:
再者,每个乘积累加电路41~4j的输出端o1~oj连接至对应的转换电路(convertingcircuit)491~49j,用以将j个输出电流io1~ioj转换为下一层的一比特的神经元数值dout_1~dout_j。举例来说,转换电路491~49j为电流比较器(currentcomparator),当输出电流io1大于参考电流时,则下一层的神经元数值dout_1为"逻辑1"。当输出电流io1小于参考电流时,则下一层的神经元数值为"逻辑0"。
请参照图5,其所绘示为本发明第三实施例的乘积累加电路及其乘积累加电路组。乘积累加电路组包括j个乘积累加电路51~5j,每一个乘积累加电路51~5j可产生对应的输出电流io1~ioj。每一个乘积累加电路51~5j的结构相同,以下仅介绍乘积累加电路51。
乘积累加电路51包括:m个电流源511~51m以及m个非易失性存储单元531~53m。其中,乘积累加电路51的m个输入端接收前一层的m个一比特的神经元数值din_1~din_m,m个电流源511~51m受控于m个神经元数值din_1~din_m。再者,乘积累加电路51包括m条电流路径(currentpath),每一条电流路径包括电流源与非易失性存储单元。m条电流路径的连接关系类似于第一实施例的乘积累加电路300,此处不再赘述。
相较于第二实施例,第三实施例的差异在于电流源的构造,以下介绍电流源511。电流源511由二个n型晶体管所组成,电流源511包括开关晶体管(switchingtransistor)与偏压晶体管(biastransistor)。在电流源511中,偏压晶体管的栅极端接收偏压电压(biasvoltage,vb),偏压晶体管的第一漏/源端接收第一供应电压,偏压晶体管的第二漏/源端连接至开关晶体管的第一漏/源端,开关晶体管的第二漏/源端连接至非易失性存储单元531的第一端,开关晶体管的栅极端接收对应的一比特的神经元数值din_1。
根据本发明的第三实施例,所有电流源511~51m中的偏压晶体管有相同的尺寸(size)。因此,当任一个电流源511~51m动作时,即可产生的电流大小为iu。
举例来说,将"逻辑1"的神经元数值定义为开关晶体管的开启电压(onvoltage),将"逻辑0"的神经元数值定义为开关晶体管的关闭电压(offvoltage)。因此,神经元数值为逻辑"1"时,开关晶体管开启使得电流源动作并产生电流iu,神经元数值为逻辑"0"时,开关晶体管关闭使得电流源不动作且无法产生电流。其中,开启电压(onvoltage)可为3.3v,关闭电压(offvoltage)可为接地电压。
因此,乘积累加电路51于应用阶段所产生的输出电流io1即为:
再者,每个乘积累加电路51~5j的输出端o1~oj连接至对应的转换电路591~59j,用以将j个输出电流io1~ioj转换为下一层的一比特的神经元数值dout_1~dout_j。举例来说,转换电路591~59j为电流比较器(currentcomparator),当输出电流io1大于参考电流时,则下一层的神经元数值dout_1为"逻辑1"。当输出电流io1小于参考电流时,则下一层的神经元数值为"逻辑0"。
当然,第二实施例与第三实施例的乘积累加电路也可利用p型晶体管来实现电流源。
请参照图6,其所绘示为本发明第四实施例的乘积累加电路及其乘积累加电路组。乘积累加电路组包括j个乘积累加电路61~6j,每一个乘积累加电路61~6j可产生对应的输出电流io1~ioj。每一个乘积累加电路61~6j的结构相同,以下仅介绍乘积累加电路61。
乘积累加电路61包括:m个电流源611~61m以及m个非易失性存储单元631~63m。其中,乘积累加电路61的m个输入端接收前一层的m个一比特的神经元数值din_1~din_m,m个电流源611~61m受控于m个神经元数值din_1~din_m。再者,乘积累加电路61包括m条电流路径(currentpath),每一条电流路径包括电流源与非易失性存储单元。m条电流路径的连接关系类似于第一实施例的乘积累加电路300,此处不再赘述。
根据本发明的第四实施例,乘积累加电路61中的电流源611~61m系以p型晶体管来实现,且所有的p型晶体管的尺寸(size)相同。因此,当任一个p型晶体管开启(turnon)时,即可产生的电流大小为iu。
以电流源611为例,p型晶体管的栅极端接收对应的一比特的神经元数值din_1,p型晶体管的第一漏/源端(drain/sourceterminal)接收第一供应电压,p型晶体管的第二漏/源端连接至非易失性存储单元631的第一端,非易失性存储单元631的第二端连接至输出端o1。
举例来说,将"逻辑1"的神经元数值定义为p型晶体管的开启电压(onvoltage),将"逻辑0"的神经元数值定义为p型晶体管的关闭电压(offvoltage)。因此,神经元数值为逻辑"1"时,p型晶体管开启并产生电流iu,神经元数值为逻辑"0"时,p型晶体管关闭且无法产生电流。其中,第一供应电压可为3.3v,开启电压(onvoltage)可为接地电压,关闭电压(offvoltage)可为3.3v。
相同地,非易失性存储单元631~63m可由mtp存储单元、otp存储单元或者掩膜式只读存储单元来实现。乘积累加电路61中的非易失性存储单元631~63m可储存一比特的神经元连接权重w1,1~wm,1。当非易失性存储单元为关闭状态(offstate)时,其电阻值非常大,电流无法通过非易失性存储单元,视为神经元连接权重为"逻辑0"。当非易失性存储单元为开启状态(onstate)时,其电阻值较小,电流可通过非易失性存储单元,视为神经元连接权重为"逻辑1"。
因此,乘积累加电路61于应用阶段所产生的输出电流io1即为:
再者,每个乘积累加电路61~6j的输出端o1~oj连接至对应的转换电路(convertingcircuit)691~69j,用以将j个输出电流io1~ioj转换为下一层的一比特的神经元数值dout_1~dout_j。举例来说,转换电路691~69j为电流比较器(currentcomparator),当输出电流io1大于参考电流时,则下一层的神经元数值dout_1为"逻辑1"。当输出电流io1小于参考电流时,则下一层的神经元数值为"逻辑0"。
请参照图7,其所绘示为本发明第五实施例的乘积累加电路及其乘积累加电路组。乘积累加电路组包括j个乘积累加电路71~7j,每一个乘积累加电路71~7j可产生对应的输出电流io1~ioj。每一个乘积累加电路71~7j的结构相同,以下仅介绍乘积累加电路71。
乘积累加电路71包括:m个电流源711~71m以及m个非易失性存储单元731~73m。其中,乘积累加电路71的m个输入端接收前一层的m个一比特的神经元数值din_1~din_m,m个电流源711~71m受控于m个神经元数值din_1~din_m。再者,乘积累加电路71包括m条电流路径(currentpath),每一条电流路径包括电流源与非易失性存储单元。m条电流路径的连接关系类似于第一实施例的乘积累加电路300,此处不再赘述。
相较于第四实施例,第五实施例的差异在于电流源的构造,以下介绍电流源711。电流源711由二个p型晶体管所组成,电流源711包括开关晶体管(switchingtransistor)与偏压晶体管(biastransistor)。在电流源711中,偏压晶体管的栅极端接收偏压电压(biasvoltage,vb),偏压晶体管的第一漏/源端接收第一供应电压,偏压晶体管的第二漏/源端连接至开关晶体管的第一漏/源端,开关晶体管的第二漏/源端连接至非易失性存储单元731的第一端,开关晶体管的栅极端接收对应的一比特的神经元数值din_1。
根据本发明的第五实施例,所有电流源711~71m中的偏压晶体管有相同的尺寸(size)。因此,当任一个电流源711~71m动作时,即可产生的电流大小为iu。
举例来说,将"逻辑1"的神经元数值定义为开关晶体管的开启电压(onvoltage),将"逻辑0"的神经元数值定义为开关晶体管的关闭电压(offvoltage)。因此,神经元数值为逻辑"1"时,开关晶体管开启使得电流源动作并产生电流iu,神经元数值为逻辑"0"时,开关晶体管关闭使得电流源不动作且无法产生电流。其中,第一供应电压可为3.3v,开启电压(onvoltage)可为接地电压,关闭电压(offvoltage)可为3.3v。
因此,乘积累加电路71于应用阶段所产生的输出电流io1即为:
再者,每个乘积累加电路71~7j的输出端o1~oj连接至对应的转换电路791~79j,用以将j个输出电流io1~ioj转换为下一层的一比特的神经元数值dout_1~dout_j。举例来说,转换电路791~79j为电流比较器(currentcomparator),当输出电流io1大于参考电流时,则下一层的神经元数值dout_1为"逻辑1"。当输出电流io1小于参考电流时,则下一层的神经元数值为"逻辑0"。
由以上的说明可知,本发明提出一种运用于二进制类神经网络系统的乘积累加电路。在乘积累加电路的每一条电流路径中,利用非易失性存储单元来储存一比特的神经元连接权重,并利用前一级的一比特的神经元数值来控制电流源,进而达成运用于二进制类神经网络系统的乘积累加电路。
再者,经过适当地修改,更可使本发明的乘积累加电路运用于多比特类神经网络系统,以下简单介绍。
请参照图8,其所绘示为可运用于多比特类神经网络系统的乘积累加电路。乘积累加电路800包括:m个子乘积累加电路81~8m,每个子乘积累加电路81~8m接收对应的前一层神经元数值din_1~din_m。其中,每一个神经元数值din_1~din_m皆为n比特的二进制码(n-bitbinarycode),且n大于1。
再者,每个子乘积累加电路81~8m有相同的结构,以下仅介绍子乘积累加电路81。子乘积累加电路81包括n个电流源811~81n及n个非易失性存储单元821~82n。其中,由于前一层神经元数值din_1有n个比特b11~bn1,所以子乘积累加电路81的n个输入端对应地接收神经元数值din_1的n比特b11~bn1。再者,n个电流源811~81n受控于神经元数值din_1的n比特b11~bn1。
另外,每个非易失性存储单元821~82n皆可储存一比特的神经元连接权重w11~wn1。亦即,所有n个非易失性存储单元821~82n共可储存n比特的神经元连接权重。再者,非易失性存储单元821~82n可由mtp存储单元、otp存储单元或者掩膜式只读存储单元来实现。
在子乘积累加电路81包括n条电流路径(currentpath)并联(parallelconnected)于第一供应电压vss与输出端o之间。每一条电流路径包括电流源与非易失性存储单元。在第一电流路径中,电流源811受控于神经元数值din_1的最低比特(lsb)b11。在第二电流路径中,电流源812受控于神经元数值din_1的次低比特b21。依此类推,在第n电流路径中,电流源81n受控于神经元数值din_1的最高比特(msb)bn1。
根据本发明的实施例,电流源811~81n产生的电流大小相关于神经元数值din_1的比特次序。举例来说,神经元数值din_1的最低比特(lsb)b11所控制的电流源811可以产生的电流大小为iu,神经元数值din_1的次低比特b21所控制的电流源812可以产生的电流大小为2倍iu,神经元数值din_1的最高比特bn1所控制的电流源81n可以产生的电流大小为(2n-1)倍iu。
基本上,乘积累加电路800于应用阶段时,乘积累加电路800的输出端o会接收第二供应电压vd,且第二供应电压vd会大于第一供应电压vss。
再者,乘积累加电路800于应用阶段时,根据前一层的m个神经元数值din_1~din_m,以及非易失性存储单元821~82n与841~84n储存的一比特的神经元连接权重w11~n1与w1m~wnm,即可在乘积累加电路800的输出端o产生输出电流io:
综上所述,虽然本发明已以较佳实施例公开如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视后附的权利要求书所界定者为准。
【符号说明】
100:类神经网络系统
102:手写板
110:输入层
120:隐藏层
130:输出层
200,251~25j,300,41~4j,51~5j,61~6j,71~7j,800:乘积累加电路
250:乘积累加电路组
260:数字模拟转换器
270:模拟数字转换器
301~30m,411~41m,421~42m,4j1~4jm,511~51m,521~52m,5j1~5jm:电流源
311~31m,431~43m,441~44m,451~45m,531~53m,541~54m,551~55m:存储单元
611~61m,621~62m,6j1~6jm,711~71m,721~72m,7j1~7jm:电流源
631~63m,641~64m,6j1~6jm,731~73m,741~74m,751~75m:存储单元
81~8m:子乘积累加电路
811~81n,831~83n:电流源
821~82n,841~84n:存储单元