神经网络激活函数的通用拟合方法及装置

文档序号:1953922 发布日期:2021-12-10 浏览:15次 >En<

阅读说明:本技术 神经网络激活函数的通用拟合方法及装置 (General fitting method and device for neural network activation function ) 是由 王丹阳 杨东天 王中风 林军 刘阳 于 2021-11-12 设计创作,主要内容包括:本申请公开了神经网络激活函数的通用拟合方法及装置;所述方法包括加载一个神经网络中的激活层;根据所述激活层中的预设激活函数,生成四个分段参数;根据所述的四个分段参数得到五段分段拟合函数,生成目标拟合函数;根据所述目标拟合函数,重新设置所述激活层。上述方法可以将复杂的激活函数拟合成简单的分段的线性函数,能在较低的硬件复杂度下保证卷积神经网络算法的精度,解决了激活复杂函数的硬件实现问题,提高NPU的处理性能。(The application discloses a general fitting method and a general fitting device for a neural network activation function; the method includes loading an activation layer in a neural network; generating four segmentation parameters according to a preset activation function in the activation layer; obtaining five-segment piecewise fitting functions according to the four piecewise parameters to generate a target fitting function; and resetting the activation layer according to the target fitting function. The method can fit the complex activation function into a simple piecewise linear function, can ensure the precision of the convolutional neural network algorithm under lower hardware complexity, solves the hardware realization problem of the activation complex function, and improves the processing performance of the NPU.)

神经网络激活函数的通用拟合方法及装置

技术领域

本申请涉及卷积神经网络领域,尤其涉及神经网络激活函数的通用拟合方法及装置。

背景技术

神经网络中的激活函数,例如SiReLu、Mish、Hard-Swish等,通过自身的非线性特点可以提升神经网路的精度,强化神经网络的学习能力。但是,因为激活函数的计算公式复杂,传统的NPU(Neural-network Processing Unit,神经网络处理器)不能直接支持激活函数的硬件实现。

目前,当NPU在处理神经网络的过程中一般会把遇到的激活函数重新加载到CPU(central processing unit,中央处理器)或者GPU(graphics processing unit,图形处理器)当中,采用软件的方式来实现遇到的激活函数。

但采用上述软件方式会带来明显的数据传输负担,并且软件处理的速度较慢,这都增加了NPU的等待时间,降低NPU的实际处理性能。

发明内容

为了解决采用软件方式处理卷积神经网络中的激活函数会增加NPU的等待时间,降低NPU的实际处理性能的问题,本申请通过以下方面公开了一种神经网络激活函数的通用拟合方法及装置。

本申请第一方面公开了一种神经网络激活函数的通用拟合方法,包括

加载一个神经网络中的激活层;激活层为预设激活函数;

根据预设激活函数,生成第一分段参数、第二分段参数、第三分段参数和第四分段参数;

当输入数据小于等于第一分段参数,输出第一段拟合函数;

当输入数据大于第一分段参数并且小于等于第二分段参数时,输出第二段拟合函数,

当输入数据大于第二分段参数并且小于等于第三分段参数时,输出第三段拟合函数;

当输入数据大于第三分段参数并且小于等于第四分段参数时,输出第四段拟合函数;

当输入数据大于第四分段参数时,输出第五段拟合函数;

根据第一段拟合函数、第二段拟合函数、第三段拟合函数、第四段拟合函数和第五段拟合函数生成目标拟合函数;

根据目标拟合函数,重新设置激活层。

可选的,第一分段参数根据预设激活函数的逼近零点对应的输入值确定;

第二分段参数根据预设激活函数的输出值最小时对应的输入值确定;

第三分段参数为零;

第四分段参数根据预设激活函数的输出值最大时对应的输入值确定。

可选的,第一段拟合函数的输出为零;第二段拟合函数为一元一次函数;第三段拟合函数为正比例函数;第四段拟合函数的输出值为输入值;第五段拟合函数的输出为所述第四分段参数。

可选的,目标拟合函数满足如下关系:

其中,x1为第一分段参数、x2为第二分段参数、x3为第四分段参数;

其中,n、K、b分别为第一拟合参数、第二拟合参数和第三拟合参数;其中,第一拟合参数、第二拟合参数和第三拟合参数根据目标拟合函数的函数表达式和预设激活函数的函数表达式之间的平方差最小时对应的目标拟合函数的函数表达式确定。

可选的,第四分段参数为神经网络中单个数据能表示的最大值。

本申请第二方面公开了一种神经网络激活函数的通用拟合装置,所述装置应用于本申请第一方面所述的神经网络激活函数的通用拟合方法,所述通用拟合装置包括:

多个拟合单元;其中多个拟合单元按照流水线方式工作;

其中任一拟合单元都包括一个激活函数单元和一个控制单元;其中,

控制单元用于根据预设激活函数配置对应的激活函数单元中的拟合参数,并且暂时存储上一个拟合单元输出的分段拟合结果;其中,拟合参数包括比较对象、系数、移位数和偏置项;

激活函数单元用于对接收到的数据进行激活函数的分段拟合运算,生成分段拟合结果输出至下一个拟合单元。

可选的,任一所述激活函数单元都包括一个选择器、一个处理单元、一个判断单元和一个数据直通路径;其中

处理单元用于对输入数据进行拟合处理,输出拟合结果;

判断单元用于存储与所述处理单元对应的分段判断条件;

数据直通路径用于直接将输入数据传输至选择器;

选择器用于根据分段判断条件从拟合结果和输入数据中进行选择,生成分段拟合结果,并将分段拟合结果传输至下一个拟合单元中。

可选的,多个拟合单元中仅有一个所述拟合单元中包括乘法器;其中乘法器使用4bit无符号数作为系数。

可选的,控制单元是寄存器。

可选的,通用拟合装置包括两个拟合单元;或者通用拟合装置包括四个拟合单元。

本申请公开了神经网络激活函数的通用拟合方法及装置;所述方法包括加载一个神经网络中的激活层;根据所述激活层中的预设激活函数,生成四个分段参数;根据所述的四个分段参数得到五段分段拟合函数,生成目标拟合函数;根据所述目标拟合函数,重新设置所述激活层。上述方法可以将复杂的激活函数拟合成简单的分段的线性函数,能在较低的硬件复杂度下保证卷积神经网络算法的精度,解决了激活复杂函数的硬件实现问题,提高NPU的处理性能。

附图说明

图1为本申请实施例公开的一种神经网络激活函数的通用拟合方法的流程示意图;

图2为本申请实施例公开的一种神经网络激活函数的通用拟合方法的拟合结果示意图;

图3为本申请实施例公开的一种神经网络激活函数的通用拟合方法实现SiReLu函数的拟合结果示意图;

图4为本申请实施例公开的一种神经网络激活函数的通用拟合方法实现Mish函数的拟合结果示意图;

图5为本申请实施例公开的一种神经网络激活函数的通用拟合方法实现Hard-Swish函数的拟合结果示意图;

图6为本申请实施例公开的一种神经网络激活函数的通用拟合装置的结构示意图;

图7为本申请实施例公开的一种神经网络激活函数的通用拟合装置中的拟合单元内部结构示意图;

图8为本申请实施例公开的一种神经网络激活函数的通用拟合装置实现SiReLu函数硬件拟合的工作流程示意图。

具体实施方式

为了解决采用软件方式处理激活函数会增加NPU的等待时间,降低NPU的实际处理性能的问题,本申请通过以下实施例公开了神经网络激活函数的通用拟合方法及装置。

参见图1,为本申请第一实施例公开的一种神经网络激活函数的通用拟合方法的流程示意图,包括:

步骤01,加在一个神经网络中的激活层。

其中,所述激活层为预设激活函数。

步骤02,根据所述预设激活函数,生成第一分段参数、第二分段参数、第三分段参数和第四分段参数。

其中,所述第一分段参数根据所述预设激活函数的逼近零点对应的输入值确定;所述第二分段参数根据所述预设激活函数的输出为最小时对应的输入值确定;所述第三分段参数为零;所述第四分段参数根据所述预设激活函数的输出值为最大值时对应的输入值确定。

进一步的,所述预设激活函数的逼近零点是指数据小于硬件的数据的分辨率时对应的输入值。因为硬件中对数据的表达采用定点数的模式,数据的范围和分辨率都是确定的,以8bit定点数,(1,4,3)(1个符号位,4个整数位,3个小数位)量化距离为例,数据表达的分辨率是0.125。也就是说,当数据小于0.125且大于-0.125时,已经无法精确表示其数值,在进行精确的区分已没有意义。

更进一步的,对于(1,p,q)量化距离,数据的分辨率为2-q

进一步的,在实际应用中,有一些激活函数的目标拟合函数的所述第三分段参数为正无穷。这种情况下对应的在硬件中,所述第三分段参数为所述卷积神经网络中单个数据能表示的最大值。

步骤03,当输入数据小于等于所述第一分段参数,输出第一段拟合函数;

其中,所述第一段拟合函数的输出为零。

步骤04,当输入数据大于所述第一分段参数并且小于等于第二分段参数时,输出第二段拟合函数。

其中,所述第二段拟合函数为一元一次函数;

步骤05,当输入数据大于所述第二分段参数并且小于等于零时,输出第三段拟合函数。

其中,所述第三段拟合函数为正比例函数。

步骤06,当输入数据大于第三分段并且小于等于所述第四分段参数时,输出第四段拟合函数。

其中,所述第四段拟合函数的输出值为输入值;

步骤07,当输入数据大于第四分段参数时,输出第五段拟合函数。

其中,所述第五段拟合函数的输出为所述第四分段参数。

步骤08,根据所述第一段拟合函数、所述第二段拟合函数、所述第三段拟合函数、所述第四段拟合函数和所述第五段拟合函数生成目标拟合函数。

步骤09,根据所述目标拟合函数,重新设置所述激活层。

图2为本实施例公开的一种神经网络激活函数的通用拟合方法的拟合结果示意图。

参见图2,所述目标拟合函数满足如下关系:

其中,x1为所述第一分段参数、x2为所述第二分段参数、x3为所述第三分段参数;

n、K、b分别为第一拟合参数、第二拟合参数和第三拟合参数;其中,

所述第一拟合参数、所述第二拟合参数和所述第三拟合参数根据所述目标拟合函数的函数表达式和所述预设激活函数的函数表达式之间的平方差最小时对应的所述目标拟合函数的函数表达式确定。也就是说,根据不同的n、K、b计算所述目标拟合函数和所述预设激活函数的函数表达式,确定两式的平方差,搜索使得平方差最小的n、K、b,即寻找能够使拟合误差最小的n、K、b。

示例一,应用本实施例公开的一种神经网络激活函数的通用拟合方法实现SiReLu函数的拟合方案。

SiReLu函数的数学表达式为:

对应的所述目标拟合函数满足如下关系:

其中,x1=-3.6,对应逼近零点,x2=-1.2,对应最低点;n=1、K=0.25、b=-0.45。

上述拟合方案的拟合曲线如图3所示。

在进行神经网络运算的时候,SiReLu函数的实现精度为81.9%,对应的所述目标拟合函数的实现精度为81.2%,精度损失只有0.7%。

示例二,应用本实施例公开的一种神经网络激活函数的通用拟合方法实现Mish函数的拟合方案。

Mish函数的数学表达式为:

对应的所述目标拟合函数满足如下关系:

其中,x1=-3.6,对应逼近零点,x2=-1.2,对应最低点;n=1、K=0.125、b=-0.225。

上述拟合方案的拟合曲线如图4所示。

在进行神经网络运算的时候,Mish函数的实现精度为81.7%,对应的所述目标拟合函数的实现精度为81.1%,精度损失只有0.6%。

示例三,应用本实施例公开的一种神经网络激活函数的通用拟合方法实现Hard-Swish函数的拟合方案。

Hard-Swish函数的数学表达式为:

对应的所述目标拟合函数满足如下关系:

其中,x1=-3,对应逼近零点,x2=-1.5,对应最低点;n=0、K=0.25、b=-0.75。

上述拟合方案的拟合曲线如图5所示。

在进行神经网络运算的时候,Hard-Swish函数的实现精度为81.7%,对应的所述目标拟合函数的实现精度为81.1%,精度损失只有0.6%。

需要说明的是,本实施例公开的一种神经网络激活函数的通用拟合方法可以拟合任意激活函数,不限于上述三个激活函数。

本实施例公开了一种神经网络激活函数的通用拟合方法,包括加载一个神经网络中的激活层;根据所述激活层中的预设激活函数,生成四个分段参数;根据所述的四个分段参数得到五段分段拟合函数,生成目标拟合函数;根据所述目标拟合函数,重新设置所述激活层。上述方法可以将复杂的激活函数拟合成简单的分段的线性函数,能在较低的硬件复杂度下保证卷积神经网络算法的精度,解决了激活复杂函数的硬件实现问题,提高NPU的处理性能。

本申请还公开了一种神经网络激活函数的通用拟合装置,所述装置应用于本申请第一实施例所述的通用拟合方法,所述通用拟合装置包括:多个拟合单元;所述多个拟合单元按照流水线方式工作。

图6是本实施例公开的一种神经网络激活函数的通用拟合装置的结构示意图。

参加图6,任一所述拟合单元都包括一个激活函数单元和一个控制单元。其中,所述控制单元根据预设激活函数配置对应的所述激活函数单元中的拟合参数,并且暂时寄存上一个所述拟合单元输出的分段拟合结果;所述激活函数单元用于对接收到的数据进行激活函数的分段拟合运算,生成分段拟合结果输出至下一个所述拟合单元。

进一步的,所述拟合参数包括比较对象、系数、移位数和偏置项等。

在具体应用中,所述控制单元一般为寄存器。

图7是本实施例公开的所述通用拟合装置的所述激活函数单元的内部结构示意图。

参见图7,任一所述激活函数单元都包括一个选择器、一个处理单元、一个判断单元和一个数据直通路径。

其中,所述处理单元用于对输入数据进行拟合处理,输出拟合结果;所述判断单元用于存储与所述处理单元对应的分段判断条件;所述数据直通路径用于直接将输入数据传输至所述选择器;所述选择器用于根据所述分段判断条件从所述拟合结果和所述输入数据中进行选择,生成所述分段拟合结果,并将所述分段拟合结果传输至下一个所述拟合单元中。

进一步的,所述多个拟合单元中仅有一个所述拟合单元中包括乘法器;其中所述乘法器使用4bit无符号数作为系数。

所述通用拟合装置通过流水线的方式,分段实现所述预设激活函数的拟合,分段数可以根据具体的应用场景做调节。在不同的流水节点上所述激活函数单元相对独立,可以实现更好的电路时序和面积。

进一步的,整个激活函数的拟合过程分为多个拟合单元接力完成,每个拟合单元完成的工作可以配置,能够达到电路和时序最优。

在实际应用中,所述通用拟合装置包括四个所述拟合单元,可以分四个周期完成拟合,每个周期拟合其中的一段。在有些应用场景中,为了实现更低的功耗,也可以使用两个所述拟合单元,分成两个周期完成拟合,每个周期拟合所述目标激活函数中的两段。

图8为本实施例所述通用拟合装置包括四个拟合单元的结构框图,其中,Reg表示寄存器,Step:1表示第一个拟合单元,以此类推。

所述通用拟合装置的输入为Y=X。

第一个拟合单元,判断输入数据是否小于等于x1,是则置零,否则不变。

第二个拟合单元,判断输入数据是否小于等于x2,是则右移n位,并且加上偏置项,否则不变。其中n为所述目标拟合函数的第一拟合参数;偏置项为所述目标拟合函数的第三拟合参数。

第三个拟合单元,判断输入数据是否小于等于0,是则乘以系数K;否则不变。其中系数K为所述目标拟合函数的第二拟合参数。

第四个拟合单元,判断输入数据是否小于等于x3,是则不变,否则输出x3

整个激活函数分四个周期拟合完成,可以减轻时序压力。

以SiReLu函数为例,所述通用拟合装置包括四个所述拟合单元,可以分四个周期完成拟合,每个周期拟合其中的一段,即四个所述拟合单元分别拟合x<=-3.6、-3.6<x<=-1.2、-1.2<x<=0和x>0四段。

第一个拟合单元,判断输入数据是否小于等于-3.6,是则置零,否则不变;处理后输出至下一个拟合单元。

第二个拟合单元,判断输入数据是否小于等于-1.2,小于则输出-0.5x-1.8,即右移一位,并加偏置项,否则不变;处理后输出至下一个拟合单元。

第三个拟合单元:判断输入数据是否小于等于0,是则乘以系数0.25,否则不变;处理后输出至下一个拟合单元。

第四个拟合单元:SiReLu函数没有第四分段参数x3。在实际应用中,将x3配置为所述通用拟合装置中数据能表示的最大值,例如8bit数据能表示的最大值为7F(十六进制)。判断输入数据是否小于7F,是则不变,否则将输出设置为7F。

上述处理过程逻辑清晰,电路结构分级明确,有利于提高电路时序。

各个实施例和示例之间类似的部分相互参考即可。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:计算机实施方法、计算机系统及计算机编程产品

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!