CN104680236A - 核函数极限学习机分类器的fpga实现方法 - Google Patents
核函数极限学习机分类器的fpga实现方法 Download PDFInfo
- Publication number
- CN104680236A CN104680236A CN201510079979.0A CN201510079979A CN104680236A CN 104680236 A CN104680236 A CN 104680236A CN 201510079979 A CN201510079979 A CN 201510079979A CN 104680236 A CN104680236 A CN 104680236A
- Authority
- CN
- China
- Prior art keywords
- matrix
- centerdot
- sample
- kernel function
- formula
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种核函数极限学习机分类器的FPGA实现方法,包括如下步骤:首先在PC机上对原始分类样本进行预处理得到样本,然后通过RS232端口将样本由PC机传输到FPGA中,FPGA将样本存入RAM中,根据训练样本的特征数和样本数确定学习机的决策函数、拓扑结构。核函数极限学习机具有好的分类能力、操作简单,训练速度快,泛化性好,同时也可以避免了陷入局部最小值的危险。本发明创新点采用并行、串行混合编程,可以有效地降低资源的利用;采用降维法的矩阵分块求逆的FPGA实现,适用于任意维数矩阵求逆,修改简单方便,可以有效地提高工作效率;可根据精度要求使用不同位宽的二进制数,可以在保持精度的情况下有效地降低资源的消耗。
Description
技术领域:
本发明属于模式识别技术领域,具体涉及一种核函数极限学习机分类器的FPGA实现方法。
背景技术:
人工神经网络是在人类对其大脑神经网络认识理解的基础上人工构造的能够实现某种功能的神经网络。他实际上是一个由大量简单神经元相互连接而成的复杂网络,具有高度非线性特征,并行性,能够进行复杂的逻辑操作和非线性关系实现的系统。但是前馈神经网的训练主要采用梯度下降算法,所有的权值都需要调节,这样限制了神经网络的训练速度。G.B.Huang对此进行了研究,提出了极限学习机(ELM)算法,该算法对单隐层分类器的输入权值和隐层节点偏移量进行随机赋值,并且只需对隐含层输出矩阵进行广义逆操作即可得到网络的输出权值。该算法具有学习速度快,操作简单,错误率低等优点,在最近几年内得到很快的发展。在分类方面,由于最初的ELM的训练是基于误差为零而推导出来的,主要考虑的是训练误差,没有对输出权值进行优化,也不是去寻找类别之间的最优分类超平面,而且会造成训练过度。因此并不适合分类,故在此基础上提出了核函数极限学习机。该方法寻找分类数据之间的最优超平面,采用了二次优化的方法在最小化训练误差的同时对输出权值进行了优化,得到了全局最优点,具有很好的泛化能力,分类方面的表现优于ELM,而且同时具有操作简单、训练速度快等优点。
目前核函数极限学习机只是在计算机上编程实现的,虽然计算机具有高度灵活性但由于计算机串行运算并不适合神经网络。近些年FPGA技术发展迅速,FPGA作为专用集成电路(ASIC)领域中的一种半定制电路,其高速、并行和可重构的特点成为神经网络硬件实现最合适的芯片。
发明内容:
本发明的目的在于提出了一种核函数极限学习机分类器的FPGA实现方法。该实现方法实现过程中采用串行,并行混合编程,同时采用流水线编程思想,该实现方法可以在保持较高的运算速度的前提下,可以有效的节省硬件资源,提高资源的利用率。在矩阵求逆时采用降维法完成矩阵求逆,将大维数矩阵分解成小维数的矩阵,可以有效的提高工作效率。
为达到上述目的,本发明采用如下的技术方案予以实现:
核函数极限学习机分类器的FPGA实现方法,包括如下步骤:
首先在PC机上对原始分类样本进行预处理得到样本,然后通过RS232端口将样本由PC机传输到FPGA中,FPGA将样本存入RAM中,根据训练样本的特征数和样本数确定核函数极限学习机的决策函数、拓扑结构。
本发明进一步的改进在于,在PC机上对原始分类样本预处理实现过程为:首先确定FPGA上所需二进制定点数位数,n1表示整数位位数、n2表示小数位位数,初定1位符号位、3位整数位及12位小数位,当运算产生溢出时或精度不够时增加相应的二进制位数;然后将原始分类样本进行归一化处理,将归一化的数据乘以2n2并四舍五入到整数位,得到十进制数,最后将十进制数转换成十六进制数,得到样本。
本发明进一步的改进在于,通过RS232端口将样本数据传输到FPGA中,传输时先高位后低位,FPGA接收数据,当接收到一个数字对应的ASCII码时,将ASCII码转成该数字对应的二进制数,暂存在存储器中;当再次接收到数字对应的ASCII码时,将存储器中的二进制数左移4位然后将刚接收的数字对应的二进制数赋值给存储器中二进制数的低四位;当接收到非数字对应的ASCII码时,将存储器中的数据写入RAM中,然后将存储器中的数据清零,准备接收下一个数据。
本发明进一步的改进在于,核函数极限学习机决策函数的确定方法如下:
设有一组样本集(xi,ti),i=1,...,N,N为正整数,其中xi∈Rd,R为实数集,d为样本特征数,ti=[ti,1,ti,2,...,ti,m]T是与第i个样本相对应的分类类别,m表示类别数,如果第i个样本属于第j类,则有ti,j=1,其余为-1,核函数极限学习机分类决策面描述为f(xi)=h(xi)β,其中β为权值向量,h(xi)=[h(xi,1),...,h(xi,d)]为样本从输入空间到特征空间的非线性映射,核函数极限学习机的分类学习即解决下面的受约束优化问题:
最小化:
其中:C为惩罚参数、ξi为松弛变量,i=1,...,N;
约束条件:
求解该问题引入拉格朗日函数得:
其中,αi=[αi,1,...,αi,m],αi,j是拉格朗日乘子,利用KKT条件分别对拉格朗日函数的各个变量求偏导数即得:
对式(4)~式(6)进行变换得式:
式中:H=[h(x1)T,h(x2)T,...,h(xN)T]T,T=[t1、t2,...,tN]T;
将式(7)其代入决策函数得:
引入高斯核函数,核函数定义为:
K(xi,xj)=h(xi)·h(xj)=exp(-γ||xi-xj||2) (9)
其中,γ为高斯核函数宽度参数
其中:
Ω=HHT;Ωi,j=h(xi)·h(xj)=K(xi,xj) (11)
设W由训练样本计算得到,此处定义其为输出权值向量;
把样本x代入决策函数(10)后得到输出f(x),其中fj(x)表示第j个输出,则
f(x)=[f1(x),...,fm(x)],对于样本x的分类结果表示为:
本发明进一步的改进在于,由式(10)确定核函数极限学习机拓扑结构:输入层节点数为d,中间层节点数为N,输出层节点数为m;将该核函数极限学习机分成两部分:训练部分和测试部分;
训练部分即输出权值W的计算,按以下步骤实现;
A1、矩阵Ω见式(11)的求解模块,构造一个高斯核函数模块按流水线的方式实现,核函数采用流水线的方式完成运算,分为减法、平方、求和、乘法及指数函数五步完成,每一步消耗一个时钟周期,五个步骤按流水线的方式工作,当训练样本连续输入时,在第5个时钟周期后计算结果连续输出;
A2、将上一步计算结果存储到存储器中,实现(1/C+Ω),将变量1/C加到矩阵Ω的对角线上,构造计数器和加法器,加法器的一端接变量1/C,另一端接存储器的输出端,加法器的输出端接存储器的输入端,计数器的输出cnt作为存储器的地址,4个时钟周期为一个循环,t=1时读数据,t=2时输出的数据与变量1/C相加,t=3时将求和结果写回原地址中,t=4时计数器更新,cnt=cnt+(N+1);即指向对角线的下一个元素,运算结束后将数据输出;
A3、构造矩阵求逆模块将A2的输出数据写入模块内的存储器中然后进行求逆运算,运算结束后将数据输出,设A2的输出结果为ANN,设A3的输出结果为BNN即
A4、将A3输出的数据存入RAM中,完成W=BNNT,分类标签T分别存到RAMt1,RAMt2,…,RAMtm,构造m个乘法累加器,m个存储器RAMw1,RAMw2,…,RAMwm,第j个乘法累加器的两个输入端口,一端接RAM的输出,另一端接RAMtj的输出,完成运算,将结果存入RAMwj中,其中i=1,2…,N,m个乘法累加器是同时并行运算,结果分别存入RAMw1,RAMw2,…,RAMwm中,RAMw中所存储的数据即为输出权值,其中j=1,2….,m;
测试部分即网络输出模块的实现,完成下式运算
B1、测试样本的核函数运算模块
由公式(13)知有N个核函数,此处采用流水线的方式来完成N个核函数的运算,测试样本X∈Rd送入核函数的一端,另一端接训练样本,N组训练样本连续输入,5个时钟周期后N个计算结果连续输出;
B2、构造m个乘法累加器,其中第j个乘法累加器的两个输入端,一个端口接B1的输出数据,另一个端口接RAMwj的输出,当B1数据输出时,同时读取RAMwj中的对应输出权值同时送入乘法累加器中进行并行运算,m个乘法累加器并型运算产生m个输出值,其中j=1,2….,m;
B3、判断模块,上一步有m个输出,分别为f1(x),f2(x),…,fm(x),首先令T(0)=1,其余位为0;然后取f1(x)和f2(x)进行比较,如果f1(x)≥f2(x)则max=f1(x)T不变,否则max=f2(x),T(1)=1,其余位置0;然后按此方法取max与下一个数据fj(x)进行比较,如果max≥fj(x)则max,T不变,否则max=fj(x),T(j-1)=1,其余位置0,全部比较完后将T输出。
本发明进一步的改进在于,高斯核函数的实现方法如下:
高斯核函数指数部分y=exp(-x)的实现,采用分段线性近似法,即用yi(x)=aix+bi进行分段近似,构造RAMa、RAMb分别存储参数(ai,bi),根据x所属的分段区间来选择参数(ai,bi),构造一个乘法器实现aix和一个带使能端的加法器实现与bi相加;
高斯核函数整体的实现:
第一步构造d个减法器实现:(xi,1-xj,1),(xi,2-xj,2),…,(xi,d-xj,d);
第二步构造d个乘法器,将减法器的输出同时送入乘法器的两个端口完成平方运算:(xi,1-xj,1)2,(xi,2-xj,2)2,…,(xi,d-xj,d)2;
第三步构造加法器模块对乘法器L个输出结果进行求和
第四步构造乘法器实现求和结果与参数γ的相乘运算
第五步最后将第四步的结果代入高斯核函数指数模块即得到输出。
本发明进一步的改进在于,步骤A3中,矩阵求逆如下:此处为大维数矩阵分块求逆的方法,该方法适合任意维数的矩阵进行求逆,以下列举一次分块就能达到要求的矩阵,对于更大维数的矩阵依照该方法继续进行多次分块,设n=N/2,其中N为偶数,如果N为奇数时,先将该矩阵扩大一维变成(N+1)维的矩阵再进行分块求逆,求完逆后取前N行N列矩阵即为原N维矩阵的逆,见式(14);
C1、将大维数的矩阵分成4块,小块矩阵维数是原矩阵维数的一半,见式(15)
C2、首先对A11进行LU分解,方法如下
设
将式(16)展开并进行变形得如下计算公式:
按照式(17)运算即得到矩阵L11、矩阵U11;
C3、上三角矩阵求逆,对矩阵U11进行求逆,对于下三角矩阵经过转置后使用该方法;设矩阵U11的逆矩阵为V11则有:
式中,E为单位矩阵;
将式(18)展开并进行变形得:
按照(19)公式运算即求出同样的方法求出
C4,对ANN进行LU分块,见式(20):
将式(20)展开并进行变形得式(21);
①、根据步骤C2和C3即求出(21)式(1)中的矩阵
②、将矩阵代入(21)式(2)中求出L21,将矩阵代入(21)式(3)中求出U12;
③、将矩阵L21和U12代入(21)式(4)中得到L22U22,按照C2和C3的方法求出矩阵:
C5、上三角矩阵分块求逆方法,对下三角矩阵进行转置变成上三角矩阵后运用该方法,设U矩阵的逆矩阵为V矩阵,则有:
将矩阵(22)展开并进行变形得;
其中矩阵U12在上一步已求得,代入式(23)即求出V11、V22、V12;同样的方法能够求得下三角矩阵的逆矩阵;
C6、LU矩阵的分块相乘即得到设上三角矩阵L阵的逆矩阵为Y;
C1~C6所述为矩阵分块求逆的原理,在构造矩阵求逆模块时应先构造简单元件包括加法器、减法器、乘法器、除法器以及RAM,然后构造小维数的矩阵求出其上三角逆矩阵和下三角逆矩阵,然后按照原理进行扩维直到得到所求维数上三角逆矩阵和下三角逆矩阵,最后将上三角逆矩阵乘以下三角逆矩阵即为所求矩阵的逆矩阵。
与现有技术相比较,本发明具备如下优点:
1、核函数的运算采用分步运算,每一步内采用并行,整体采用流水线的方法,所有的模块同时参与运算,具有运算效率高,运算速度快,资源消耗少等特点;
2、任意维数的矩阵的求逆方法,将大维数的矩阵通过多次降维的方法分成小维数矩阵,即反过来通过由小维数的矩阵逆操作构造大一级的矩阵逆,大一级的矩阵逆再构造更大一级的矩阵逆,由于每次构造大一级矩阵逆操作时步骤相同,可以有效的节省工作量,提高工作效率;
3、核函数极限学习机采用自顶而下模块化的编程思想,模块与模块之间采用串行连接,这样有利于模块分工,模块的修改。
附图说明:
图1为高斯核函数指数部分硬件实现原理图;
图2为高斯核函数整体硬件实现原理图;
图3为高斯核函数运行仿真图,其中数据来自鸢尾花数据(Iris);
图4为60维矩阵的分块过程图;
图5为核函数极限学习机分类器训练部分模块图;
图6为核函数极限学习机分类器测试部分模块图;
图7为核函数极限学习机分类器的FPGA实现方法的流程图。
具体实施方式:
下面结合附图和具体实施对本发明进行详细说明。
构造核函数极限学习机分类器的拓扑结构;
设有一组样本集(xi,ti),i=1,...,N,其中xi∈Rd,d为样本特征数,ti=[ti,1,ti,2,...,ti,m]T是与第i个样本相对应的分类类别,m表示类别数,如果第i个样本属于第j类,则有ti,j=1,其余为-1,核函数极限学习机分类决策面描述为f(xi)=h(xi)β,其中β为权值向量,h(xi)=[h(xi,1),...,h(xi,d)]为样本从输入空间到特征空间的非线性映射,核函数极限学习机的分类学习即解决下面的受约束优化问题:
最小化:
约束条件:
求解该问题引入拉格朗日函数得:
利用KKT条件分别对拉格朗日函数的各个变量求偏导数即得:
对式(4)~式(6)进行变换得式:
将式(7)其代入决策函数得:
引入高斯核函数,核函数定义为:
K(xi,xj)=h(xi)·h(xj)=exp(-γ||xi-xj||2) (9)
其中γ为高斯核函数宽度参数,决策函数变形为:
其中:
Ω=HHT;Ωi,j=h(xi)·h(xj)=K(xi,xj) (11)
设W由训练样本计算得到,定义其为输出权值向量。
把样本x代入决策函数(10)后得到输出f(x),其中fj(x)代表第j个输出,则f(x)=[f1(x),...,fm(x)],对于样本x的分类结果表示为:
本发明将对如何利用FPGA实现方程(10)、(12)进行说明。本发明采用VHDL语言进行编写,使用的开发平台为Quartus II 13。在程序编写过程中的基本元件直接使用IP软核包括减法器(SUB)、加法器(ADD)、乘法器(MULT)、除法器(DIV)、乘法累加器(MAC)以及存储器ROM和RAM。
中间数据的处理:在运算过程中,运算模块的输入、输出应具有统一的二进制位数,设运算模块采用q位二进制数格式为1位符号位、n1位整数位、n2位小数位,即二进制位数为:q=1+n1+n2。乘法器的设置,当输入数据是q位时对应的输出数据是2q位,为了前后模块相互通信应使输出数据变为q位,此时应保留首位符号位和第(n1+2·n2)位~n2位,其余位舍去。除法模块的设置,为了前后衔接,应使输入数据q位的二进制数左移n2位,低位补0,对于输出数据取最高位的符号位和低(n1+n2)位作为输出,其余舍去。
高斯核函数模块的实现:高斯核函数指数模块采用分段线性近似法,即用yi(x)=aix+bi进行分段近似,当x=8,高斯核函数y=exp(-8)=0.000335,已经很接近0,当x>8时,取y=0,将0~8分成64分,即x每变化1/8,取一组(ai,bi)。如图1所示构造2个18位的RAM存储(ai,bi),深度是64,即用6位二进制数表示地址。定义一个乘法器(MULT)实现ai和x相乘,一个带使能端的加法器(ADD)实现aix和bi相加。
核函数模块的实现:该模块完成输入数据和权值的核函数运算,即完成如图2此处采用流水线的方式实现核函数运算,第一步构造L个减法器(SUB)实现(xi1-xj1),(xi2-xj2),…,(xid-xjd);第二步构造L个乘法器(MULT),将减法器的输出同时送入乘法器的两个端口完成平方运算(xi1-xj1)2,(xi2-xj2)2,…,(xid-xjd)2;第三步构造加法器模(ADD)块对乘法器L个输出结果进行求和第四步构造乘法器(MULT)实现求和结果与参数γ的相乘运算第五步最后将第四步的结果代入高斯核函数指数模块得到输出结果;上述核函数运算的5个步骤中的元件中均定义有使能控制端,当满足使能信号为高电平时,在时钟上升沿即可触发运算,此时核函数可进行流水线操作,图3为高斯核函数运行仿真图,输入数据来自鸢尾花(Iris)数据,第一次输入1组数据[0.694、0.417、0.833、0.083、0.667、0、0.042],在第5个时钟周期后产生输出0.1929,当连续输入6组数据时,在第5个时钟周期后数据连续输出,图中数据采用16进制数表示;
矩阵分块求逆模块:首先采用LU矩阵分解成上三角(U)、下三角矩阵(L)即A=L·U,然后对三角矩阵求逆,最后进行矩阵相乘A-1=U-1·L-1,如果矩阵维数很大时直接用上面的方法求逆计算量会很大,故在此使用一种适合任意维数的降维法矩阵求逆的方法,对于N维矩阵,如果N为偶数则直接平均分成4块,如果N为奇数则将矩阵扩大维变成(N+1)维矩阵然后进行分块。对分块后的矩阵进行求逆,最后求出整个矩阵的逆矩阵,图4为60维矩阵A60,60的分块图,首先将60维矩阵分成30维,然后分成15维,进行扩维变成16维,然后分成8维,4维,运算时则由小维数矩阵逆构造大维数的矩阵逆,具体按下面步骤运算;
①、4维矩阵的LU分解
将式(25)展开并进行变形得如下计算公式:
求解式(26)运算得到矩阵L1~4,1~4,U1~4,1~4。
②、上三角矩阵求逆,对矩阵U1~4,1~4进行求逆,对于下三角矩阵经过转置即可使用该方法;设矩阵U1~4,1~4的逆矩阵为V1~4,1~4则有:
将式(27)展开并进行变形得:
求解式(28)即可求出同样的方法也可求出
③、对A1~8,1~8进行LU分块分解,得下式:
将式(29)展开并进行变形得式(30);
a、由步骤①和②的方法求出(30)式(1)中的矩阵
b、将矩阵代入(30)式(2)中,可求出L5~8,1~4,将矩阵代入(30)式(3)中,求出U1~4,5~8;
c、将矩阵L5~8,1~4和U1~4,5~8代入(30)式(4)中,得到L5~8,5~8U5~8,5~8,由步骤①和②的方法求出矩阵:
④、上三角矩阵分块求逆方法(对下三角矩阵进行转置变成上三角矩阵即可运用该方法),设U矩阵的逆矩阵为V矩阵,则有:
将矩阵(31)展开并进行变形得;
式(32)中的矩阵U1~4,5~8、均由步骤③求得,代入式(32)即得到V1~8,1~8,即将下三角矩阵经过转置使用同样的方法求得
⑤、按照步骤③、④的方法,求得对于15位的矩阵可以通过扩维的方法如式(33)变成16维的矩阵,调用上面的方法,求得然后分别取矩阵的前15行15列即为矩阵A1~15,1~15的
得到然后按照步骤③、④的方法求得,进而求得
⑥、矩阵A60,60的逆矩阵即可由式(34)求得;
矩阵求逆的FPGA实现,首先构造求的模块,然后构造的模块、的模块、的模块、的模块,高一级的模块可以直接调用低一级的模块,最后构造矩阵相乘模块得到运算结果,由于每次扩维的方法步骤相同,所以仅需对程序进行少量修改即可。
基本元件、模块构造好以后,按照如图5和图6所示的结构连接起来,然后将控制信号,状态信号引入状态机,去控制和监测整个程序的进行。程序按照图7所示的流程进行。
A1:进行复位,所有模块回到初始状态;
A2:初始化,将训练样本及其分类标签通过RS232由PC机存入到FPGA双端口的RAM中(将样本按特征分成d部分分别存储到d个RAM,d个RAM使用相同的地址,一个样本的d个特征在RAM占用相同的地址);
A3:启动训练模块如图5,首先进行训练数据的核函数运算,
Ω=HHT;Ωi,j=h(xi)·h(xj)=K(xi,xj);训练样本存储在双端口的RAM中,定义两个计数器,cnta,cntb作为双端口RAM的两个地址读取数据,两个样本送入核函数中运算,核函数的使能端全部置高电平。每个时钟周期,cntb=cntb+1,当cntb=(N-1)时,cntb清零,cnta=cnta+1;当cnta计数到N时,运算结束。随着计数器更新,数据连续不断地送入核函数,按流水线不断的运算并产生输出。
A4:当A3状态启动时,延时5个时钟周期,启动加法模块:接收上一步的输出数据,将其存储到存储器中,构造一个计数器CNT,一个加法器ADD,实现(1/C+Ω),加法器的一端接1/C,另一端接存储器的输出端,加法器的输出接存储的输入端口,计数器的输出端(cnt)作为存储器的地址,4个时钟周期为一个循环,t=1时读取数据,t=2时输出数据与1/C相加,t=3时将求和结果存回原地址中,t=4时计数器更新,cnt1=cnt1+(N+1)。即指向对角线的下一个元素,当计数器记到N2时,运算结束,将完成信号Ready置高电平,状态机跳到下一状态,延时2个时钟将数据输出。
A5:启动矩阵求逆模块,首先将A4输出数据存入存储器,待数据全部读入以后,进行运算,运算结束后将Ready置高电平,同时延迟两个时钟周期后将数据输出。状态机检测到信号后,跳到下一状态。
A6:矩阵乘模块:将A5数据存入RAM中,完成W=BNNT,分类标签T分别存到RAMt1,RAMt2,…,RAMtm,构造m个乘法累加器MAC,m个存储器RAMw1,RAMw2,…,RAMwm,第j个乘法累加器MAC的两个输入端口,一端接RAM的输出,另一端接RAMtj的输出,完成运算,将结果存入RAMwj中,其中i=1,2….,N,m个乘法累加器是同时并行运算,结果分别存入RAMw1,RAMw2,…,RAMwm中,RAMw中所存储的数据即为输出权值,其中j=1,2….,m;当计算结束后,Ready置高电平,跳到下一状态。
A7:检测外部的测试样本是否准备好,当检测到高电平时,跳到下一个状态。
A8:启动测试模块如图6:测试样本的分类运算,首先完成测试样本与输入权值的核运算,输入权值即训练样本,隐含层共有N个核函数,所以有N组输入权值(输入权值在系统初始化时存入RAM中)。核函数采用流水线操作,测试数据不变,输入权值连续输入时,在第5个时钟周期后数据开始连续输出。即当第5个时钟周期第1个核函数数据输出,同时送入m个乘法累加器一端,另一端输入对应的输出权值进行并行相乘,第6个时钟周期第2个训练样本的核函数数据输出,送入m个乘法累加器与对应的输出权值相乘,当第N个核函数产生输出,送入乘法累加器与对应的输出权值相乘,则计算完成,m个乘法累加器输出端的数据保持不变。Ready置高电平。状态跳到下一个状态。
A9:判断模块,上一步有m个输出,分别为f1(x),f2(x),…,fm(x),首先令T(0)=1,其余位为0;然后取f1(x)和f2(x)进行比较,如果f1(x)≥f2(x)则max=f1(x)T不变,否则max=f2(x),T(1)=1,其余位置0;然后按此方法取max与下一个数据fj(x)进行比较,如果max≥fj(x)则max,T不变,否则max=fj(x),T(j-1)=1,其余位置0,全部比较完后将T输出,同时状态机跳到A7,准备测试下一组样本。
Claims (7)
1.核函数极限学习机分类器的FPGA实现方法,其特征在于,包括如下步骤:
首先在PC机上对原始分类样本进行预处理得到样本,然后通过RS232端口将样本由PC机传输到FPGA中,FPGA将样本存入RAM中,根据训练样本的特征数和样本数确定核函数极限学习机的决策函数、拓扑结构。
2.根据权利要求1所述的核函数极限学习机分类器的FPGA实现方法,其特征在于,在PC机上对原始分类样本预处理实现过程为:首先确定FPGA上所需二进制定点数位数,n1表示整数位位数、n2表示小数位位数,初定1位符号位、3位整数位及12位小数位,当运算产生溢出时或精度不够时增加相应的二进制位数;然后将原始分类样本进行归一化处理,将归一化的数据乘以2n2并四舍五入到整数位,得到十进制数,最后将十进制数转换成十六进制数,得到样本。
3.根据权利要求1所述的核函数极限学习机分类器的FPGA实现方法,其特征在于,通过RS232端口将样本数据传输到FPGA中,传输时先高位后低位,FPGA接收数据,当接收到一个数字对应的ASCII码时,将ASCII码转成该数字对应的二进制数,暂存在存储器中;当再次接收到数字对应的ASCII码时,将存储器中的二进制数左移4位然后将刚接收的数字对应的二进制数赋值给存储器中二进制数的低四位;当接收到非数字对应的ASCII码时,将存储器中的数据写入RAM中,然后将存储器中的数据清零,准备接收下一个数据。
4.根据权利要求1所述的核函数极限学习机分类器的FPGA实现方法,其特征在于,核函数极限学习机决策函数的确定方法如下:
设有一组样本集(xi,ti),i=1,...,N,N为正整数,其中xi∈Rd,R为实数集,d为样本特征数,ti=[ti,1,ti,2,...,ti,m]T是与第i个样本相对应的分类类别,m表示类别数,如果第i个样本属于第j类,则有ti,j=1,其余为-1,核函数极限学习机分类决策面描述为f(xi)=h(xi)β,其中β为权值向量,h(xi)=[h(xi,1),...,h(xi,d)]为样本从输入空间到特征空间的非线性映射,核函数极限学习机的分类学习即解决下面的受约束优化问题:
最小化:
其中:C为惩罚参数、ξi为松弛变量,i=1,...,N;
约束条件:
求解该问题引入拉格朗日函数得:
其中,αi=[αi,1,...,αi,m],αi,j是拉格朗日乘子,利用KKT条件分别对拉格朗日函数的各个变量求偏导数即得:
对式(4)~式(6)进行变换得式:
式中:H=[h(x1)T,h(x2)T,...,h(xN)T]T,T=[t1、t2,...,tN]T;
将式(7)其代入决策函数得:
引入高斯核函数,核函数定义为:
K(xi,xj)=h(xi)·h(xj)=exp(-γ||xi-xj||2) (9)
其中,γ为高斯核函数宽度参数
其中:
Ω=HHT;Ωi,j=h(xi)·h(xj)=K(xi,xj) (11)
设W由训练样本计算得到,此处定义其为输出权值向量;
把样本x代入决策函数(10)后得到输出f(x),其中fj(x)表示第j个输出,则f(x)=[f1(x),...,fm(x)],对于样本x的分类结果表示为:
5.根据权利要求4所述的核函数极限学习机分类器的FPGA实现方法,其特征在于,由式(10)确定核函数极限学习机拓扑结构:输入层节点数为d,中间层节点数为N,输出层节点数为m;将该核函数极限学习机分成两部分:训练部分和测试部分;
训练部分即输出权值W的计算,按以下步骤实现;
A1、矩阵Ω见式(11)的求解模块,构造一个高斯核函数模块按流水线的方式实现,核函数采用流水线的方式完成运算,分为减法、平方、求和、乘法及指数函数五步完成,每一步消耗一个时钟周期,五个步骤按流水线的方式工作,当训练样本连续输入时,在第5个时钟周期后计算结果连续输出;
A2、将上一步计算结果存储到存储器中,实现(1/C+Ω),将变量1/C加到矩阵Ω的对角线上,构造计数器和加法器,加法器的一端接变量1/C,另一端接存储器的输出端,加法器的输出端接存储器的输入端,计数器的输出cnt作为存储器的地址,4个时钟周期为一个循环,t=1时读数据,t=2时输出的数据与变量1/C相加,t=3时将求和结果写回原地址中,t=4时计数器更新,cnt=cnt+(N+1);即指向对角线的下一个元素,运算结束后将数据输出;
A3、构造矩阵求逆模块将A2的输出数据写入模块内的存储器中然后进行求逆运算,运算结束后将数据输出,设A2的输出结果为ANN,设A3的输出结果为BNN即
A4、将A3输出的数据存入RAM中,完成W=BNNT,分类标签T分别存到RAMt1,RAMt2,…,RAMtm,构造m个乘法累加器,m个存储器RAMw1,RAMw2,…,RAMwm,第j个乘法累加器的两个输入端口,一端接RAM的输出,另一端接RAMtj的输出,完成运算,将结果存入RAMwj中,其中i=1,2…,N,m个乘法累加器是同时并行运算,结果分别存入RAMw1,RAMw2,…,RAMwm中,RAMw中所存储的数据即为输出权值,其中j=1,2….,m;
测试部分即网络输出模块的实现,完成下式运算
B1、测试样本的核函数运算模块
由公式(13)知有N个核函数,此处采用流水线的方式来完成N个核函数的运算,测试样本X∈Rd送入核函数的一端,另一端接训练样本,N组训练样本连续输入,5个时钟周期后N个计算结果连续输出;
B2、构造m个乘法累加器,其中第j个乘法累加器的两个输入端,一个端口接B1的输出数据,另一个端口接RAMwj的输出,当B1数据输出时,同时读取RAMwj中的对应输出权值同时送入乘法累加器中进行并行运算,m个乘法累加器并型运算产生m个输出值,其中j=1,2….,m;
B3、判断模块,上一步有m个输出,分别为f1(x),f2(x),…,fm(x),首先令T(0)=1,其余位为0;然后取f1(x)和f2(x)进行比较,如果f1(x)≥f2(x)则max=f1(x)T不变,否则max=f2(x),T(1)=1,其余位置0;然后按此方法取max与下一个数据fj(x)进行比较,如果max≥fj(x)则max,T不变,否则max=fj(x),T(j-1)=1,其余位置0,全部比较完后将T输出。
6.根据权利要求5所述的核函数极限学习机分类器的FPGA实现方法,其特征在于,高斯核函数的实现方法如下:
高斯核函数指数部分y=exp(-x)的实现,采用分段线性近似法,即用yi(x)=aix+bi进行分段近似,构造RAMa、RAMb分别存储参数(ai,bi),根据x所属的分段区间来选择参数(ai,bi),构造一个乘法器实现aix和一个带使能端的加法器实现与bi相加;
高斯核函数整体的实现:
第一步构造d个减法器实现:(xi,1-xj,1),(xi,2-xj,2),…,(xi,d-xj,d);
第二步构造d个乘法器,将减法器的输出同时送入乘法器的两个端口完成平方运算:(xi,1-xj,1)2,(xi,2-xj,2)2,…,(xi,d-xj,d)2;
第三步构造加法器模块对乘法器L个输出结果进行求和
第四步构造乘法器实现求和结果与参数γ的相乘运算
第五步最后将第四步的结果代入高斯核函数指数模块即得到输出。
7.根据权利要求5所述的核函数极限学习机分类器的FPGA实现方法,其特征在于,步骤A3中,矩阵求逆如下:此处为大维数矩阵分块求逆的方法,该方法适合任意维数的矩阵进行求逆,以下列举一次分块就能达到要求的矩阵,对于更大维数的矩阵依照该方法继续进行多次分块,设n=N/2,其中N为偶数,如果N为奇数时,先将该矩阵扩大一维变成(N+1)维的矩阵再进行分块求逆,求完逆后取前N行N列矩阵即为原N维矩阵的逆,见式(14);
C1、将大维数的矩阵分成4块,小块矩阵维数是原矩阵维数的一半,见式(15)
C2、首先对A11进行LU分解,方法如下
设
将式(16)展开并进行变形得如下计算公式:
按照式(17)运算即得到矩阵L11、矩阵U11;
C3、上三角矩阵求逆,对矩阵U11进行求逆,对于下三角矩阵经过转置后使用该方法;设矩阵U11的逆矩阵为V11则有:
式中,E为单位矩阵;
将式(18)展开并进行变形得:
按照(19)公式运算即求出同样的方法求出
C4,对ANN进行LU分块,见式(20):
将式(20)展开并进行变形得式(21);
①、根据步骤C2和C3即求出(21)式(1)中的矩阵
②、将矩阵代入(21)式(2)中求出L21,将矩阵代入(21)式(3)中求出U12;
③、将矩阵L21和U12代入(21)式(4)中得到L22U22,按照C2和C3的方法求出矩阵:
C5、上三角矩阵分块求逆方法,对下三角矩阵进行转置变成上三角矩阵后运用该方法,设U矩阵的逆矩阵为V矩阵,则有:
将矩阵(22)展开并进行变形得;
其中矩阵U12在上一步已求得,代入式(23)即求出V11、V22、V12;同样的方法能够求得下三角矩阵的逆矩阵;
C6、LU矩阵的分块相乘即得到设上三角矩阵L阵的逆矩阵为Y;
C1~C6所述为矩阵分块求逆的原理,在构造矩阵求逆模块时应先构造简单元件包括加法器、减法器、乘法器、除法器以及RAM,然后构造小维数的矩阵求出其上三角逆矩阵和下三角逆矩阵,然后按照原理进行扩维直到得到所求维数上三角逆矩阵和下三角逆矩阵,最后将上三角逆矩阵乘以下三角逆矩阵即为所求矩阵的逆矩阵。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510079979.0A CN104680236B (zh) | 2015-02-13 | 2015-02-13 | 核函数极限学习机分类器的fpga实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510079979.0A CN104680236B (zh) | 2015-02-13 | 2015-02-13 | 核函数极限学习机分类器的fpga实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104680236A true CN104680236A (zh) | 2015-06-03 |
CN104680236B CN104680236B (zh) | 2017-08-01 |
Family
ID=53315247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510079979.0A Expired - Fee Related CN104680236B (zh) | 2015-02-13 | 2015-02-13 | 核函数极限学习机分类器的fpga实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104680236B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105373517A (zh) * | 2015-11-09 | 2016-03-02 | 南京大学 | 基于Spark的分布式稠密矩阵求逆并行化运算方法 |
WO2017048195A1 (en) * | 2015-09-17 | 2017-03-23 | Nanyang Technological University | Computer system incorporating an adaptive model, and methods for training the adaptive model |
CN107704422A (zh) * | 2017-10-13 | 2018-02-16 | 武汉精测电子集团股份有限公司 | 一种基于可编程逻辑器件的并行计算方法及装置 |
CN109620148A (zh) * | 2018-11-29 | 2019-04-16 | 西安交通大学 | 一种基于稀疏极限学习机算法的癫痫检测集成电路 |
CN109948640A (zh) * | 2018-12-26 | 2019-06-28 | 杭州电子科技大学 | 基于双参数核优化型极限学习机的肌电信号分类方法 |
CN109948583A (zh) * | 2019-03-28 | 2019-06-28 | 合肥京东方显示技术有限公司 | 极限学习机、人脸识别方法、可读存储介质和计算机设备 |
CN110533414A (zh) * | 2019-08-29 | 2019-12-03 | 金邦达有限公司 | 一种交通ic卡交易中进制转换的方法 |
TWI709088B (zh) * | 2018-02-08 | 2020-11-01 | 廣達電腦股份有限公司 | 電腦系統、編程方法及非暫態電腦可讀取媒體 |
US11604757B2 (en) | 2019-07-17 | 2023-03-14 | International Business Machines Corporation | Processing data in memory using an FPGA |
CN118349213A (zh) * | 2024-06-14 | 2024-07-16 | 中昊芯英(杭州)科技有限公司 | 一种数据处理装置、方法、介质及计算设备 |
CN118349213B (zh) * | 2024-06-14 | 2024-09-27 | 中昊芯英(杭州)科技有限公司 | 一种数据处理装置、方法、介质及计算设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060215905A1 (en) * | 2005-03-07 | 2006-09-28 | Fuji Photo Film Co., Ltd. | Learning method of face classification apparatus, face classification method, apparatus and program |
CN101625735A (zh) * | 2009-08-13 | 2010-01-13 | 西安理工大学 | 基于ls-svm分类和回归学习递归神经网络的fpga实现方法 |
CN101833691A (zh) * | 2010-03-30 | 2010-09-15 | 西安理工大学 | 一种基于fpga的最小二乘支持向量机串行结构实现方法 |
US20130094717A1 (en) * | 2011-10-13 | 2013-04-18 | Pioneer Hi-Bred International, Inc. | Automatic detection of object pixels for hyperspectral analysis |
CN103211590A (zh) * | 2013-04-24 | 2013-07-24 | 浙江理工大学 | 基于gpu加速的极限学习机的心脏电功能快速成像方法 |
CN104008432A (zh) * | 2014-06-03 | 2014-08-27 | 华北电力大学 | 基于emd-kelm-ekf的微网短期负荷预测方法 |
-
2015
- 2015-02-13 CN CN201510079979.0A patent/CN104680236B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060215905A1 (en) * | 2005-03-07 | 2006-09-28 | Fuji Photo Film Co., Ltd. | Learning method of face classification apparatus, face classification method, apparatus and program |
CN101625735A (zh) * | 2009-08-13 | 2010-01-13 | 西安理工大学 | 基于ls-svm分类和回归学习递归神经网络的fpga实现方法 |
CN101833691A (zh) * | 2010-03-30 | 2010-09-15 | 西安理工大学 | 一种基于fpga的最小二乘支持向量机串行结构实现方法 |
US20130094717A1 (en) * | 2011-10-13 | 2013-04-18 | Pioneer Hi-Bred International, Inc. | Automatic detection of object pixels for hyperspectral analysis |
CN103211590A (zh) * | 2013-04-24 | 2013-07-24 | 浙江理工大学 | 基于gpu加速的极限学习机的心脏电功能快速成像方法 |
CN104008432A (zh) * | 2014-06-03 | 2014-08-27 | 华北电力大学 | 基于emd-kelm-ekf的微网短期负荷预测方法 |
Non-Patent Citations (6)
Title |
---|
GUOQI LI ETAL.: ""Online Learning with Kernels in Classification and Regression"", 《IEEE》 * |
RITA NAGAR ETAL.: ""Porting Linux Kernel on FPGA based Development Boards"", 《INTERNATIONAL CONFERENCE ON COMPUTING, COMMUNICATION AND SENSOR NETWORK》 * |
SHENGLAN LIU ETAL.: ""Robust activation function and its application:Semi-supervised kernel extreme learning method"", 《NEUROCOMPUTING》 * |
孙朝江等: ""基于选择性更新的在线核极限学习机建模"", 《控制工程》 * |
邓万宇等: ""面向大样本数据的核化极速神经网络"", 《计算机学报》 * |
马超等: ""在线核极限学习机及其在时间序列预测中的应用"", 《信息与控制》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017048195A1 (en) * | 2015-09-17 | 2017-03-23 | Nanyang Technological University | Computer system incorporating an adaptive model, and methods for training the adaptive model |
CN105373517A (zh) * | 2015-11-09 | 2016-03-02 | 南京大学 | 基于Spark的分布式稠密矩阵求逆并行化运算方法 |
CN107704422A (zh) * | 2017-10-13 | 2018-02-16 | 武汉精测电子集团股份有限公司 | 一种基于可编程逻辑器件的并行计算方法及装置 |
TWI709088B (zh) * | 2018-02-08 | 2020-11-01 | 廣達電腦股份有限公司 | 電腦系統、編程方法及非暫態電腦可讀取媒體 |
US11568232B2 (en) | 2018-02-08 | 2023-01-31 | Quanta Computer Inc. | Deep learning FPGA converter |
CN109620148A (zh) * | 2018-11-29 | 2019-04-16 | 西安交通大学 | 一种基于稀疏极限学习机算法的癫痫检测集成电路 |
CN109620148B (zh) * | 2018-11-29 | 2020-03-31 | 西安交通大学 | 一种基于稀疏极限学习机算法的癫痫检测集成电路 |
CN109948640A (zh) * | 2018-12-26 | 2019-06-28 | 杭州电子科技大学 | 基于双参数核优化型极限学习机的肌电信号分类方法 |
CN109948583A (zh) * | 2019-03-28 | 2019-06-28 | 合肥京东方显示技术有限公司 | 极限学习机、人脸识别方法、可读存储介质和计算机设备 |
US11604757B2 (en) | 2019-07-17 | 2023-03-14 | International Business Machines Corporation | Processing data in memory using an FPGA |
CN110533414A (zh) * | 2019-08-29 | 2019-12-03 | 金邦达有限公司 | 一种交通ic卡交易中进制转换的方法 |
CN110533414B (zh) * | 2019-08-29 | 2024-01-05 | 金邦达有限公司 | 一种交通ic卡交易中进制转换的方法 |
CN118349213A (zh) * | 2024-06-14 | 2024-07-16 | 中昊芯英(杭州)科技有限公司 | 一种数据处理装置、方法、介质及计算设备 |
CN118349213B (zh) * | 2024-06-14 | 2024-09-27 | 中昊芯英(杭州)科技有限公司 | 一种数据处理装置、方法、介质及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104680236B (zh) | 2017-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104680236A (zh) | 核函数极限学习机分类器的fpga实现方法 | |
CN107103113B (zh) | 面向神经网络处理器的自动化设计方法、装置及优化方法 | |
Ortín et al. | Reservoir computing with an ensemble of time-delay reservoirs | |
CN106951395A (zh) | 面向压缩卷积神经网络的并行卷积运算方法及装置 | |
CN110263925B (zh) | 一种基于fpga的卷积神经网络前向预测的硬件加速实现装置 | |
CN107578098A (zh) | 基于脉动阵列的神经网络处理器 | |
CN109887282A (zh) | 一种基于层级时序图卷积网络的路网交通流预测方法 | |
CN104346629B (zh) | 一种模型参数训练方法、装置及系统 | |
CN107092959A (zh) | 基于stdp非监督学习算法的硬件友好型脉冲神经网络模型 | |
CN111860951A (zh) | 一种基于动态超图卷积网络的轨道交通客流预测方法 | |
CN106201651A (zh) | 神经形态芯片的模拟器 | |
CN107918794A (zh) | 基于计算阵列的神经网络处理器 | |
US20140344203A1 (en) | Neural network computing apparatus and system, and method therefor | |
Nakatsuji et al. | Development of a self-organizing traffic control system using neural network models | |
CN106570597A (zh) | 一种sdn架构下基于深度学习的内容流行度预测方法 | |
CN109344964A (zh) | 一种适用于神经网络的乘加计算方法和计算电路 | |
CN109766995A (zh) | 深度神经网络的压缩方法与装置 | |
CN101625735A (zh) | 基于ls-svm分类和回归学习递归神经网络的fpga实现方法 | |
CN110163354A (zh) | 一种计算装置及方法 | |
CN110223785A (zh) | 一种基于深度学习的传染病传播网络重构方法 | |
CN105913118A (zh) | 一种基于概率计算的人工神经网络硬件实现装置 | |
CN110543939A (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构 | |
CN102135951A (zh) | 基于运行时重构的ls-svm算法fpga实现方法 | |
CN105427241A (zh) | 一种大视场显示设备的畸变校正方法 | |
CN101833691A (zh) | 一种基于fpga的最小二乘支持向量机串行结构实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170801 Termination date: 20200213 |