一种Sigmoid函数的近似计算方法及近似计算状态机

文档序号:36073430发布日期:2023-11-17 23:40阅读:40来源:国知局
一种

本发明涉及集成电路设计,尤其涉及到一种sigmoid函数的近似计算方法及近似计算状态机。


背景技术:

1、在xgboost算法硬件化中,sigmoid函数被用于将预测值映射到(0,1)区间中,映射后的预测值为判断当前是否处于异常状态的概率值。sigmoid函数定义为1/(1+exp(-x)),其中exp函数是指数函数。然而,在硬件实现中,指数函数的计算涉及到复杂的数学运算,需要大量的资源和时间,因此在实践中使用sigmoid函数时,通常需要使用近似函数来逼近它。

2、在逼近sigmoid函数时,常见的方法包括泰勒级数逼近、多项式逼近、pade逼近等:其中泰勒级数适用于小范围的逼近,对于大范围的逼近效果较差;多项式逼近使用一个多项式函数来逼近sigmoid函数,精度受到多项式的次数的限制,难以同时获得高精度和低复杂度;pade逼近使用有理函数来逼近sigmoid函数,其相比于多项式逼近可以提供更高的逼近精度,但是仍然需要计算复杂的分式,需要更高的计算资源和时间。

3、因此,提供一种逼近精度较高、计算复杂度较低的sigmoid函数逼近方法成为亟待解决的问题。


技术实现思路

1、有鉴于此,本发明提供了一种将sigmoid函数分成多个小段,使得在每个小段内均可以使用多项式或线性函数来逼近函数值,且可以通过调整分段数量和函数次数来平衡逼近精度和计算复杂度,进而实现高逼近进度和地计算复杂度的sigmoid函数的近似计算方法。

2、根据第一方面,本发明提供了一种sigmoid函数的近似计算方法,包括如下步骤:

3、获取输入浮点数,并根据输入浮点数的符号位判断输入浮点数的正负;

4、当输入浮点数为正值时,根据输入浮点数的阶码位判断输入浮点数是否位于第一区间;

5、当输入浮点数位于第一区间时,使用加法器、乘法器以及移位器基于第一逼近公式得到近似计算结果;

6、当输入浮点数位于第二区间时,输出第一常数值作为近似计算结果;第二区间为第一区间在正区间内的补区间。

7、在可选的实施方式中,使用加法器、乘法器以及移位器基于第一逼近公式得到近似计算结果的步骤,具体包括:

8、使用第一加法器和第一移位器进行第一逼近公式中的线性计算的同时,使用乘法器和第二移位器进行第一逼近公式中的二次项计算,再使用第二加法器将线性计算的计算结果和二次项计算的计算结果相加,得到近似计算结果。

9、在可选的实施方式中,第一区间为[0,4),第一常数值为1,第一逼近公式为:

10、其中,x为输入浮点数。

11、在可选的实施方式中,sigmoid函数的近似计算方法还包括如下步骤:

12、当输入浮点数为负值时,根据输入浮点数的阶码位判断输入浮点数是否位于第三区间;

13、当输入浮点数位于第三区间时,使用加法器、乘法器以及移位器基于第二逼近公式得到近似计算结果;

14、当输入浮点数位于第四区间,输出第二常数值作为近似计算结果;第四区间为第三区间在负区间内的补区间。

15、在可选的实施方式中,第三区间为(-4,0),第二常数值为0,第二逼近公式为:

16、其中,x为输入浮点数。

17、根据第二方面,本发明还提供了一种sigmoid函数的近似计算状态机,状态机具有以下状态:

18、启动状态,用于等待输入信号,并在接收到输入浮点数时,转移至第一检查状态;

19、第一检查状态,用于检查输入浮点数的符号位,并在输入浮点数为正值时,转移到第二检查状态;

20、第二检查状态,用于检查输入浮点数的阶码位,并在输入浮点数位于第一区间时将输入浮点数转移到第一计算状态,在输入浮点数位于第二区间时输出第一常数值并转移到结束状态;

21、第一计算状态,用于将输入浮点数输入加法器、乘法器和移位器,进行基于第一逼近公式的近似计算,并在计算完成后转移到结束状态;

22、结束状态,用于等待启用信号,并在接收到启用信号时,转移到启动状态。

23、在可选的实施方式中,输入浮点数位于第一区间是指输入浮点数的符号位为0,阶码位<8'd129;第一常数值为1,第一逼近公式为:

24、其中,x为输入浮点数。

25、在可选的实施方式中,第一检查状态还用于在输入浮点数为负值时,转移到第三检查状态;

26、第三检查状态用于检查输入浮点数的阶码位,并在输入浮点数位于第三区间时将输入浮点数转移到第二计算状态,在输入浮点数位于第四区间时输出第二常数值并转移到结束状态;

27、第二计算状态用于将输入浮点数输入加法器、乘法器和移位器,进行基于第二逼近公式的近似计算,并在计算完成后转移到结束状态。

28、在可选的实施方式中,第二计算状态用于将输入浮点数输入第一加法器、第一移位器进行第二逼近公式中的线性计算的同时,将输入浮点数输入乘法器和第二移位器进行第二逼近公式中的二次项计算,再使用第二加法器将线性计算的计算结果和二次项计算的计算结果相加,完成基于第二逼近公式的近似计算。

29、在可选的实施方式中,输入浮点数位于第三区间是指输入浮点数的符号位为1,阶码位<8'd129;第二常数值为0,第二逼近公式为:

30、其中,x为输入浮点数。

31、本发明提供的技术方案,具有如下优点:

32、1、本发明提供的sigmoid函数的近似计算方法,通过对sigmoid函数进行分段近似处理,使得在每个小段内可以近似为常数或者近似为使用加法器、移位器即可实现的低次项简单函数,能够避免使用除法器和高精度计算所带来的硬件资源浪费和功耗增加,在保证计算精度的同时,显著提高sigmoid函数的计算速度和效率。

33、2、本发明提供的sigmoid函数的近似计算方法,通过设置第一加法器、第一移位器、乘法器和第二移位器并行处理sigmoid函数的逼近公式中的线性部分和二次项部分,能够进一步提高sigmoid函数的计算速度和效率。

34、3、本发明提供的sigmoid函数的近似计算状态机,通过设置第一检查状态、第二检查状态和第一计算状态,将输入浮点数的输入值区间判断和计算分开,简化了状态转移流程;同时,通过对sigmoid函数进行分段近似处理,使得在每个小段内可以近似为常数或者近似为使用加法器、移位器即可实现的低次项简单函数,并对每个小段分别进行对应的计算,提高了状态机的计算效率和准确性。



技术特征:

1.一种sigmoid函数的近似计算方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的sigmoid函数的近似计算方法,其特征在于,所述使用加法器、乘法器以及移位器基于第一逼近公式得到近似计算结果的步骤,具体包括:

3.根据权利要求2所述的sigmoid函数的近似计算方法,其特征在于,所述第一区间为[0,4),所述第一常数值为1,所述第一逼近公式为:

4.根据权利要求1所述的sigmoid函数的近似计算方法,其特征在于,还包括如下步骤:

5.根据权利要求4所述的sigmoid函数的近似计算方法,其特征在于,所述第三区间为(-4,0),所述第二常数值为0,所述第二逼近公式为:

6.一种sigmoid函数的近似计算状态机,其特征在于,所述状态机具有以下状态:

7.根据权利要求6所述的sigmoid函数的近似计算状态机,其特征在于,所述输入浮点数位于所述第一区间是指所述输入浮点数的符号位为0,阶码位<8'd129;所述第一常数值为1,所述第一逼近公式为:

8.根据权利要求7所述的sigmoid函数的近似计算状态机,其特征在于,所述第一检查状态还用于在所述输入浮点数为负值时,转移到第三检查状态;

9.根据权利要求8所述的sigmoid函数的近似计算状态机,其特征在于,所述第二计算状态用于将所述输入浮点数输入第一加法器、第一移位器进行所述第二逼近公式中的线性计算的同时,将所述输入浮点数输入乘法器和第二移位器进行所述第二逼近公式中的二次项计算,再使用第二加法器将所述线性计算的计算结果和所述二次项计算的计算结果相加,完成基于第二逼近公式的近似计算。

10.根据权利要求9所述的sigmoid函数的近似计算状态机,其特征在于,所述输入浮点数位于所述第三区间是指所述输入浮点数的符号位为1,阶码位<8'd129;所述第二常数值为0,所述第二逼近公式为:


技术总结
本发明公开了一种Sigmoid函数的近似计算方法及近似计算状态机,其中的Sigmoid函数的近似计算方法,包括如下步骤:获取输入浮点数,并根据输入浮点数的符号位判断输入浮点数的正负;当输入浮点数为正值时,根据输入浮点数的阶码位判断输入浮点数是否位于第一区间;当输入浮点数位于第一区间时,使用加法器、乘法器以及移位器基于第一逼近公式得到近似计算结果;当输入浮点数位于第二区间时,输出第一常数值作为近似计算结果;第二区间为第一区间在正区间内的补区间。通过执行本发明中的方法,能够以较高的计算精度和较低的计算复杂度完成函数逼近。

技术研发人员:曾琳,梁志远,朱家鑫,尚禹宏,兰军,何滇,张野,宋子奇,查梦凡
受保护的技术使用者:西安电子科技大学芜湖研究院
技术研发日:
技术公布日:2024/1/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1