用于生成不动点神经网络的方法和装置与流程

文档序号:18198973发布日期:2019-07-17 06:02阅读:273来源:国知局
用于生成不动点神经网络的方法和装置与流程

本申请要求于2017年12月8日在韩国知识产权局提交的韩国专利申请第10-2017-0168477号的优先权,其公开内容通过引用全部并入本文中。

与示例实施例一致的方法和装置涉及神经网络,并且更具体地,涉及用于生成不动点神经网络的方法和装置。



背景技术:

神经网络指的是模仿动物大脑中的生物网络的计算机架构。随着神经网络技术发展,对各种电子系统进行了积极的研究,这些系统被配置为使用基于神经网络来操作的神经网络装置来分析输入数据并提取有效信息。

神经网络装置需要处理关于复杂输入数据的大量操作。为了使神经网络装置实时分析输入数据并提取信息,需要一种用于有效地处理神经网络的操作的技术。特别地,诸如智能手机的、具有低功耗和高性能的系统具有有限的资源,因此需要一种减少用于处理复杂的输入数据所需要的操作的数量并且使人工神经网络的性能最大化的技术。



技术实现要素:

本申请提供了通过与浮点神经网络相对应的不动点神经网络来最大化神经网络的目标性能的方法和装置。

根据示例实施例的一方面,提供了生成神经网络系统的不动点神经网络的方法,该方法包括:选择神经网络的至少一个层作为对象层,其中神经网络包括多个层,多个层中的每一层与多个量化参数中的相应的一个量化参数相对应;形成候选参数集,该候选参数集包括关于与对象层相对应的多个量化参数的量化参数的候选参数值;基于神经网络的网络性能水平从候选参数值当中确定更新参数值,其中网络性能水平中的每一个对应于候选参数值中的相应的一个候选参数值;以及基于更新参数值更新关于对象层的量化参数。

根据另一示例实施例的一方面,提供了用于生成不动点神经网络的装置,该装置包括:存储器;以及处理器,其被配置为执行存储在存储器中的指令以生成不动点神经网络,选择第一不动点神经网络的多个层中的一个作为对象层,并且通过基于不动点神经网络的网络性能更新对象层的量化参数来生成第二不动点神经网络。

根据又一示例实施例的一方面,提供了一种生成神经网络系统的不动点神经网络的方法,该方法包括:从第一不动点神经网络的多个层当中选择至少一个层作为对象层;基于关于对象层的量化参数设置的参数值生成候选参数值;确定网络性能水平,其中网络性能水平中的每一个分别对应于候选参数值中的相应的一个候选参数值;并且基于多个候选参数值的候选参数值来更新量化参数,候选参数值对应于最高网络性能水平。

附图说明

根据以下结合附图的详细描述,将更清楚地理解示例实施例,在附图中:

图1是根据示例实施例的神经网络系统的框图;

图2示出了根据示例实施例的应用于神经网络系统的神经网络结构的示例;

图3是根据示例实施例的生成不动点神经网络的方法的流程图;

图4是根据示例实施例的确定图3的更新参数值的操作的流程图;

图5是用于描述根据示例实施例的导出与候选参数值中的每一个相对应的网络性能水平的方法的视图;

图6是根据示例实施例的生成不动点神经网络的方法的流程图;

图7是根据示例实施例的生成图6的不动点神经网络的方法的流程图;

图8、图9、图10a和图10b是根据一个或多个示例实施例的示出基于更新的量化参数的顺序的示例的视图;

图11是根据示例实施例的生成图6的不动点神经网络的方法的流程图;

图12是根据示例实施例的神经网络系统和量化系统的框图;

图13是根据示例实施例的计算系统的框图;以及

图14是根据示实施例的便携式计算设备的框图。

具体实施方式

在下文中,将通过参考附图来详细描述示例实施例。

图1是根据示例实施例的神经网络系统10的框图,并且图2示出了根据示例实施例的应用于神经网络系统10的神经网络nn的结构的示例。

神经网络系统10可以向另一系统(诸如移动计算系统、车辆计算系统等)提供神经网络(也被称为人工神经网络),或可以驱动神经网络。

神经网络系统10可以是被配置为提供(或驱动)神经网络的系统。神经网络系统10可以被称为神经网络装置。例如,神经网络系统10可以包括具有各种处理功能的计算设备,诸如生成神经网络的功能、训练(或学习)神经网络的功能、基于浮点神经网络生成不动点神经网络的功能、或重新训练神经网络的功能。神经网络系统10可以包括至少一个处理器和存储器以执行功能。神经网络系统10可以包括但不限于诸如台式计算机/服务器等的固定计算系统以及诸如膝上型计算机、智能电话等的移动计算系统。

参考图1,神经网络系统10可以包括量化模块110和参数调节模块120(也称为量化参数调节模块)。根据示例实施例,量化模块110可以被包括在被配置为与神经网络系统10通信的附加量化系统中。

量化模块110可以通过使用浮点数量化神经网络来使用不动点数生成神经网络。也就是说,量化模块110可以通过量化浮点神经网络nn_fo将浮点神经网络nn_fo转换成第一不动点神经网络nn_fx1。

参考图2,神经网络nn可以包括顺序处理的l(1)至l(n)的多个层,并且具有该多层结构的神经网络nn可以被称为深度神经网络(deepneuralnetwork,dnn)或深度学习架构。神经网络nn可以包括但不限于各种类型的神经网络模型(诸如卷积神经网络(convolutionneuralnetwork,cnn)(诸如googlenet、alexnet、vgg网络等)、具有卷积神经网络(regionwithconvolutionneuralnetwork,r-cnn)的区域、区域提议网络(regionproposalnetwork,rpn)、递归神经网络(recurrentneuralnetwork,rnn)、基于堆叠的深度神经网络(stacking-baseddeepneuralnetwork,s-dnn)、状态空间动态神经网络(state-spacedynamicneuralnetwork,s-sdnn)、反卷积网络、深度置信网络(deepbeliefnetwork,dbn)、受限制的波尔兹曼机器(restrictedboltzmanmachine,rbm)、完全卷积网络、长短期记忆(longshort-termmemory,lstm)网络、分类网络等)中的至少一个。

神经网络nn可以经由多个层l(1)至l(n)基于输入数据in执行操作,并且可以基于操作的结果生成输出数据out。输出数据out可以包括至少一个信息信号。例如,输入数据in可以是帧的图像,并且输出数据out可以包括关于包括在图像中的对象的识别信息(或对应于对象的多个概率)。

多个层l(1)至l(n)中的每一个可以包括至少一个神经元(或处理节点)nr。神经元nr中的每一个的输入操作可以被称为输入激活操作,并且神经元nr中的每一个的输出操作可以被称为输出激活操作。可以基于权重(例如,w21至w33)、偏差(例如,b21至b34)和激活函数(例如,σ2和σ3)来确定激活操作(例如,a11至a34)。

相邻层的神经元nr可以互相连接并可以交换数据。一个神经元nr可以通过从其他神经元nr接收数据来执行操作,并且可以将操作的结果输出到其他神经元nr。例如,第二层l(2)的神经元nr可以通过从第一层l(1)的神经元nr接收数据来执行操作,并且可以将操作的结果提供给第三层l(3)的神经元nr。相邻层的神经元nr可以完全地或局部地互相连接。根据示例实施例,一个或多个神经元nr可以共享权重。

基于这种多层结构,神经网络nn可能需要计算复杂度,并且因此可能需要大量的计算资源。经由训练(或学习)在神经网络系统10中生成的神经网络nn可以是浮点神经网络nn_fo,其可能比不动点神经网络需要更多的计算资源。量化模块110可以通过经由量化将浮点神经网络nn_fo转换成第一不动点神经网络nn_fx1来减少神经网络nn的计算复杂度。

量化可以指将输入值限制为值的离散集合的过程,该集合小于输入值的数量。例如,可以通过将实数四舍五入到最接近的整数来将实数映射到整数值。例如,如上所述,神经网络nn中的量化可以应用于神经网络参数,其中神经网络参数可以包括激活、权重和偏差等。

在浮点神经网络nn_fo中使用的浮点数可以包括符号、指数和分数或尾数(mantissa),其中指数和分数或尾数中的每一个可以具有预先排布的比特长度(比特数)。不动点神经网络中使用的不动点数可以包括整数部分和分数部分,其中比特长度(即分数部分的分数长度(fractionlength,fl))可以变化。在一些示例实施例中,不动点数的整数部分可以包括符号比特。并且,表示不动点数的比特长度可能少于表示浮点数的比特长度。

量化模块110可以通过确定关于神经网络参数的量化参数(诸如分数长度、符号、比特长度等)来将浮点神经网络nn_fo转换成不动点神经网络,即第一不动点神经网络nn_fx1。

量化模块110可以通过考虑神经网络nn被部署到的设备(例如,移动设备、嵌入式设备等)的处理性能来执行量化。神经网络nn被部署到的设备可以包括例如自主车辆、机器人设备、智能手机、平板设备、增强现实(augmentedreality,ar)设备、物联网(internetofthings,iot)设备等,其被配置为通过使用神经网络来执行语音识别、图像识别等。

并且,量化模块110可以执行量化使得量化误差可以最小化。也就是说,量化模块110可以通过使用各种量化方法来计算量化参数,经由该量化参数最小化量化误差。例如,量化模块110可以基于与神经网络参数的分布(即神经网络参数值的分布)相关的至少一个时刻(例如,平均值、方差等)、神经网络参数的分布的近似密度函数(approximateddensityfunction,adf)、神经网络参数的统计特征(例如,广义伽马分布)等来计算量化参数,经由该量化参数最小化量化误差。例如,量化模块110可以计算分数长度以最小化量化误差。

量化模块110可以执行关于多个层l(1)至l(n)中的每一个的量化,并且因此可以确定关于多个层l(1)至l(n)中的每一个的量化参数。从量化模块110输出的第一不动点神经网络(nn_fx1)可以包括分别关于多个层l(1)至l(n)的量化参数(例如,qp(1)、qp(2)、...、qp(n))。

在经由量化模块110量化浮点神经网络nn_fo的过程中,网络性能(诸如精确度)可能会降低。因此,第一不动点网络nn_fx1可能具有与浮点神经网络nn_fo相比降低的网络性能。

参数调节模块120可以调节第一不动点神经网络nn_fx1的量化参数。也就是说,参数调节模块120可以基于网络性能通过调节(或更新)来自多个层l(1)至l(n)当中的至少一个层的量化参数来生成第二不动点神经网络nn_fx2,在该不动点神经网络nn_fx2中改变至少一个层的量化参数。第二不动点神经网络nn_fx2可以包括分别关于多个层l(1)至l(n)的量化参数(例如,qp(1)、qp(2)'、...、qp(n)'),其中第二不动点神经网络nn_fx2的一个或多个量化参数可以不同于第一不动点神经网络nn_fx1的量化参数。此处,网络性能指的是神经网络nn的目标性能,并且可以包括例如基于至少一个参考导出的神经网络nn的精确度。网络性能可以基于被配置为评估神经网络nn的目标函数的各种度量或评估参考来导出。

参数调节模块120可以从第一不动点神经网络nn_fx1的多个层l(1)至l(n)当中选择量化参数将关于该层被更新的至少一个层作为对象层,并且可以形成包括与对象层的量化参数有关的候选参数值的候选参数集。根据示例实施例,候选参数值可以基于预设的量化参数值经由算术运算来导出。根据示例实施例,候选参数值可以基于在量化处理期间获得的信息来导出。

参数调节模块120可以通过将候选参数值中的每一个应用于对象层的量化参数来驱动第一不动点神经网络nn_fx1,并且可以基于驱动第一不动点神经网络nn_fx1的结果导出网络性能,即对应于候选参数值中的每一个的网络性能水平。参数调节模块120可以从候选参数值当中将与最高网络性能水平相对应的候选参数值确定为更新参数值,并且可以基于更新参数值来更新对象层的量化参数。因此,参数调节模块120可以基于网络性能来更新对象层的量化参数。

根据示例实施例,参数调节模块120可以更新关于第一不动点神经网络nn_fx1的多个层l(1)至l(n)中的至少一个的量化参数。例如,参数调节模块120可以顺序地更新关于第一不动点神经网络nn_fx1的多个层l(1)至l(n)的量化参数。例如,参数调节模块120可以基于预定的顺序更新多个层l(1)至l(n)(即第一层l(1)至第n层l(n))的量化参数。例如,参数调节模块120可以从作为最后层的第n层l(n)向第一层l(1)、沿后向方向更新关于多个层l(1)至l(n)的量化参数。可替代地,参数调节模块120可以如上所述从第n层l(n)开始,沿后向方向更新关于多个层l(1)至l(n)的量化参数,并且然后可以沿前向方向更新关于多个层l(1)至l(n)的量化参数,以第n层l(n)结束。

例如,参数调节模块120可以顺序地更新多个层l(1)至l(n)的量化参数,直到网络性能变成等于或高于参考水平的水平为止。然而,示例实施例不限于此。参数调节模块120可以基于所描述的示例顺序和条件的组合或者其他顺序和条件来更新关于第一不动点神经网络nn_fx1的多个层l(1)至l(n)中的一个或多个的量化参数。

如上所述,参数调节模块120可以基于网络性能通过调节第一不动点神经网络nn_fx1的至少一个层的量化参数来生成第二不动点神经网络nn_fx2,其中第二不动点神经网络nn_fx2的网络性能可能高于第一不动点神经网络nn_fx1的网络性能。

如上所述,根据示例实施例的神经网络系统10可以通过调节经由量化生成的第一不动点神经网络nn_fx1的量化参数来生成具有改进性能的第二不动点神经网络nn_fx2。并且,根据示例实施例的神经网络系统10可以通过执行关于浮点神经网络nn_fo的量化来生成第一不动点神经网络nn_fx1,使得量化误差被最小化,并且然后可以通过考虑一般网络性能调节第一不动点神经网络nn_fx1的量化参数来生成第二不动点神经网络nn_fx2。因此,量化过程的复杂度可能不会增加,而不动点神经网络的网络性能可能会提高。在下文中,将参考图3至图12详细描述根据示例性实施例的调节量化参数的方法,即生成其量化参数被更新的不动点神经网络的方法。

图3是根据示例实施例的生成不动点神经网络的方法的流程图。详细地,图3中示出的示例实施例通过调节不动点神经网络的量化参数来生成具有改进的网络性能的不动点神经网络,并且可以由图1的参数调节模块120执行。因此,参考图1描述的方面可以被应用于本示例实施例。

参考图1和图3,参数调节模块120可以在操作s110中生成关于神经网络的不动点神经网络。也就是说,参数调节模块120可以通过量化浮点神经网络来生成不动点神经网络。不动点神经网络(例如,图1的第一不动点神经网络nn_fx1)可以包括多个层,并且可以包括关于多个层中的每一个的神经网络参数的量化参数,诸如激活、偏差、权重等。例如,量化参数可以包括分数长度、比特长度等。根据示例实施例,不动点神经网络由量化模块(图1中的110)生成,并且参数调节模块120可以从量化模块110接收不动点神经网络。

在操作s120中,参数调节模块120可以从不动点神经网络的多个层当中选择其量化参数要被更新的对象层。根据示例实施例,当不动点神经网络包括n个顺序处理的层时,参数调节模块120可以选择多个层中的最后一层(即第n层)作为对象层。参数调节模块120可以从多个层当中选择最能影响神经网络的网络性能的最后一层作为对象层,以便有效地提高网络性能。然而,示例实施例不限于此,并且参数调节模块120可以选择影响神经网络的网络性能的其他层作为对象层。

根据示例实施例,不动点神经网络可以包括并行处理的层(或包括在一个层中的模块),并且参数调节模块120可以选择并行处理的多个层或多个模块作为对象层。

在操作s130中,参数调节模块120可以基于网络性能来确定关于对象层的量化参数的更新参数值。网络性能是神经网络(即不动点神经网络)的目标性能,并且可以包括例如基于至少一个参考导出的神经网络的精确度。例如,当神经网络的目的是执行图像分类时,网络性能可以包括前1精确度和/或前5精确度。当神经网络的目的是执行声音辨识时,网络性能可能包括误字率。根据示例实施例,可以基于在关于浮点神经网络的训练过程的评估中使用的评估参考导出网络性能,不动点神经网络基于该网络性能。此外,可以基于各种度量来导出网络性能以评估神经网络所针对的功能、或评估参考。

参数调节模块120可以确定更新参数值以最大化网络性能。例如,参数调节模块120可以形成多个候选参数值,并且可以从多个候选参数值当中选择经由其最大化神经网络的网络性能的候选参数值,作为关于对象层的量化参数的更新参数值。

参数调节模块120可以在操作s140中基于确定的更新参数值来更新对象层的量化参数。基于量化参数的更新,可以改进不动点神经网络的网络性能。在除了对象层以外的层的情况下,量化参数可以不被更新并且可以保持先前的参数值。因此,可以将更新对象层的量化参数之前的网络性能水平与更新对象层的量化参数之后的网络性能水平进行比较,以便评估对象层的量化参数的更新对于提高不动点神经网络的网络性能的贡献了多少。

图4是确定图3的更新参数值的操作的流程图,并且图5是用于描述导出对应于候选参数值中的每一个的网络性能水平的方法的示例的视图。

参考图4,参数调节模块120可以形成关于对象层的量化参数的候选参数集,并且可以选择包括在候选参数集中的候选参数值中的一个作为更新参数值。

参考图4,在操作s31中,参数调节模块120可以基于关于对象层的量化参数的预设参数值,即当前参数值,形成包括候选参数值的候选参数集。

例如,当分数长度是量化参数时,参数调节模块120可以基于关于对象层lt(t)的当前分数长度值fl(t),形成包括候选参数值(例如,m个候选参数值,其中m是大于或等于2的整数)的候选参数集。候选参数集s(t)可以由等式1表示。

[等式1]

此处,e、是关于对象层lt(t)的第m个候选参数值。

根据示例实施例,参数调节模块120可以基于当前参数值经由算术运算来生成候选参数值。根据另一示例实施例,参数调节模块120可以基于在量化处理中导出的附加信息来生成候选参数值。例如,当前参数值是来自在量化处理中导出的多个参数值当中的参数值,经由该量化处理最小化量化误差,并且来自多个参数值当中的其他参数值(经由该其他参数值量化误差等于或者小于临界值)可以被作为附加信息提供给参数调节模块120。参数调节模块120可以基于当前参数值和附加信息,形成包括参数值(经由该参数值量化误差等于或小于临界值)的候选参数集。

如上参考图3所述,在操作s120中,当参数调节模块120选择并行处理的多个层或模块作为对象层时,参数调节模块120可以将候选参数集形成为对应于多个层或模块的参数值的集合。例如,当选择两个层作为第一对象层lt(t1)和第二对象层lt(t2)时,并且第一对象层lt(t1)和第二对象层lt(t2)中的每一个包括三个候选参数值时,候选参数集可以由等式2表示。

[等式2]

其后,参数调节模块120可以在操作s32中导出与候选参数值中的每一个相对应的网络性能的水平。参考图5描述导出与候选参数值中的每一个相对应的网络性能水平的方法的示例。

参考图5,不动点神经网络可以包括第一至第n层l(1)至l(n),并且关于第一至第n层l(1)至层l(n)中的每一个的分数长度(fractionlength,fl)可以被设置为量化参数。也就是说,分数长度值fl(1)至fl(n)可以被设置为关于第一至第n层l(1)至l(n)。

当第n层l(n)被设置为对象层时,可以基于对象层的分数长度值fl(t),即第n层l(n)的分数长度值fl(n),形成关于对象层的候选参数集s(t),并且关于候选参数集s(t)的候选参数值的网络性能水平(即候选分数长度值)可以被导出。例如,参数调节模块120可以不改变关于第一至第n-1层l(1)至l(n-1)(除了对象层的剩余层)的分数长度,并且可以将第n层l(n)(对象层)的分数长度从当前分数长度值fl(n)改变为候选参数值中的一个。以这种方式,可以基于被设置为关于第一至第n层l(1)至l(n)中的每一个的分数长度通过驱动不动点神经网络来导出网络性能水平。参数调节模块120可以顺序地评估关于候选参数值的网络性能,以便导出分别对应于候选参数值的网络性能水平

网络性能水平指的是神经网络的目标性能水平。如以上参考图3所述,可以基于神经网络的分类和目标来导出网络性能水平。例如,当神经网络的目的是要执行声音辨识时,参数调节模块120可以通过使用多个声音样本(soundsamples,sam)作为输入数据来驱动不动点神经网络,可以输出声音辨识结果(recognitionresults,res),并且可以将网络性能水平导出为基于res的误字率。

根据示例实施例,可以通过执行关于基于不同参考(例如,k(大于1的整数)性能水平)计算的多个性能水平的加权求和运算来导出网络性能水平。网络性能的水平p可以由等式3表示。

[等式3]

p=∑kwi*pi

此处,wi和pi分别指示k个性能水平当中的第i个权重和第i个性能水平。

例如,当神经网络的目的是要执行图像分类时,可以通过使用多个图像样本作为输入数据来驱动不动点神经网络,并且可以计算指示关于图像样本的预测类别的图像识别信号(或多个类别的概率分布)。可以基于计算的图像识别信号导出前1精确度和前5精确度。前1精确度指示其中由不动点神经网络预测的一个类别是正确答案(或不是正确答案)的情况,并且前5精确度指示其中正确答案被包括(或被不包括)在由不动点神经网络预测的5个类别中情况。网络性能p可以基于被设置为关于前1精确度和前5精确度中的每一个的权重经由加权求和运算来导出。

作为另一示例,当神经网络的目的是执行对象检测时,可以分别关于不同对象计算网络性能水平。例如,可以计算关于诸如车辆的第一对象的检测的网络性能水平以及关于诸如行人(pedestrian)的第二对象的检测的网络性能水平。然后,可以基于被设置为关于与不同对象中的每一个相对应的网络性能水平的权重执行加权求和运算来导出网络性能p。另外,参数调节模块120可以通过考虑到基于与神经网络的目标相关的各种参考计算的各种性能水平来导出神经网络的网络性能水平。

此外,参考图4,在操作s33中,参数调节模块120可以将与候选参数值相对应的网络性能水平相互比较,并且可以基于比较结果选择更新参数值。根据示例实施例,与来自网络性能的水平当中的最高网络性能水平相对应的候选参数值可以被选择为更新参数值。例如,关于候选参数值分别导出的网络性能水平可以相互比较,并且当网络性能水平是最高时,候选参数值可以被选择作为更新参数值。更新参数值fl′可以由等式4表示。

[等式4]

fl′=argmaxp(fl(t))

更新参数值fl′可能与当前参数值(例如当前分数长度fl(t))相同的情况可能发生。在这种情况下,参数调节模块120可以识别不动点神经网络的对象层lt(t)的参数值是使网络性能最大化的值。

图6是根据示例实施例的生成不动点神经网络的方法的流程图。图6的示例实施例可以由图1的参数调节模块120来执行。参考图1和图3描述的方面可以被应用于本示例实施例。

参考图6,参数调节模块120可以在操作s210中生成不动点神经网络,并且在操作s220中,可以从不动点神经网络的多个层当中选择其量化参数要被更新的对象层。参数调节模块120可以在操作s230中基于网络性能来确定关于对象层的量化参数的更新参数值。参数调节模块120可以在操作s240中基于更新参数值来更新对象层的量化参数。操作s210、s220、s230和s240对应于图3的操作s110、s120、s130和s140,并且因此将不重复其描述。

其后,在操作s250中,参数调节模块120可以确定是否满足更新结束条件。当参数调节模块120确定不满足更新结束条件时,参数调节模块120可以基于操作s230和s240在操作s260中改变对象层并且执行量化参数的更新操作,由此更新多个层的量化参数直到满足更新结束条件为止。

根据示例实施例,更新结束条件可以包括对象层的预设数量或更新层的预设数量。例如,当对象层的预设数量为5时,参数调节模块120可以顺序地更新关于不动点神经网络的多个层中的5个层的量化参数。并且,当更新的层的预设数量是3时,参数调节模块120可以通过改变对象层来重复地更新关于不动点神经网络的多个层的量化参数,直到3个层的量化参数从先前设置的参数值改变为其他值,即更新参数值。

根据示例实施例,更新结束条件可以包括关于不动点神经网络的多个层的全部的量化参数是否被更新、关于多个层的量化参数是否从最后一层到第一层沿后向方向然后从第一层到最后一层沿前向方向被更新等。

根据示例实施例,可以基于网络性能来设置更新结束条件。例如,更新结束条件可以包括:其中与浮点神经网络相比不动点神经网络的网络性能降低变成小于预定退化参考值的条件、其中不动点神经网络的网络性能被增加到等于或大于预定参考值的条件等。

关于对象层的改变,改变后的对象层可以是当前对象层的前一层或下一层,关于该对象层执行量化参数的更新。例如,当关于最后一层执行量化参数的更新时,可以将最后一层的前一层设置为对象层。并且,当关于第一层执行量化参数的更新时,可以将第二层设置为对象层。

以这种方式,参数调节模块120可以通过重复地更新关于不动点神经网络的多个层中的至少一个的量化参数来使不动点神经网络的网络性能最大化。

图7是生成图6的不动点神经网络的方法的示例的流程图。

参考图7,在操作s210a中,参数调节模块120可以生成包括n个层的不动点神经网络。可以分别设置关于n个层的量化参数qp(1)、qp(2)、,qp(3)、……、qp(n)。为了便于解释,图7示出了关于n个层中的每一个设置一个量化参数。然而,示例实施例不限于此。可以关于n个层中的每一设置多个量化参数个。

参数调节模块120可以在操作s220a中选择第n层作为对象层。例如,第n层比其它层更多的影响不动点神经网络的网络性能,并且因此,参数调节模块120可以选择第n层作为对象层。

在操作s230a中,参数调节模块120可以基于网络性能来确定关于有关对象层(即第n层)的量化参数的更新参数值。详细地,在操作s231a中,参数调节模块120可以形成关于有关第n层(对象层)的量化参数qp(n)的候选参数集。例如,参数调节模块120可以通过基于关于量化参数qp(n)的当前设置的值生成候选参数来形成候选参数集。

在操作s232a中,参数调节模块120可以导出与候选参数集的候选参数值中的每一个相对应的网络性能水平。参数调节模块120可以应用候选参数值中的每一个作为对象层(即第n层)的量化参数,并且可以驱动不动点神经网络,以便导出关于候选参数值中的每一个的网络性能水平。

在操作s233a中,参数调节模块120可以基于比较与候选参数值相对应的网络性能水平的结果来选择更新参数值。参数调节模块120可以将候选参数值的网络性能水平相互比较,并可以选择与最高网络性能水平相对应的候选参数值作为更新参数值。

在操作s240a中,参数调节模块120可以基于更新参数值来更新对象层(即第n层)的量化参数。当更新参数值与当前设置的参数值不同时,可以改进不动点神经网络的网络性能。

在操作s250a中,参数调节模块120可以确定对象层是否是第一层。如上所述,当前对象层是第n层。因此,参数调节模块120可以确定不满足结束量化参数的更新的条件,并且可以改变对象层。

在操作s260a中,参数调节模块120可以将对象层改变为上一层,即第n-1层。参数调节模块120可以通过执行操作s230a和s240b来更新关于改变后的对象层的量化参数。

图8、图9、图10a和图10b是根据示例实施例的示出基于更新量化参数的顺序的示例的视图。

参考图8,参数调节模块120可以从最后一层(即第n层)到第一层l(1)沿后向方向执行量化参数的更新。因此,可以更新不动点神经网络的第一至第n层l(1)至l(n)中的至少一个的量化参数。

参考图9,参数调节模块120可以从最后一层(即第n层)到第一层l(1)沿后向方向执行量化参数的更新。然后,参数调节模块120还可以从第一层l(1)至第n层l(n)沿前向方向执行量化参数的更新。根据示例实施例,参数调节模块120可以沿后向和前向方向多次执行量化参数的更新,直到网络性能水平达到网络性能的目标水平。

参考图10a和图10b,不动点神经网络的一个或多个层(例如,第三层l(3))可以包括多个模块,例如,第一至第五模块m(1)至m(5)。图10a和10b示出不动点神经网络包括第一至第四层l(1)至l(4)以及第一至第五模块m(1)至m(5)。然而,为了便于解释示出了图10a和图10b中示出的示例实施例,并且根据神经网络(也称为神经网络模型)的类型,不动点神经网络的层的数量和模块的数量可以变化。

参考图10a,参数调节模块120可以以示出的顺序沿后向方向和前向方向顺序地更新关于多个层和多个模块的量化参数。具体地,可以首先更新第四层l(4),随后是第三模块m(3)、第四模块m(4)、第五模块m(5)、第一模块m(1)、第二模块m(2)、第二层l(2)和第一层l(1)。然后,可以再次更新第二层l(2),随后是第二模块m(2)、第一模块m(1)、第五模块m(5)、第四模块m(4)、第三层模块m(3)和第四层l(4)。

并且,参考图10b,参数调节模块120可以以声明的顺序,顺序地沿后向方向和前向方向顺序地更新关于多个层的量化参数,同时更新关于多个模块的量化参数。具体地,可以首先更新第四层l(4),随后同时更新第三模块m(3)、第四模块m(4)和第五模块m(5),随后同时更新第一模块m(1)和第二模块m(2),随后更新第二层l(2),然后第一层l(1)。然后,可以再次更新第二层l(2),随后同时更新第一模块m(1)和第二模块m(2),随后同时更新第三模块m(3)、第四模块m(4)和第五模块m(5),随后另外更新第四层l(4)。

图11是根据示例实施例的生成图6的不动点神经网络的方法的示例的流程图。图11示出了其中关于分数长度执行更新的示例。

参考图11,参数调节模块120可以在操作s210b中生成包括n个层的不动点神经网络。关于n个层可以分别设置量化参数qp(1)、qp(2)、qp(3)、……、qp(n)。

在操作s220b中,参数调节模块120可以选择第n层作为对象层。

在操作s230b中,参数调节模块120可以基于网络性能来确定关于有关对象层(即第n层)的分数长度的更新分数长度值。如上所述,参数调节模块120可以基于当前设置的分数长度值形成关于分数长度的候选参数集,并且可以将关于包括在候选参数集中的候选参数的网络性能水平相互比较,以便确定更新分数长度值。

在操作s240b中,参数调节模块120可以基于更新分数长度值更新对象层(即第n层)的分数长度。在操作s250b中,参数调节模块120可以确定网络性能水平是否等于或高于参考值,并且当网络性能水平小于参考值时,可以更新关于其他层的分数长度。在操作s260b中,参数调节模块120可以改变对象层。参数调节模块120可以选择多个层的其它层(除了第n层)作为对象层。例如,参数调节模块120可以选择第n-1层作为对象层。如上所述,参数调节模块120可以沿后向方向或前向方向改变对象层。参数调节模块120可以通过执行操作s230b和s240b来更新关于改变后的对象层的分数长度。参数调节模块120可以重复地更新关于多个层的分数长度,直到网络性能水平变得等于或大于参考值为止,并且可以在网络性能水平等于或大于参考值时结束分数长度的更新。

图12是根据示例实施例的神经网络系统10a和量化系统20a的框图。如图12所示,神经网络系统10a和量化系统20a可以实施为单独的计算系统。

参考图12,神经网络系统10a可以将浮点神经网络nn_fo提供给量化系统20a,并且量化系统20a可以量化浮点神经网络nn_fo以生成第一不动点神经网络nn_fx1。第一不动点神经网络nn_fx1可以分别包括关于多个层l(1)至l(n)的量化参数(例如,qp(1)、qp(2)、...、qp(n))。

神经网络系统10a可以包括参数调节模块120a,并且参数调节模块120a可以更新关于第一不动点神经网络nn_fx1的多个层中的至少一个的量化参数,如参考图1至图11所述,以便生成具有改进的网络性能的第二不动点神经网络nn_fx2,

根据示例实施例,量化系统20a可以从另一神经网络系统接收浮点神经网络nn_fo。包括参数调节模块120a的神经网络系统10a可以是其中部署了第一不动点神经网络nn_fx1的设备。例如,神经网络系统10a可以是计算设备,该计算设备被配置为基于第一不动点神经网络nn_fx1生成第二不动点神经网络nn_fx2并且基于以第二不动点神经网络nn_fx2为基础的神经网络执行各种任务。

图13是根据示例实施例的计算系统200的框图。在一些示例实施例中,图1的神经网络系统10和图12的神经网络系统10a可以被实施为图13的计算系统200。如图13所示,计算系统200可以包括系统存储器210、处理器230、储存器250、输入和输出(inputandoutput,io)设备270、以及通信连接290。包括在计算系统200中的组件可以彼此通信,并且可以例如经由总线彼此连接。

系统存储器210可以包括程序212。根据示例实施例,程序212可以允许处理器230更新不动点神经网络(例如,第一不动点神经网络nn_fx1)的量化参数。例如,程序212可以包括由处理器230可执行的指令的有序列表,并且处理器230可以执行包括在程序212中的多个指令以更新不动点神经网络的量化参数。系统存储器210可以包括但不限于诸如静态随机存取存储器(staticrandomaccessmemory,sram)和动态随机存取存储器(dynamicrandomaccessmemory,dram)的易失性存储器以及诸如闪速存储器的非易失性存储器等。

处理器230可以包括被配置为执行指令的某集合(例如,intel架构-32(ia-32)、扩展64-比特ia-32、x86-64、powerpc、sparc、mips、arm、ia-64等)的至少一个核。处理器230可以执行存储在系统存储器210中的指令,并且可以通过执行程序212来更新不动点神经网络的量化参数。

即使供给到计算系统200的电力被阻断,储存器250也不会丢失存储的数据。例如,储存器250可以包括非易失性存储器(诸如电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、闪速存储器、相变随机存取存储器(phasechangerandomaccessmemory,pram)、电阻随机存取存储器(resistancerandomaccessmemory,rram)、纳米浮栅存储器(nanofloatinggatememory,nfgm)、聚合物随机存取存储器(polymerrandomaccessmemory,poram)、磁性随机存取存储器(magneticrandomaccessmemory,mram)、铁电随机存取存储器(ferroelectricrandomaccessmemory,fram)等)或者可以包括存储介质(诸如磁带、光盘、磁盘等)。在一些示例实施例中,储存器250可以与计算系统200分离。

在一些示例实施例中,储存器250可以存储被配置为控制更新根据示例实施例的不动点神经网络的量化参数的程序212,并且在由处理器230执行程序212之前,程序212或者程序212的至少一部分可以从储存器250被加载到系统存储器210。在一些示例实施例中,储存器250可以存储以编程语言写入的文件,并且由编译器等基于文件生成的程序212或者程序212的至少部分可以被加载到系统存储器210。

在一些示例实施例中,储存器250可以存储要被处理器230处理的数据和/或被处理器230处理的数据。例如,储存器250可以存储神经网络参数和输入样本。并且,储存器250可以存储生成的不动点神经网络的参数,即量化的神经网络参数和量化参数。

io设备270可以包括输入设备(诸如键盘、定点设备等)以及输出设备(诸如显示器、打印机等)。例如,用户可以通过使用io设备270经由处理器230触发程序212的执行。

通信连接290可以提供对计算系统200外部的网络的访问。例如,网络可以包括多个计算系统和通信链路,并且通信链路可以包括有线链路、光学链路、无线链路或某些其他链路。

图14是根据示例实施例的便携式计算设备300的框图。在一些示例实施例中,根据示例实施例,在其中量化参数被更新的不动点神经网络(例如,图1的第二不动点神经网络nn_fx2)可以由便携式计算设备300驱动。便携式计算设备300可以包括但不限于经由电池或私人电力站向其供电的便携式电子设备(诸如移动电话、平板个人电脑(personalcomputer,pc)、可穿戴设备、物联网(internetofthings,iot)设备等)。

根据示例实施例,如参考以上示例实施例所述,便携式计算设备300可以接收由量化模块生成的不动点神经网络(例如,图1的第一不动点神经网络nn_fx1),并且可以更新不动点神经网络的量化参数。

如图14所示,便携式计算设备300可以包括存储器子系统310、io设备330、处理单元350和网络接口370,其中存储器子系统310、io设备330、处理单元350和网络接口370可以经由总线390彼此通信。在一些示例实施例中,存储器子系统310、io设备330、处理单元350和网络接口370中的至少两个可以作为片上系统(system-on-a-chip,soc)被包括在一个封装中。

存储器子系统310可以包括ram312和储存器314。ram312和/或储存器314可以存储要由处理单元350执行的指令的有序列表和要由处理单元350处理的数据。例如,ram312和/或储存器314可以存储神经网络的变量(诸如信号、权重和偏差),并且可以存储神经网络的神经元(或处理节点)的参数。在一些示例实施例中,储存器314可以包括非易失性存储器。

处理单元350可以包括中央处理单元(centralprocessingunit,cpu)352、图形处理单元(graphicsprocessingunit,gpu)354、数字信号处理器(digitalsignalprocessor,dsp)356和神经处理单元(neuralprocessingunit,npu)358。不同于图14的说明,在一些示例实施例中,处理单元350可以包括cpu352、gpu354、dsp356和npu358中的至少一个。

cpu352可以直接地执行便携式计算设备300的一般操作。例如,cpu352响应于例如经由io设备330接收外部输入可以直接地执行某些任务,或者可以指示处理单元350的其他组件执行某些任务。gpu354可以经由包括在io设备330中的显示器生成用于图像输出的数据,或者可以编码从包括在io设备330中的相机接收到的数据。dsp356可以通过处理数字信号(例如,从网络接口370提供的数字信号)来生成有效数据。

npu358可以是为神经网络设计的硬件,并且可以包括与包括在神经网络中的一个或多个神经元相对应的多个计算节点,其中多个计算节点中的一个或多个可以并行处理信号。

根据示例实施例量化的在其中参数被更新的不动点神经网络可以具有改进的网络性能、降低的计算复杂度,并且可以由处理单元350简单地操作。

io设备330可以包括输入设备(诸如触摸输入设备、声音输入设备、相机等)以及输出设备(诸如显示设备、声音输出设备等)。例如,当用户语音经由声音输入设备被输入时,语音可以被由便携式计算设备300驱动的不动点神经网络辨识,并且可以触发基于语音的辨识的操作。并且,当经由相机输入图像时,包括在图像中的对象可以被由便携式计算设备300驱动的不动点神经网络辨识,并且可以向用户提供诸如虚拟现实的输出。如上所述,根据示例实施例的在其中量化参数被更新的不动点神经网络可以具有改善的网络性能并且可以向用户提供准确信息。

网络接口370可以访问诸如长期演进(longtermevolution,lte)、5g等的移动通信网络,并且可以提供对诸如wifi的本地网络的访问。

上述方法的各种操作可以通过能够执行操作的任何合适的工具来执行,诸如(多个)各种硬件和/或软件组件、电路和/或(多个)模块。

该软件可以包括用于实施逻辑功能的可执行指令的有序列表,并且可以体现在使用的任何“处理器可读的介质”中以供指令执行系统、装置或设备(诸如单一核心处理器或多核心处理器或包含处理器的系统)使用或与其结合使用。

结合本文公开的实施例来描述的方法或算法和功能的块或步骤可以直接地体现在硬件中、由处理器执行的软件模块中或两者的组合中。如果在软件中实施,则功能可以被作为一个或多个指令或代码存储在有形的、非瞬态的计算机可读介质上或者在其上传输。软件模块可以驻留在随机存取存储器(ram)、闪速存储器、只读存储器(readonlymemory,rom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、寄存器、硬盘、可移动磁盘、cdrom或者本领域已知的任何其他形式的存储介质中。

以上,在说明书中参考附图描述了示例实施例。在整个说明书中,使用某些术语来描述示例实施例。然而,应该仅在针对示例实施例的描述性意义上来考虑这些术语,而不是为了限制的目的。因此,本领域的普通技术人员应该理解的是在不脱离本公开的范围的情况下可以进行各种修改和变化。因此,本公开的范围不是由详细描述而是由所附权利要求来限定。

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