【学术论文】Sigmoid函数的分段非线性拟合法及其FPGA实现

摘要:

使用分段非线性逼近算法计算超越函数,以神经网络中应用最为广泛的Sigmoid函数为例,结合函数自身对称的性质及其导数不均匀的特点提出合理的分段方法,给出分段方式同逼近多项式阶数对逼近结果精度的影响。完成算法在FPGA上的硬件实现,给出一种使用三阶多项式处理Sigmoid函数的拟合结果及流水线架构,处理精度达到10-5数量级,最大频率达到127.327 MHz,满足了高速、高精度的处理要求。

中文引用格式: 宋宇鲲,高晓航,张多利,等. Sigmoid函数的分段非线性拟合法及其FPGA实现[J].电子技术应用,2017,43(8):49-51.
英文引用格式: Song Yukun,Gao Xiaohang,Zhang Duoli,et al. The piecewise non-linear approximation of the sigmoid function and its implementation in FPGA[J].Application of Electronic Technique,2017,43(8):49-51.

0 引言

在实时图像处理、数字信号处理等领域内,经常需要对非线性函数进行高速计算[1]。而在人工神经网络中更是需要对大量的非线性函数进行计算。因此,在人工神经网络的研究领域内,研究如何高速地处理非线性函数具有十分重要的意义。在人工神经网络中应用最为广泛的是Sigmoid函数。目前对于Sigmoid函数实现技术的研究主要分为软件实现和硬件实现两个方面。由于软件相比硬件而言速度较慢并且并行程度很低,所以无法满足其快速处理的要求[2]。因此,在超大规模集成电路快速发展的当今时期,研究如何利用硬件快速处理Sigmoid函数显然更加有意义。

FPGA凭借其可重构技术的灵活性,成为解决Sigmoid函数高速计算问题的有力工具。目前利用FPGA计算Sigmoid函数常用的方法有查找表法、CORDIC算法、Taylor级数展开法和分段线性逼近法。查找表法[3]提前将所有的计算结果保存在一个ROM中,这种方法计算方便且容易实现,但是随着函数计算精度的提高和拟合区间的增加,其所需求的存储资源会显著增加,资源消耗很高。CORDIC算法[4]通过多次迭代将一些复杂的运算转换成为简单的运算,但是随着精度增高,其算法的迭代次数也会提高,计算速度会减慢。Taylor级数展开法[5]在精度要求较高的条件下会增加乘法器和加法器的使用,资源消耗巨大。分段线性逼近法[6-7]将查找表和低阶多项式相结合,计算速度较快,是当前解决此问题的主流方法,然而在有限的分段区间用低阶的多项式进行拟合运算,其计算结果在精度上并没有优势,难以实现高精度的运算要求。

为了解决上述问题,本文采用传统的分段非线性逼近法来处理Sigmoid函数。文献[8]中使用了分段非线性逼近法来处理神经网络中常见的双曲正切函数,然而文中并没有给出分段方法的依据,同时在各小段的分段区间所得到的精度也差异很大。因此,本文针对这一问题,以Sigmoid函数为研究对象,结合Sigmoid函数自身对称及其导数不均匀的性质,利用数值分析中的最小二乘法作为逼近原理,给出合理的分段方式。同时给出对比均匀分段的处理方式下逼近精度的差异情况。利用硬件描述语言实现硬件结构的设计,并在Xilinx Virtex-5系列的XC5VLX110T器件上完成实际验证和性能测试,从资源使用、运算速度同计算精度等方面对设计结果进行合理评估。

1 Sigmoid函数的分段非线性拟合方案及结果分析

分段非线性逼近法的基本原理是用高阶多项式来逼近曲线。首先将待逼近函数按照一定的方式进行分段,之后对每一个小段构建高阶多项式近似地代替原曲线,从而将复杂的非线性函数的计算问题转换成为多项式的计算问题。

由泰勒公式的原理可知,函数在某一点按照泰勒公式展开,随着展开的项数越来越多,逼近式的误差会越来越小。并且,随着项数的增加,每一项在数值上逐渐递减,并最终趋向于无穷小。函数在某一点按照泰勒公式展开,保留N阶多项式时,其之后的所有项数均影响误差,并且(N+1)阶导函数的数值直接影响N阶多项式的逼近结果。具体影响的方式为:N+1阶导数取绝对值后,其值越大,表明函数在这一点处使用N阶多项式逼近的误差越高,因此在这点处对应的分段区间间隔应该相对较小;其值越小,表明函数在这一点处使用N阶多项式逼近的误差越低,因此在这点处对应的分段区间间隔应该相对较大。在考虑分段时,可以根据N+1阶导数的数值大小,将函数的分段区间进行动态调整,避免造成误差过大。通过这样的处理方式,可以对分段方式进行一些优化。下面结合Sigmoid函数进行具体分析。

首先分析Sigmoid函数及其导函数的性质,如图1。F(x)为Sigmoid函数,G(x)为其4阶导函数。在保证足够的分段区间时,使用3阶多项式就能够得到较高的逼近精度。因此,本文使用3阶多项式逼近Sigmoid函数,4阶导函数G(x)直接影响逼近的误差。通过研究图像,得出以下结论:

(1)Sigmoid函数F(x)是以点(0,0.5)为对称中心的函数,因此在计算Sigmoid函数值时只需计算正区间或负区间,另一半可通过对称关系得到;

(2)以正区间为研究对象,Sigmoid函数的4阶导数在x=1处附近取得最大值,并向两侧衰减,随着x的不断增大,4阶导数最终趋向于0。

为了验证这种基于导数的分段方法在逼近结果的精度方面是否具有优势,本文选择了将这种分段方式与传统的等间距分段方式作对比。首先,将Sigmoid函数的待处理区间进行等分,之后比较每个子区间的函数4阶导数的整体变化规律,对导数相对较大的区间进行缩短,对导数相对较小的区间进行扩展。分别对这两种分段方式下所有的子区间构建3阶多项式,通过对比函数各子区间及整体区间的误差情况来验证此分段方法的优势。

本文选用MATLAB作为函数拟合工具,构建拟合多项式使用最小二乘法原理,数据类型选取双精度浮点数,这样可以保证在计算过程中精度比较高。下面分别给出两种分段方式下的分段结果及误差对比。为了保证实验结果可靠,各分段区间取的数足够大(这里以0.000 1为间隔取数),结果见表1。

通过表1可以得出,当使用三阶多项式对Sigmoid函数进行逼近时,参照4阶导函数的数值而分段的处理方式在平均绝对误差和均方差两项指标上均优于等间距分段的处理方式。从整体区间上看,平均绝对误差减小了51.4%,均方差减小了71.9%。

2 Sigmoid函数的FPGA实现

为了实现高精度的拟合要求,本文采用表1中基于导数的分段方式,使用三阶多项式对Sigmoid函数进行拟合处理,并给出其FPGA实现结构,如图2所示。设三阶多项式为y=Ax3+Bx2+Cx+D,其在FPGA中的计算流程为:

(1)取系数。各分段区间下的系数A、B、C、D预先存储在RAM中,通过输入x取出与之对应的系数A、B、C、D。

(2)计算Cx和x2

(3)计算Cx+D、Bx2和x2

(4)计算Bx2+Cx+D和Ax3

(5)计算Ax3+Bx2+Cx+D。

(6)用1和步骤(5)的结果做减法。

(7)选择器。当输入的x为非负数时,输出为步骤(5)的结果;若输入的x为负数,输出为步骤(6)的结果。

上述所有的乘法器、加法器和减法器的设计采用Xilinx公司提供的32位单精度浮点型IP核实现,整个算法采用了流水线结构,数据输入后,10个周期延迟后得到计算结果。具体实验数据如表2所示。

在实验过程中,表1的误差结果是由算法在FPGA上计算得到的结果与Sigmoid函数的真实值(精度远高于实验的精度)之间的对比求得的。表2中的误差结果与表1中的误差结果相比较在平均绝对误差方面略有不足,是由于在FPGA中使用的32位单精度浮点数在精度上不同与MATLAB上使用的64位双精度浮点数,所以两者之间存在略微差别,然而并不影响算法的准确性。

采用基于导数的分段方式并使用三阶多项式的拟合方案在FPGA上所使用的资源虽然比经典的CORDIC算法及分段线性逼近方法较多,然而这种拟合方案在算法的精度上达到了10-5数量级,各小段分段区间甚至达到10-6数量级。当然,采用更高阶数的多项式逼近在理论上能够实现更高的精度,然而这样的代价是会消耗更多的硬件资源。本文使用的分段非线性逼近法对Sigmoid函数的处理结果上,精度远远大于另两种算法在现有的文献中所取得的精度。并且若要达到较高精度,CORDIC算法会大大的增加迭代次数从而降低运算速度,分段线性逼近则会大大的增加存储资源。

3 结论

本文针对人工神经网络中应用最为广泛的Sigmoid函数,采用传统的分段非线性逼近方法,结合Sigmoid函数自身对称的性质及其导数不均匀的特点,给出合理的分段方式,在各小段分段区间内使用数值分析中经典的最小二乘法作为拟合逼近原理,得出初始分段间距同逼近多项式的阶数对拟合结果精度的影响。按照上述方法给出一种在精度上达到了10-5数量级的Sigmoid函数的拟合方案,实现了现阶段对Sigmoid函数的高速、高精度的处理要求。

参考文献

[1] JAIN V K,LIN L.High-speed double precision computation of nonlinear functions[C]//Symposium on Computer Arithmetic.IEEE Computer Society,1995:107.

[2] MOLZ R F,ENGEL P M,MORAES F G,et al.Codesign of fully parallel neural network for a classification problem[J].

[3] LEBOEUF K,NAMIN A H,MUSCEDERE R,et al.High speed VLSI implementation of the hyperbolic tangent sigmoid function[C]//International Conference on Convergence and Hybrid Information Technology.IEEE,2008:1070-1073.

[4] 万书芹,陈宛峰,黄嵩人,等.基于改进CORDIC算法实现高速直接数字频率合成器[J].仪器仪表学报,2010,31(11):2586-2591.

[5] OUALI J,SAUCIER G.Fast generation of neuro-ASICs[M]//International Neural Network Conference.1990.

[6] ARMATO A,FANUCCI L,SCILINGO E P,et al.Low-error digital hardware implementation of artificial neuron activation functions and their derivative[J].Microprocessors & Microsystems,2011,35(6):557-567.

[7] BASTERRETXEA K,TARELA J M,DEL CAMPO I.Digital design of Sigmoid approximator for artificial neural networks[J].Electronics Letters,2002,38(1):35-37.

[8] XIE Z Z,ZHANG S Y.A non-linear approximation of the sigmoid function based FPGA[M]//Proceedings of the 2011,International Conference on Informatics,Cybernetics,and Computer Engineering(ICCE2011) November 19-20,2011,Melbourne,Australia.Springer Berlin Heidelberg,2011:221-223.

作者信息:

宋宇鲲,高晓航,张多利,杜高明

(合肥工业大学 微电子设计研究所,安徽 合肥230009)

 

(0)

相关推荐

  • 什么是非线性系统 | 集智百科

    本文是对集智百科中"非线性系统"词条的摘录,参考资料及相关词条请参阅百科词条原文. 本词条由集智俱乐部众包生产,难免存在纰漏和问题,欢迎大家留言反馈或者前往对应的百科词条页面进行修 ...

  • 导数的知识体系及拓展

    一.引入 导数思想是由费马研究极值引入;牛顿从力学的角度思考:已知物体的运动规律求速度;莱布尼茨从几何角度引入:已知曲线,求它的切线. 1. 瞬时速度(物体直线运动,路程和时间的函数关系为 s (t  ...

  • 机器学习常用激活函数

    机器学习常用激活函数 摘要: 激活函数就是神经网络输出端的一个节点,来连接两个神经网络.本文主要介绍激活函数的功能以及激活函数类型. 什么是激活函数? 激活函数就是神经网络输出端的一个节点,来连接两个 ...

  • 【学术论文】基于改进人工势场法的无人机在线航路规划算法

    无人机在线航路规划是综合考虑无人机机动性能.任务需求等约束条件因素应对动态变化的规划环境,进而规划出一条满足任务需求的最优或可行航路[1].传统的航路规划算法是以固定的任务目标.稳定不变的飞行环境为假 ...

  • 【学术论文】电容式位移传感器的非线性拟合比较

    摘要: 针对控制棒落棒时棒位指示传感器的电容和位移关系,在水平位置下,在4种不同的工况下将控制棒数据进行标定,对标定得到的电容值取最大值和最小值的二分之一作为拟合值,分别采用三次样条插值.最小二乘法. ...

  • 如何利用Origin中的Mask功能对数据分段线性拟合或非线性拟合

    在用Origin处理数据的时候,不同区间内的曲线经常会有较大的差别,这种情况下如果用一个曲线函数来拟合所有数据往往成为不可能实现的任务,这时可以利用Origin中的Mask(遮罩)功能对数据进行分段线 ...

  • 日月星辰——摘自“气功学术论文”

    X 生活既是修行 来源于--日月精华 2017-12-07 19:36:25 134 紫薇圣人 吸收日月精华,在有月光的夜晚,穿白色的衣服,面对月亮,立在月光之下或学佛家的禅座也行,微闭双目,放松身体 ...

  • 学术论文里的标点符号用法汇总(五):撇号

    iJournal 学术期刊信息查询 266篇原创内容 Official Account 前四期,笔者给大家总结了学术论文里冒号.分号.四种括号.连字符和破折号的用法,本期将总结学术论文里撇号的正确使用 ...

  • 推荐 | 那些好用的留学生学术论文网站

    每一个留学生都有很多烦恼, 其中写论文一定榜上有名! 听说小哥哥小姐姐们 最近毕业论文写的头都快秃了? 听说想要申请博士的同学 开始写研究计划要开始查找和阅读大量文献了呢? 听说即将踏上留学路的萌新们 ...

  • 如何把一个没有亮点的临床试验包装成一篇“优秀”的学术论文

    本公众号名称是"医学论文与统计分析",既介绍统计方法,也介绍医学论文的写作.以往侧重统计方法,从今天起,我将以随笔的形式,介绍一些论文写作的一些规范. 一般医学论文分为两种,干预性 ...

  • 研究生第一篇学术论文常犯的问题总结

    希望将来研究生们能够避免这些问题,提高科研论文写作效率. 01.摘要与结论几乎重合 这一条是我见过研究生论文中最常出现的事情,很多情况下,他们论文中摘要部分与结论部分重复率超过70%. 当然,我自己在 ...

  • 刊物介绍||略论《通报》“学术论文”栏目的文献学、目录学特征——以历史、地理类和宗教、哲学类论文为中心的分析

    作者简介郭瑶,北京外国语大学中国海外汉学研究中心向群,山东大学历史文化学院 1摘要<通报>作为一份享誉世界百余载的专业汉学杂志,其始终保留的"学术论文"(Article ...