一种高精度可调整的通用激活函数实现方法技术

技术编号:37332434 阅读:8 留言:0更新日期:2023-04-21 23:10
本发明专利技术属于现场可编程门阵列硬件加速器技术领域,公开了一种高精度可调整的通用激活函数实现方法,目的在于使用少量的存储资源和片上资源,实现高精度的激活函数逼近,并且可以根据需求设置精度,实现精度与存储空间的权衡。本发明专利技术的通用激活函数实现方法能够准确估计所提激活函数分段策略所能够达到的精度,从而实现在给定激活函数目标逼近精度的情况下对分段策略的调整,避免了精度溢出导致片上资源的浪费。与传统方法相比,本发明专利技术提供的方法可实现精度更高,可调整的空间更大,相比于其他能够实现高精度的方法消耗的硬件资源更少。他能够实现高精度的方法消耗的硬件资源更少。他能够实现高精度的方法消耗的硬件资源更少。

【技术实现步骤摘要】
一种高精度可调整的通用激活函数实现方法


[0001]本专利技术属于现场可编程门阵列(FPGA)硬件加速器
,具体是提出一种针对各类常用非线性激活函数均有效的逼近方法,在实现高精度的同时减少FPGA硬件资源的消耗,并且提供较大的可调整空间,避免精度溢出导致的资源浪费,具体为一种高精度可调整的通用激活函数实现方法。

技术介绍

[0002]非线性激活函数为神经网络提供非线性因素,是神经网络的重要组成部分。通常来说,非线性激活函数的计算十分复杂,难以在FPGA上精确实现。因此,当设计者需要在FPGA上实现非线性激活函数时,采用一定的近似方法逼近激活函数是必要的。
[0003]近年来,为了提高激活函数的逼近精度,国内外学者们开展了相应研究。面向FPGA的激活函数近似方法主要分为两类,第一类是分段逼近方法,将目标激活函数按照特定的分段方式划分为若干区域,每个区域用不同的线性化表达式进行描述,从而达到逼近原函数的目的(2022年发表于Electronics的FPGA implementation for the sigmoid with piecewise linear fitting method based on curvature analysis)。另一种方法是查找表法,将激活函数所有的输入输出值保存在内存中,依据查找表方式进行读取(2020年发表于IEEETransactionsonVeryLargeScaleIntegrationSystem的A twofold lookup table architecture for efficient approximation of activation functions)。这种方法能够实现很高的精度,但是需要消耗大量的存储空间,对FPGA的片上存储单元造成很大压力。此外,在当前的研究中还出现了一种混合方法,通过使用少量的存储空间以提高逼近精度(2022年发表于IEEETransactions On Industrial Electronics的A modular approximationmethodology for efficient fixed

point hardware implementation of the sigmoid function)。但是,在上述方法中,只要使用了分段逼近或混合方法,都仅针对Sigmoid或Tanh这类通过Sigmoid通过特殊数学计算得到的函数,而忽视了Swish,Mish等新型的激活函数。考虑到神经网络硬件加速研究的推进,设计激活函数逼近方法时应该设计通用的方法。如果仅使用查找表法,将激活函数所有可能的输出结果保存在查找表中,对FPGA片上的存储空间是不友好的。因此,实现一种通用,高精度,可调整,占用存储空间小的激活函数逼近方法是十分必要的。

技术实现思路

[0004]由于已有研究中的混合方法使用少量的存储空间与特殊的数学计算方法,仅适用于Sigmoid激活函数及其通过简单数学计算得到的激活函数,如Tanh,缺乏通用性。并且由于数学计算过程的固定性,实现的逼近激活函数在精度上可以调整的空间较小。针对以上问题,本专利技术提出了一种面向FPGA的激活函数通用混合逼近方法,目的在于使用少量的存储资源和片上资源,实现高精度的激活函数逼近,并且可以根据需求设置精度,实现精度与存储空间的权衡。
[0005]本专利技术的技术方案:
[0006]一种高精度可调整的通用激活函数实现方法,步骤如下:
[0007]步骤1:假设输入数据x的位宽为n,将激活函数f(x)均匀划分为16段,使用预期误差E表示预期的激活函数精度,根据该预期误差通过计算将所有分段分为三类;
[0008]步骤1.1:计算当使用16段均分的分段线性方法逼近激活函数时的逼近误差E
1avg
,16个分段中每段的平均曲率与整个激活函数的最大曲率C
max

[0009]步骤1.2:确定需要的常数系数K1和K2,公式如下:
[0010][0011][0012]步骤1.3:将每段的平均曲率按照从大到小的顺序重新排序,从平均曲率最大的分段开始计数,得到第一类分段为平均曲率最大的k个分段,k是需要满足如下不等式的最小整数:
[0013]k<C
sum
K2–
16(E
1avg

E)K1K2[0014]其中,C
sum
表示数量为k的第一类分段的平均曲率之和;
[0015]步骤1.4:估计逼近误差的裕量E2,公式如下:
[0016][0017]根据裕量E2大小,从平均曲率最小的分段开始计数,合并相邻的分段,计算合并后的误差增量为合并分段前的误差求和再乘以分段数;在满足裕量要求的情况下尽可能多地合并分段,得到需要进行合并的分段为第三类分段,个数为m,则剩余分段为第二类分段,个数为16

k

m;
[0018]步骤2:针对三类不同的分段使用三种不同的逼近方法;
[0019]步骤2.1:针对第一类分段,使用非线性逼近的方法;首先计算该分段左端点的切线g(x),然后将x的最低n

5个有效位进行平方,取结果的前十位,与f(x)

g(x)形成对应关系,作为数据集,训练单层感知机,单层感知机的结果与g(x)相加得到f(x)的逼近结果;
[0020]步骤2.2:针对第二类分段,使用线性逼近的方法,通过最小二乘法进行逼近;
[0021]步骤2.3:针对第三类的分段,将若干相邻分段合并之后再使用线性逼近的方法,即最小二乘法。
[0022]步骤3:根据步骤1与步骤2设计的算法,完成硬件部署;
[0023]步骤3.1:计算得到步骤1和步骤2中需要的所有权重,偏置和系数;
[0024]步骤3.2:根据分段情况对x的最高4位有效位进行编码,作为地址读取直线的系数与偏置,如果该分段使用非线性逼近,还需要读取单层感知机的权重,并且将单层感知机的偏置累加到直线的偏置;
[0025]步骤3.3:对单层感知机的权重进行截位,仅留下数据有效位,计算逼近误差,如果逼近误差比预期误差更小,对权重进行进一步截位,将所有权重的位宽截位至与最少有效
位的权重一致。
[0026]本专利技术的有益效果:本专利技术提出了一种基于曲率的逼近精度预测方法,能够准确估计所提激活函数分段策略所能够达到的精度,从而实现在给定激活函数目标逼近精度的情况下对分段策略的调整,避免了精度溢出导致片上资源的浪费。与传统方法相比,本专利技术提供的方法可实现精度更高,可调整的空间更大,相比于其他能够实现高精度的方法消耗的硬件资源更少。
附图说明
[0027]图1是本专利技术所使用的方法的硬件部署情况,其中x表示输入数据,f(x)表示输出数据,W
i
为单层感知机的权重,i=1,

,9。k1与本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高精度可调整的通用激活函数实现方法,其特征在于,步骤如下:步骤1:假设输入数据x的位宽为n,将激活函数f(x)均匀划分为16段,使用预期误差E表示预期的激活函数精度,根据该预期误差通过计算将所有分段分为三类;步骤1.1:计算当使用16段均分的分段线性方法逼近激活函数时的逼近误差E
1avg
,16个分段中每段的平均曲率与整个激活函数的最大曲率C
max
;步骤1.2:确定需要的常数系数K1和K2,公式如下:,公式如下:步骤1.3:将每段的平均曲率按照从大到小的顺序重新排序,从平均曲率最大的分段开始计数,得到第一类分段为平均曲率最大的k个分段,k是需要满足如下不等式的最小整数:k<C
sum
K2–
16(E
1avg

E)K1K2其中,C
sum
表示数量为k的第一类分段的平均曲率之和;步骤1.4:估计逼近误差的裕量E2,公式如下:根据裕量E2大小,从平均曲率最小的分段开始计数,合并相邻的分段,计算合并后的误差增量为合并分段前的误差求和再乘以分段数;在满足裕量要求的情况下尽可能多地合并分段,得到需要进行合并的分段为第三类分段...

【专利技术属性】
技术研发人员:马艳华徐琪灿陈聪聪宋泽睿
申请(专利权)人:大连理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1