类神经网络系统的设计方法与流程

文档序号:17132012发布日期:2019-03-16 01:24阅读:221来源:国知局
本发明是有关于类神经网络系统(neuralnetworksystem),且特别是有关于一种类神经网络系统的设计方法。
背景技术
::近年来,深度学习演算法(deeplearningalgorithm)广泛的被运用在许多系统上以提供智慧处理能力,例如数据辨识(dataclassification)和物件检测(objectdetection)。为了在应用上达到高准确率(highinferenceaccuracy),深度学习模型(deeplearningmodel)的架构变的越来越复杂。因为这些被训练的模型(pre-trained)大小增加,故外部记忆体的容量也必须增加以便用来储存模型中的数据。然而,外部记忆体的数据读取时间较长,反而会限制住系统效能。技术实现要素:本发明有关于一种类神经网络的设计方法,包括下列步骤:定义一类神经网络系统,其具有一原始的权重群组,其中该原始的权重群组包括多个神经元连接权重;进行一训练程序,以获得该原始的权重群组中该些神经元连接权重的数值;设定一临限值,使得该些神经元连接权重被区分为一第一部份神经元连接权重与一第二部份神经元连接权重,且该第一部份神经元连接权重的绝对值小于该临限值;将该第一部份神经元连接权重的数值修改为0;以及形成一修改的权重群组,包括修改为0的该第一部份神经元连接权重与该第二部份神经元连接权重。为了对本发明的上述及其他方面有更佳的了解,下文特举实施例,并配合所附图式详细说明如下。附图说明图1所绘示为辨识数字的类神经网络系统示意图。图2所绘示为不同尺寸用于辨识数字的类神经网络系统的准确度与权重数目示意图。图3所示为各种储存装置的特性示意图。图4a为类神经网络系统的神经元连接权重的数值分布曲线示意图。图4b为类神经网络系统中临限值(wth)的设定与辨识准确度之间的关系示意图。图5所绘示为本发明类神经网络系统的设计方法流程图。图6a所绘示为运用于本发明类神经网络系统的权重群组的储存格式及其映射示意图。图6b所绘示为建立修改的权重群组的详细运作方法。图7a所绘示为本发明类神经网络系统的硬件架构。图7b所绘示为译码电路示意图。具体实施方式以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。请参照图1,其所绘示为辨识数字的类神经网络系统示意图。举例来说,利用类神经网络系统100运用于辨识手写板102上所书写的数字,且手写板102是由784(28×28)个感应点所建构而成。类神经网络系统100包括输入层(inputlayer)110、隐藏层(hiddenlayer)120与输出层(outputlayer)130。基本上,手写板上的每个感应点会对应到输入层的一个输入神经元(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~h30。因此,输入层110与隐藏层120之间有734×30个神经元连接权重(ih0,0~ih783,0)、(ih0,1~ih783,1)~(ih0,29~ih783,29)。同理,隐藏层120的30个神经元h0~h30对应地连接至输出层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)。每一层的神经元的计算方式为:将前一层的每个神经元乘以对应的神经元连接权重后并加总之。以隐藏层120的神经元h0为例,同理,隐藏层120中其他神经元h1~h29也是以相同的方式来计算。同理,输出层130的输出神经元而输出层130其他神经元o1~o9也是以相同的方式来计算。在实际应用类神经网络系统100之前,需要进行训练程序(trainingphase),以获得权重群组中所有神经元连接权重的数值。举例来说,经过多次的迭代训练(iterationsoftraining)并获得所有神经元连接权重的数值后,即可获得一个训练完成的(well-trained)类神经网络系统100。在应用程序(applicationphase)时,即可在手写板102上写入数字,并由类神经网络系统100来进行辨识。如图1所示,于手写板102上写入数字7后,输出层130中的输出神经元o7输出最高的数值,亦即类神经网络系统100辨识出数字7。当然,图1的类神经网络系统100仅是一个范例。对于更复杂的类神经网络系统,可以使用多个隐藏层来让类神经网络具备更佳的辨识能力,而每个隐藏层的尺寸也不限定。除了上述神经元的计算方式之外,有的类神经网络系统的神经元在计算时不仅是将前一层的每个神经元乘以对应的神经元连接权重并加总外,还会再加上一偏压值(bias)。以隐藏层120的神经元h0为例,其中,bih0表示该偏压值。换言之,此类神经网络系统的权重群组中包括多个神经元连接权重以及多个偏压值。而在训练程序后,即可获得权重群组中所有神经元连接权重的数值以及所有偏压值的数值。基本上,上述类神经网络的偏压值bih0也可视为一个神经元连接权重。亦即,上述的式子中,也可以视为一个神经元乘以偏压值bih0,只是偏压值bih0所对应的神经元是一个虚拟的神经元,其数值永远为1。请参照图2,其所绘示为不同尺寸用于辨识数字的类神经网络系统的准确度与权重数目示意图。如图2所示,当类神经网络系统仅有输入层与输出层时,亦即尺寸为784-10,神经元连接权重的数目约有7.85k个,其辨识准确度(accuracy)约为86%。当类神经网络系统的复杂度增加,具有输入层、一个隐藏层与输出层时,尺寸为784-1000-10,神经元连接权重的数目约有795.01k个,其辨识准确度约上升至92%。再者,当类神经网络系统的复杂度再增加,具有输入层、二个隐藏层与输出层时,尺寸为784-1000-500-10,神经元连接权重的数目约有1290.51k个,其辨识准确度约上升至96%。明显地,类神经网络系统越复杂,辨识度会明显地提升,而权重群组中的神经元连接权重的数目也会增加。虽然复杂的类神经网络系统可以提升辨识准确度,但是数目过多的神经元连接权重会导致数据储存和读取的问题。以一个有名的alexnet影像辨识系统(imagerecognitionsystem)为例,其具备4层,且尺寸为43264-4096-4096-1000。如果利用16bit的浮点数目(floatingpointnumber)来表示一个神经元连接权重,则共需要约396mbytes的储存空间。如图3所示,其为各种储存装置的特性示意图。为了要选择适合的储存装置运用于类神经网络系统,需要考量的因素为储存装置的容量(capacity)以及存取延迟(accesslatency)。如图3所示,sram的存取延迟最短(小于10ns),有最快的数据存取速度。然而,储存过多的数据量会使得sram功率耗损过于严重。另外,快闪记忆体(flashmemory)有最大的容量来储存数据,但是其存取延迟最长(约在25~200μs),有最慢的数据存取速度,也不适合运用于需要高效能运算(highperformancecomputation)的类神经网络系统。因此,类神经网络系统较适合用dram来作为储存装置来储存所有的神经元连接权重,而处理单元(processingunit)可存取dram中的神经元连接权重并进行运算。在应用程序(applicationphase)时,造成计算的延迟(computationallatency)原因包括:外部储存装置的数据存取时间(dataaccesstimefromexternalstoragedevice)以及处理单元自身的计算时间。由于dram的数据存取时间远大于处理单元自身的计算时间,因此整个类神经网络系统效能瓶颈会在于外部储存装置的数据存取时间。以下以辨识数字的类神经网络系统来进行分析,并提出本发明类神经网络系统的设计方法。假设辨识数字的类神经网络系统设计为具有一输入层、二隐藏层、与一输出层,其尺寸为784-1000-500-10。若此神经元权重群组包含之前描述的偏压值。则此,类神经网络系统的权重群组共有1290.51k(1290.51×103)个神经元连接权重。而在类神经网络系统的训练程序(trainingphase)后,即可获得权重群组中所有神经元连接权重的数值。如果利用16bit的浮点数目(floatingpointnumber)来表示一个神经元连接权重,则共需要约25.81mbytes的储存空间。接着,于应用程序(applicationphase)时,此训练完成(welltrained)的类神经网络系统即利用权重群组中的神经元连接权重来进行运算,并辨识手写板102所写入的数字,并且辨识准确度可达到96.25%。然而,由于外部储存装置储存了大量的神经元连接权重,使得存取速度影响了处理单元的运算效能。本发明是在相同尺寸的类神经网络系统上,减少外部储存装置的储存数据量,并使得类神经网络系统仍旧保有可接受的辨识准确度。说明如下。经由分析得知,上述的类神经网络系统约有1290.51k个神经元连接权重。且在训练程序(trainingphase)后发现权重群组中有大量的神经元连接权重的数值非常接近0。因此,本发明设定一临限值(wth),用以修改权重群组中神经元连接权重的数值。举例来说,当神经元连接权重的绝对值小于该临限值(wth)时,将该神经元连接权重的数值修改为0。亦即,请参照图4a,其为类神经网络系统的神经元连接权重的数值分布曲线示意图。当类神经网络系统经过训练程序(trainingphase)后,由分布曲线可知有大量的神经元连接权重的实际数值非常接近0。如图4a所示,将临限值(wth)设定为0.03,并将神经元连接权重的绝对值小于该临限值(wth)的神经元连接权重修改为0。请参照图4b,其为类神经网络系统中临限值(wth)的设定与辨识准确度之间的关系示意图。当临限值(wth)设定为0时,类神经网络系统中的神经元连接权重皆未被修改,此时神经元连接权重的稀疏度(sparsity)约为70%,且辨识准确度(accuracy)约为96.25%。当临限值(wth)越来越大时,类神经网络系统中的神经元连接权重被修改的数目逐渐增加,此时类神经网络系统的辨识准确度有下降的趋势。当临限值(wth)设定为0.04时,稀疏度为90.85%,亦即神经元连接权重中,有90.85%的数目为0,而此时类神经网络系统的辨识准确度仍有95.26%。当临限值(wth)设定为0.05时,神经元连接权重中,约有98.5%的数目为0,而此时类神经网络系统的辨识准确度已经大幅下降至78%。由以上的说明可知,如果适当地修改权重群组中神经元连接权重的数值,可以大幅降低外部储存装置的储存数据量,并保持可接受的辨识准确度。请参照图5,其所绘示为本发明类神经网络系统的设计方法流程图。首先,定义一类神经网络系统,其具有一原始的权重群组,包括多个神经元连接权重(步骤s510)。举例来说,类神经网络系统的尺寸为x-y-z,则权重群组中至少包括(xy+yz)数目的神经元连接权重。进行一训练程序,以获得该原始的权重群组中该些神经元连接权重的数值(步骤s512)。设定一临限值(wth),使得该些神经元连接权重被区分为一第一部份神经元连接权重与一第二部份神经元连接权重,且该第一部份神经元连接权重的绝对值小于该临限值(步骤s514)。之后,将该第一部份神经元连接权重的数值修改为0(步骤s516)。接着,形成一修改的权重群组,包括修改为0的该第一部份神经元连接权重与该第二部份神经元连接权重(步骤s518)。当修改的权重群组完成之后,此类神经网络系统即可进入一应用程序,使得类神经网络系统利用该修改的权重群组来进行运算。请参照图6a,其所绘示为运用于本发明类神经网络系统的权重群组的储存格式及其映射示意图。假设经过训练程序后,获得原始的权重群组(originalweightinggroup)包括八个神经元连接权重(w0~w7),其数值依序为0.03、0.15、0.02、0.01、0.09、-0.01、-0.12、0.03。当然,本发明并不限定于原始的权重群组中神经元连接权重的数目,任何数目的神经元连接权重所组成的原始的权重群组皆可以运用本发明揭露的方式来变更为修改的权重群组。根据本发明的实施例,储存装置中具有一系数表(coefficienttable)以及一非零权重表(non-zeroweightingtable)。于比较程序(comparingprocess)时,所有的神经元连接权重的绝对值与临现值(wth=0.04)进行比较。当神经元连接权重的绝对值大于等于临限值(wth=0.04)时,该神经元连接权重的数值储存于系数表中,且指示位(indicatingbit)设定为“1”存于非零权重表中,以指示该神经元连接权重的数值不为零。再者,当神经元连接权重的绝对值小于临限值(wth=0.04)时,该神经元连接权重的数值不会被储存于系数表中,且指示位设定为“0”存于非零权重表中,以指示该神经元连接权重的数值为零。因此,于比较程序之后,系数表中仅储存绝对值大于等于临限值(wth=0.04)的数值,亦即c0=0.15、c1=0.09、c2=-0.12。而非零权重表中的指示位(a0~a7)将一对一地对应至修改的权重群组(w0’~w7’)。换言之,如果非零权重表中有p个“1”,则代表系数表中会储存p个绝对值大于等于临限值(wth=0.04)的数值。如图6a所示,非零权重表中包括7个指示位(a0~a7)依序为0、1、0、0、1、0、1、0。用以指示系数表中储存3个绝对值大于等于临限值(wth=0.04)的数值。由以上的说明可知,利用上述的数据格式储存于储存装置后,仅需要的储存空间为(dstorage=b·(1-sp)·nweight+nweight)位(bits)。其中,b为每个神经元连接权重所需的位数(例如16位)、sp为稀输度、nweight为神经元连接权重的数目。以图4b,临限值(wth=0.04)为例类神经网络系统为例,需要的储存空间为[(16)×(1-90.85%)×1290510+1290510]位(bit),约为1.53mbytes。明显地,相较于原始的权重群组所需的储存空间(25.81mbytes),本发明类神经网络系统所需的储存空间将大幅减少,因此可以有效地降低处理单元与外部储存空间之间的存取时间。另外,由系数表以及非零权重表可建立出修改的权重群组。由于非零权重表可一对一地对应至修改的权重群组。因此,当非零权重表中的一个指示位为“0”时,代表修改的权重群组中,对应的神经元连接权重的数值为0;当非零权重表中的一个指示位为“1”时,则由系数表找出对应的神经元连接权重的数值。在图6a中,非零权重表中指示位a0为“0”,代表修改的权重群组中神经元连接权重w0’的数值为0。非零权重表中指示位a1为“1”,代表修改的权重群组中神经元连接权重w1’的数值为系数表中的c0,即w1’=0.15。非零权重表中指示位a2为“0”,代表修改的权重群组中神经元连接权重w2’的数值为0。非零权重表中指示位a3为“0”,代表修改的权重群组中神经元连接权重w3’的数值为0。非零权重表中指示位a4为“1”,代表修改的权重群组中神经元连接权重w4’的数值为系数表中的c1,即w4’=0.09。非零权重表中指示位a5为“0”,代表修改的权重群组中神经元连接权重w5’的数值为0。非零权重表中指示位a6为“1”,代表修改的权重群组中神经元连接权重w6’的数值为系数表中的c2,即w6’=-0.12。非零权重表中指示位a7为“0”,代表修改的权重群组中神经元连接权重w7’的数值为0。而依此类推即可回复修改的权重群组,并运用于类神经网络系统。请参照图6b,其所绘示为建立修改的权重群组的详细运作方法。首先,定义累加数值(accumulationvalue)s,其中s0=0,且因此,s0=0,s1=0(因为s1=a0=0),s2=1(因为s2=a0+a1),s3=1(因为s3=a0+a1+a2),s4=1(因为s4=a0+a1+a2+a3),s5=2(因为s5=a0+a1+a2+a3+a4),s6=2(因为s6=a0+a1+a2+a3+a4+a5),s7=3(因为s7=a0+a1+a2+a3+a4+a5+a6)。依此类推。再者,利用非零权重表中的指示位与累加数值,即可由系数表中建立修改的权重群组。亦即,神经元连接权重wi'=ai×csi。因此,可以获得以下的神经元连接权重:w0’=a0×cs0=a0×c0=0×0.15=0w1’=a1×cs1=a1×c0=1×0.15=0.15w2’=a2×cs2=a2×c1=0×0.09=0w3’=a3×cs3=a3×c1=0×0.09=0w4’=a4×cs4=a4×c1=1×0.09=0.09w5’=a5×cs5=a5×c2=0×-0.12=0w6’=a6×cs6=a6×c2=1×-0.12=-0.12w7’=a7×cs7=a7×c3=0×c3=0请参照图7a,其所绘示为本发明类神经网络系统的硬件架构。类神经网络系统的硬件架构700包括一储存装置710、与一处理单元720。其中,储存装置710为dram,例如ddr3dram。而储存装置710中储存原始权重群组702、系数表704与非零权重表706。处理单元720中包括:记忆体控制器(memorycontroller)731、管理引擎730与计算引擎740。管理引擎730可将原始的权重群组702转换为系数表704与非零权重表706。另外,管理引擎730可根据系数表704与非零权重表706来建立修改的权重群组,并传递至计算引擎740。而计算引擎740即根据修改的权重群组来进行计算。管理引擎730包括:一比较电路(comparingcircuit)733、一系数缓冲器(coefficientbuffer)735、非零缓冲器(non-zerobuffer)737、译码电路(transcodingcircuit)739。记忆体控制器731连接至储存装置710,用以存取储存装置710中的数据。根据本发明的实施例,于比较程序时,记忆体控制器731读取(read)储存装置710内的原始权重群组702,并且依序将所有的神经元连接权重w1、w2、w3……传递至比较电路733。比较电路733根据设定的临限值(wth)来依序比较神经元连接权重w1、w2、w3……。当神经元连接权重的绝对值大于等于临限值(wth)时,将神经元连接权重储存入系数缓冲器735,并且产生“1”的指示位储存入非零缓冲器737。再者,当神经元连接权重小于临限值(wth)时,不将神经元连接权重储存入系数缓冲器735,并且产生“0”的指示位储存入非零缓冲器737。再者,系数缓冲器735中的数据可以经由记忆体控制器731写入(write)至储存装置710中的系数表704。同理,非零缓冲器737中的指示位可以经由记忆体控制器731写入(write)至储存装置710中的非零权重表706。因此,当原始权重群组702中的所有神经元连接权重输入比较电路733之后,即完成系数表704与非零权重表706。请参照图7b,其所绘示为译码电路示意图。译码电路739包括一多工器(multiplexer)752、累加器(accumulator)754与乘法器(multiplier)756。于应用程序(applicationphase)时,计算引擎740需要修改的权重群组。因此,记忆体控制器731读取(read)储存装置710中的系数表704与非零权重表706,并将系数表704中的系数c0、c1、c2…与非零权重表706中的指示位a0、a1、a2、a3、a4…输入译码电路739中。多工器752的输入端输入系数表704中的系数c0、c1、c2…。再者,累加器754累加指示位a0、a1、a2、a3、a4…,并输出累加数值si至多工器752的选择端。另外,乘法器756的第一输入端连接至多工器752的输出端,第二输入端接收指示位a0、a1、a2、a3、a4…,输出端依序输出修改的权重群组中的所有神经元连接权重w1’、w2’、w3’…。换言之,译码电路739可执行wi'=ai×csi的运算,图7a与图7b所示的电路只是本发明运用于类神经网络系统硬件电路。当然本发明并不限定于此,在此领域的技术人员,可以利用其他的电路或软件程式来完成本发明将原始权重群组转换为修改的权重群组,并且利用各种方式来进行计算。举例来说,图7a的类神经网络系统的部份或全部硬件电路功能可利用手持式装置、电脑主机来实现。再者,如利用云端电脑主机实现一类神经网络系统时,经一训练程序,在获得该原始的权重群组中该些神经元连接权重的数值后,就以软件程式或利用其他的电路建立了系数表和非零权重表。此时的云端电脑主机便实现了处理单元720中的管理引擎730的大部份功能。而手持装置或者是物联网装置(iotdevice,internetofthingsdevice)通过网络或者其他方法以获得系数表和非零权重表,便可实现计算引擎740和译码电路739的功能。因此,本发明的优点在于提出一种类神经网络系统的设计方法。在设计的过程中,利用一临限值(wth)与原始权重群组中的神经元连接权重的比较结果来产生一系数表与一非零权重表。于应用程序时,根据一系数表与一非零权重表来产生一修改的权重群组,并运用于类神经网络系统。综上所述,虽然本发明已以实施例揭露如上,然其并非用以限定本发明。本发明所属
技术领域
:中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视后附的申请专利范围所界定者为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1