基于ls-svm分类和回归学习递归神经网络的fpga实现方法

文档序号:6481441阅读:355来源:国知局
专利名称:基于ls-svm分类和回归学习递归神经网络的fpga实现方法
技术领域
本发明属于模式识别技术领域,涉及一种基于LS-SVM分类学习递归神经网络的FPGA实现方法,还涉及一种基于LS-SVM回归学习递归神经网络的FPGA实现方法。

背景技术
支持向量机(Support Vector Machines,SVM)以良好的推广能力、极低的分类和逼近误差、数学上的易处理性和简洁的几何解释等优点,已被广泛作为一种分类和回归的工具。目前对支持向量机的研究主要集中在理论研究和算法的优化方面。与之相比,其应用研究和算法实现的研究相对较少,目前只有较为有限的实验研究报道。同时,这些算法大多只能用计算机软件来实现,而不适合于硬件实现,这显然大大的限制了SVM在实际中的应用。
目前已经提出的SVM的硬件实现方法都是基于模拟电路的简单应用。模拟电路本身灵活性较差,拓扑结构确定后就很难改变,并且电路本身占用空间大、消耗能源多。而支持向量机在应用中经常要面对实时变化的环境,很多场合对于实现电路本身的物理条件也有要求,所以模拟电路实现SVM学习的方法在实际应用中就受到了限制。近年来FPGA技术的发展非常迅速,特别是FPGA本身具有构建拓扑结构迅速、消耗低、适应性强和设计简单等优点,FPGA的发展为SVM的硬件实现提供了一个新的思路。
标准支持向量机的训练问题实质上是求解一个二次规划问题,而最小二乘支持向量机采用等式约束,将原标准SVM问题转化为线性方程求解问题,从而简化了计算的复杂性,并且算法易实现、收敛速度快。因此对LS-SVM的FPGA实现研究,对于SVM的实际应用及理论研究均具有重要意义。


发明内容
本发明的目的是,提供一种基于LS-SVM分类学习递归神经网络的FPGA实现方法,还提供一种基于LS-SVM回归学习递归神经网络的FPGA实现方法,加快递归神经网络训练速度,提高了电路的灵活性。
本发明的技术方案是,一种基于LS-SVM分类学习递归神经网络的FPGA实现方法,该方法按以下步骤实施 步骤1根据样本数量构造LS-SVM分类学习递归神经网络的拓扑结构为将-α1qi1…-αNqiN、1、-γ-1αi以及-byi接入∑中进行求和,∑的输出端接入积分器∫,积分器∫的输出即为αi,而αi再经权值-qij反馈到各相对应的∑中,形成一个递归神经网络; 给定分类训练集(zi,yi)是一组待分类的样本,i=1,2,...N,对于所有的zi∈RN都有yi∈(+1,-1)为样本相对应的类别,其分类决策面描述为

其中W是权值向量,b是阈值,

表示训练样本从输入空间到特征空间的非线性映射,LS-SVM的分类学习即解决下面受约束的优化问题 约束条件
求解该问题引入Lagrange函数
其中αi为Lagrange乘子,利用KKT条件分别对Lagrange函数各个变量求偏导可以得到该问题的最优条件 其中qij=yi yj Kij,且

定义为核函数,得到LS-SVM分类学习神经网络模型的动态方程 其中αi为Lagrange乘子,b是阈值,(zi,yi)是一组待分类的样本,i=1,2,...N, 步骤2选用高斯核函数,选择参数γ-1=1、σ=1,并计算
步骤3结合步骤2的结果,将动态方程(6)、(7)进行离散化处理,并确定步长ΔT; 将方程(6)、(7)进行离散化处理后得到离散动态方程(8)、(9) 方程(8)、(9)中的时间间隔ΔT即是采样的步长; 步骤4确定带补码的二进制编码的位数将32位的带补码的二进制编码C转换为16位的带补码的二进制编码,包括整数位的位数和小数位的位数; 步骤5按照步骤4构造基本的元件库,包括运算单元、存储单元和控制单元,其中运算单元包括乘累加单元MAC、乘法器单元Mul、减法器单元Sub、累加器单元AC;存储单元包括ROM和RAM;控制单元调用ISE9.1中IP核实现MAC、Mul、Sub、AC和ROM; 步骤6利用步骤5得到的元件库,分别构建神经元单元 构建LS-SVM分类学习神经元模块, A1、当数据存储完毕,此时从ROM和RAM中同时读取数据,输入到MAC单元中,其中在一个触发沿中的αj(t)和qij是相互对应的,在MAC单元计算的同时计算1-b(t)yi,首先通过使用Mul的映射单元Mul(1)完成b(t)yi运算,然后通过使用Sub的映射单元Sub(1)完成1-b(t)yi; A2、等待MAC单元运算完毕,将结果

和1-b(t)yi输入到Sub的映射单元Sub(2),与Sub(2)平行的位置还有Mul(2),在这个时间段内同时完成γ-1αi(t)的计算; A3、将Mul(2)和Sub(2)的结果输入到Sub(3)中,完成的计算; A4、再将Sub(3)的结果与设定好的ΔT送入Mul(3),此时得到运算结果αj(ΔT),再将αj(ΔT)送入到AC模块中进行累加,最终得到αj(t+ΔT),对于(9)中部分看作是αj(t)到αj(t+ΔT)一个增量,当它为0时,即AC模块的输入为0的时候,AC模块的输出不再变化时,神经元的输出稳定,输出结果为αj; 步骤7将各个神经元单元看作基本元件,Neuro1~Neuroi代表i个神经元,Neuro_b代表阈值神经元,调用i个神经元和Neuro_b阈值神经元并联接入select模块,通过i+1个神经元的规则连接,构成了SVM学习功能的神经网络,同时使每个神经元受控于一个时钟控制信号,每个神经元一个周期内计算完毕后,都产生一个有效控制信号,当神经网络控制单元接收到的所有神经元的控制信号有效时,产生一个总的有效控制信号使全部神经元进入下一周期的运算,当网络进行递归运算直至稳定时,求得收敛参数α,b。
本发明的另一技术方案是,一种基于LS-SVM回归学习递归神经网络的FPGA实现方法,该方法按以下步骤实施 步骤1、根据样本数量构造LS-SVM回归学习递归神经网络的拓扑结构将-α1Ωi1…-αNΩiN、yi、-γ-1α以及-b接入∑中进行求和,∑的输出端接入积分器∫,积分器∫的输出即为αi,而αi再经权值-Ωij反馈到各相对应的∑中, 给定训练集(zi,yi),i=1,...,N,其中,第i个输入数据zi∈Rn并且第i个输出数据yi∈R,与分类问题相似的回归函数为

其中W为权值向量,b为偏移量,

表示从输入空间到特征空间的非线性映射,LS-SVM的回归问题即解决下面优化问题 约束条件为
同样构建Lagrange函数
其中αi为Lagrange乘子,由KKT条件和与分类问题的推导得到问题最优必须满足 上式中

定义为核函数, 得到LS-SVM回归学习神经网络模型的动态方程 其中αi为Lagrange乘子,b是阈值,(zi,yi)是一组待分类的样本,i=1,2,...N, 步骤2选用高斯核函数,选择参数γ-1=1、σ=1,并计算
步骤3结合步骤2的结果,将动态方程(15)(16)进行离散化处理,并确定步长ΔT; 方程(17)、(18)中的时间间隔ΔT即是采样的步长; 步骤4确定带补码的二进制编码的位数将32位的带补码的二进制编码C转换为16位的带补码的二进制编码,包括整数位的位数和小数位的位数; 步骤5按照步骤4构造基本的元件库,包括运算单元、存储单元和控制单元,其中运算单元包括乘累加单元MAC、乘法器单元Mul、减法器单元Sub、累加器单元AC;存储单元包括ROM和RAM;控制单元调用ISE9.1中IP核实现MAC、Mul、Sub、AC和ROM; 步骤6利用步骤5得到的基本元件库,构建LS-SVM回归学习递归神经元单元, B1、当数据存储完毕,此时从ROM和RAM中同时读取数据,输入到MAC单元中完成

的运算,同时完成yi-b(t)的计算; B2、等待MAC单元运算完毕,将结果

和yi-b(t)输入到Sub的映射单元Sub(2),与Sub(2)平行的位置还有Mul(1),在这个时间段内同时完成γ-1αi(t)的计算; B3、将Mul(1)和Sub(2)的结果输入到Sub(3)中,完成的计算; B4、再将Sub(3)的结果与设定好的ΔT送入Mul(2),此时得到运算结果αj(ΔT),再将αj(ΔT)送入到AC模块中进行累加,最终得到αj(t+ΔT),对于(9)中部分看作是αj(t)到αj(t+ΔT)一个增量,当它为0时,即AC模块的输入为0的时候,AC模块的输出不再变化时,神经元的输出稳定,输出结果为αj; 步骤7将各个神经元单元看作基本元件,Neuro1~Neuroi代表i个神经元,Neuro_b代表阈值神经元,调用i个神经元和Neuro_b阈值神经元并联接入select模块,通过i+1个神经元的规则连接,构成了SVM学习功能的神经网络,同时使每个神经元受控于一个时钟控制信号,每个神经元一个周期内计算完毕后,都产生一个有效控制信号,当神经网络控制单元接收到的所有神经元的控制信号有效时,产生一个总的有效控制信号使全部神经元进入下一周期的运算,当网络进行递归运算直至稳定时,求得收敛参数α,b。
本发明的FPGA实现方法,较好的完成了LS-SVM学习递归神经网络的分类和回归,不仅加快了递归神经网络训练速度,还提高了电路的灵活性,使LS-SVM的应用更加广泛。



图1是本发明的LS-SVM分类学习神经网络拓扑结构图; 图2是本发明的LS-SVM分类学习神经网络的实现流程图; 图3是本发明的16位的带补码的二进制编码示意图; 图4是本发明的编码信号在运算单元之间的流向图; 图5是本发明的编码数据训练中处理过程示意图; 图6是本发明的LS-SVM分类学习神经网络神经元的FPGA实现流程图; 图7是本发明的LS-SVM回归学习神经网络的结构图; 图8是本发明的LS-SVM回归学习神经网络拓扑结构图; 图9是本发明的LS-SVM回归学习神经网络神经元的FPGA实现流程图; 图10是本发明实施例1LSSVCLN用Simulink得到的α,b的收敛波形图; 图11是本发明的实施例1通过图7中α,b的结果求得的线性不可分决策面示意图,“o”代表正类样本;“*”代表负类样本; 图12是本发明实施例1LSSVCLN用FPGA实现得到的α,b收敛波形图; 图13是本发明的实施例1通过图9中α,b的结果求得的线性不可分决策面示意图,“o”代表正类样本;“*”代表负类样本; 图14是本发明实施例2用Simulink进行LSSVRLN仿真得到的α,b的收敛波形图; 图15是本发明实施例2通过图11中α,b对12个点的回归结果曲线图; 图16是本发明实施例2通过图13中α,b对12个点的回归结果曲线图; 图17是本发明实施例2用FPGA实现LSSVRLN得到的α,b的收敛波形图。

具体实施例方式 下面结合附图和具体实施方式
对本发明进行详细说明。
构造LS-SVM分类学习递归神经网络, 给定分类训练集(zi,yi)是一组待分类的样本,i=1,2,...N。对于所有的zi∈RN都有yi∈(+1,-1),其分类决策面可以描述为

其中W是权值向量,b是阈值,

用来表示训练样本从输入空间到特征空间的非线性映射。LS-SVM的分类学习即解决下面受约束的优化问题 约束条件
求解该问题可引入Lagrange函数
其中αi为Lagrange乘子。利用KKT条件分别对Lagrange函数各个变量求偏导可以得到该问题的最优条件 其中qij=yi yj Kij,且

定义为核函数。如果核函数满足Merce条件,并且对称阵Qc=[qij]是正定的,则该问题是一个最优化的凸问题,即它只有一个全局解。
神经网络模型由下面的动态方程来描述 图1为LS-SVM分类学习神经网络的拓扑结构图,-α1qi1…-αNqiN、1、-γ-1αi以及-byi接入∑中进行求和,∑的输出端接入积分器∫,积分器∫的输出即为αi,而αi再经权值-qij反馈到各相对应的∑中,形成一个递归神经网络。
由于FPGA本身不能直接实现连续动态方程,所以将方程(6)、(7)进行离散化处理后得到离散动态方程(8)、(9) 式(8)、(9)中ΔT是采样的时间间隔。
本发明将对如何用FPGA实现方程(8)、(9)进行说明。FPGA本身的可编程性增强了电路设计的灵活性,故本发明中的主要手段是FPGA通常采用的VHDL编程语言,图2进一步说明VHDL语言是如何运用在LS-SVM分类学习神经网络中的。图2中最底层的方框代表构建的基本元件库主要包括乘累加单元(MAC)、乘法器单元(Mul)、减法器单元(Sub)、累加器单元(AC)以及存储单元ROM和RAM。在基本元件的实现手段上,有些我们采用VHDL语言编程实现,而还有一些则采用第三方的IP核进行实现。本发明所涉及的IP核均为软IP核,不含具体的物理信息。第二层的方框代表神经元,其中neuro1-neuroi代表i个神经元,它们都是通过编写vhd文件调用最底层中基本元件库中的元件实现的。最上面的方框代表整个SVM神经网络,它也是通过编写vhd文件调用第二层的神经元文件实现的。
本发明方法创建的元件库中的元件,输入与输出信号均采用带补码的二进制编码。对应基本元件的运算均为定点运算,在定点运算中小数点的位置是由设计者自己决定的,在实际的硬件实现中并没有单独存储的单元来存放小数点的位置。对于设计者来说,它只是一个虚拟的存在,只需要设计者记住它的位置,在实际的运算过程中是没有影响的。信号的编码长度范围可以通过设计者经验或是软件仿真得到。
本发明方法另一个重要的问题是中间数据处理。所提出的网络都具有递归特性,对于这类网络,输入给定后训练过程是一个自己的不断迭代过程,这个过程中是很难进行人为干预的。对于一个神经元在一个周期中的运算包括了乘法器和乘累加器等运算单元,这类运算单元会导致输出信号与输入信号的表达方式的不一致。图3所示为一个16位的带补码的二进制编码数,其中S代表符号位,F为整数位,I为小数位。如图4,以一个乘法器和一个减法器的组合为例进行说明。乘法器(Mul)的输入信号a和b都是长度为16位的带补码的二进制编码,则其输出信号C为长度为32位的带补码的二进制编码。而对于乘法器的输出信号C要作为减法器(Sub)的一个输入信号,但是减法器(Sub)设定的输入信号编码长度为16位带补码的二进制编码,所以在此之前要经过一个数据处理过程,将32位的带补码的二进制编码C转换为16位的带补码的二进制编码C。按图5所示,对32位编码的C做如下处理,舍掉图示部分。如果剩余整数部分能够表示所有的整数位,那么舍去整数位部分对结果是没有影响的。对于舍去小数部分,如果信号小数位取得足够多,那么舍掉图5所示的小数部分,对结果的影响是很小的,可以忽略。当经过图5所示的部分处理后,就可以得到与图3相同形式16位的带补码的二进制编码。
基本元件库建立起来之后,如图6中,最左边的方框代表基本元件库,其中包括累加单元(MAC)、乘法器单元(Mul)、减法器单元(Sub)、累加器单元(AC)以及存储单元ROM和RAM和计数器(COUNT)。中间的框图中qij是网络的权值,Mul(1)、Mul(2)和Mul(3)是对基本元件库中的元件Mul的映射元件。Sub(1)、Sub(2)和Sub(3)是对基本元件库中的元件Sub的映射元件。yi是分类的标识,γ为惩罚因子。最右边的框图中α1(t),α2(t),...αi(t)代表拉格朗日乘子,b代表网络的阈值。对于具有递归特性的LS-SVM分类学习神经网络,网络的权值qij是由训练样本的值决定的。不同于一般的神经网络,该网络的权值不是实时更新的。对于一个特定的问题,训练样本的值是固定的,即LS-SVM分类学习神经网络权值qij在训练的过程中不变化。所以在网络训练前,根据训练样本计算好权值qij,存放在ROM单元中。
按照图6的流程构造LS-SVM分类学习神经元模块,上述准备工作做好之后,网络进入训练过程。由于本网络具有递归的特点,所以这里只对一个周期内的第j个神经元运作进行说明。当上一个周期结束时,产生一组训练参数α1(t),α2(t),...αi(t)及b(t)。本周期开始时,将这组参数值存入到RAM单元中,这样做是考虑到资源的节省问题以及结构的简单化而使用的流水线技术。虽然LS-SVM分类学习神经网络本身具有高度的并行性,但是此方法并不影响整体的并行性。当后续计算需要使用这些参数值时,再从RAM中读取。如图6,箭头的流向代表模块的触发顺序,可以把整个LS-SVM分类学习神经网络神经元的FPGA实现过程分为如下四个阶段 1、当数据存储完毕,此时从ROM和RAM中同时读取数据,输入到MAC单元中,其中在一个触发沿中的αj(t)和qij是相互对应的。在MAC单元计算的同时计算1-b(t)yi,首先通过使用Mul的映射单元Mul(1)完成b(t)yi运算,然后通过使用Sub的映射单元Sub(1)完成1-b(t)yi,这样两个或是几个模块并行计算可以节省网络的训练时间; 2、等待MAC单元运算完毕,将结果

和1-b(t)yi输入到Sub的映射单元Sub(2),从图6中可以看到,与Sub(2)平行的位置还有Mul(2),在这个时间段内同时完成γ-1αi(t)的计算; 3、将Mul(2)和Sub(2)的结果输入到Sub(3)中,完成的计算; 4、再将Sub(3)的结果与设定好的ΔT送入Mul(3),此时得到运算结果αj(ΔT),再将αj(ΔT)送入到AC模块中进行累加,最终得到αj(t+ΔT)。对于(9)中部分,可以看作是αj(t)到αj(t+ΔT)一个增量,当它为0时,即AC模块的输入为0的时候,AC模块的输出不再变化时,神经元的输出稳定,输出结果为αj。
在使用VHDL语言进行实现时,将神经元(neuro)当作一个实体元件。构建neuro.vhd文件,通过component语句来调用元件库中的元件,这样做当需要对网络进行局部改动的时候,只需要改变或替换元件库中的基本单元即可构成新的网络,具有更好的可拓展性。
通过图6的流程就完成了一个神经元的功能模块的构建。按照图2中的结构完成Neuro模块设计后,相当于在原来元件库中添加了Neuro单元。如图7所示,Neuro1~Neuroi代表i个神经元,Neuro_b代表阈值神经元,i个神经元和Neuro_b阈值神经元并联接入select模块,通过i+1个神经元的规则连接,构成了SVM学习功能的神经网络。从图7中可以看到该递归网络有很强的并行性和规则性。为了很好的完成网络的这些特性,在本发明中使每个神经元受控于一个时钟控制信号,每个神经元一个周期内计算完毕后,都会产生一个有效控制信号,当神经网络控制单元接收到的所有神经元的控制信号有效时,将会产生一个总的有效控制信号使全部神经元进入下一周期的运算。同样使用component语句调用神经元模块,此方法便于增减神经网络中神经元的个数以便于网络规模的变化。
构造LS-SVM回归学习递归神经网络, 给定训练集(zi,yi),i=1,...,N,其中,第i个输入数据zi∈Rn并且第i个输出数据yi∈R,与分类问题相似的回归函数为

其中W为权值向量,b为偏移量。

表示从输入空间到特征空间的非线性映射。LS-SVM的回归问题即解决下面优化问题 约束条件为
同样构建Lagrange函数
其中αi为Lagrange乘子。由KKT条件和与分类问题类似的推导得到问题最优必须满足 上式中

定义为核函数。
所提出的回归网络由以下动态方程描述 同样的,可以看出该动态方程(15)、(16)描述的系统在平衡点处是满足原问题的KKT条件(13)、(14)的。
图8为LS-SVM回归学习递归神经网络的拓扑结构图,-α1Ωi1…-αNΩiN、yi、-γ-1α以及-b接入∑中进行求和,∑的输出端接入积分器∫,积分器∫的输出即为αi,而αi再经权值-Ωij反馈到各相对应的∑中。
由于FPGA本身不能直接实现连续动态方程,所以将方程(15)(16)进行离散化处理后得到离散动态方程(17)(18) 本发明方法也将对如何用FPGA实现方程(17)、(18)进行说明。
基本元件库建立起来之后,按照图9的流程构造LS-SVM回归学习递归神经网络的神经元模块。图9中最左边的方框代表基本元件库,其中包括累加单元(MAC)、乘法器单元(Mul)、减法器单元(Sub)、累加器单元(AC)以及存储单元ROM和RAM和计数器(COUNT)。中间的框图中Ωij是网络的权值,Mul(1)和Mul(2)是对基本元件库中的元件Mul的映射元件。Sub(1)、Sub(2)和Sub(3)是对基本元件库中的元件Sub的映射元件。yi是分类的标识,γ为惩罚因子。最右边的框图中α1(t),α2(t),...αi(t)代表拉格朗日乘子,b代表网络的阈值。对于具有递归特性的LS-SVM回归学习神经网络,网络的权值Ωij是由训练样本的值决定的。不同于一般的神经网络,该网络的权值不是实时更新的。对于一个特定的问题,训练样本的值是固定的,即LS-SVM回归学习神经网络权值Ωij在训练的过程中不变化。所以在网络训练前,根据训练样本计算好权值Ωij,存放在ROM单元中。
准备工作做好之后,网络进入训练过程。由于本网络具有递归的特点,所以这里只对一个周期内的第j个神经元运作进行说明。当上一个周期结束时,产生一组训练参数α1(t),α2(t),...αi(t)及b(t)。本周期开始时,将这组参数值存入到RAM单元中,这样做是考虑到资源的节省问题以及结构的简单化而使用的流水线技术。虽然LS-SVM回归学习神经网络本身具有高度的并行性,但是此方法并不影响整体的并行性。当后续计算需要使用这些参数值时,再从RAM中读取。如图9所示,箭头的流向代表模块的触发顺序,可以把整个LS-SVM回归学习递归神经网络神经元的FPGA实现过程分为如下四个阶段 (1)、当数据存储完毕,此时从ROM和RAM中同时读取数据,输入到MAC单元中完成

的运算,同时完成yi-b(t)的计算; (2)、等待MAC单元运算完毕,将结果

和yi-b(t)输入到Sub的映射单元Sub(2)。从图9中可以看到,与Sub(2)平行的位置还有Mul(1),在这个时间段内同时完成γ-1αi(t)的计算; (3)、将Mul(1)和Sub(2)的结果输入到Sub(3)中,完成的计算; (4)、再将Sub(3)的结果与设定好的ΔT送入Mul(2),此时得到运算结果αj(ΔT),再将αj(ΔT)送入到AC模块中进行累加,最终得到αj(t+ΔT)。对于(9)中部分,可以看作是αj(t)到αj(t+ΔT)一个增量,当它为0时,即AC模块的输入为0的时候,AC模块的输出不再变化时,神经元的输出稳定,输出结果为αj。
与LS-SVM分类神经网络类似,按照图9的流程完成神经元的设计,然后再按照图2和图7的结构完成整个网络的FPGA实现方法。
因此,本发明所述的基于上述LS-SVM分类或回归学习递归神经网络的最小二乘支持向量机的FPGA实现方法,按以下步骤实施 步骤1根据样本数量构造LS-SVM分类或回归学习递归神经网络的拓扑结构,如图1或图8所示; 步骤2选用合适的核函数,选择核函数参数,并计算
步骤3将动态方程(6)(7)或是(15)(16)进行离散化处理,并确定步长; 步骤4选择实验使用的带补码的二进制编码的位数,其中包括整数位的位数和小数位的位数; 步骤5构造基本的元件库,包括运算单元、存储单元和控制单元; 步骤6根据图6或图9的流程,构建LS-SVM分类或回归学习递归神经网络神经元单元; 步骤7将步骤6构建的神经元看作基本元件,调用相应数量的神经元按图7构建整个网络。
实施例1、一个R2的7个样本点线性不可分的验证实例 z1=(4.7,1.4),z2=(4.5,1.5),z3=(4.9,1.5),z4=(6,2.5),z5=(5.1,1.9),z6=(5.9,2.1),z7=(5.6,1.8)。相对应的类别为(+1,+1,+1,-1,-1,-1,-1)。这7个点来自Iris data问题中Iris-versicolor和Iris-virginica两类,提取两类特征petallength和petal width。
步骤1根据7个样本构造LS-SVM分类学习递归神经网络的拓扑结构; 步骤2采用高斯核函数,选择γ-1=1,σ=1,并计算
步骤3将动态方程(6)(7)进行离散化处理,取步长ΔT=2-3S; 步骤4选择该实验使用的带补码的二进制编码的位数为16位,其中包括1位符号位、4位整数位和11位小数位; 步骤5构造乘累加单元(MAC)、乘法器单元(Mul)、减法器单元(Sub)、累加器单元(AC)以及存储单元ROM和RAM,其中调用ISE9.1中IP核实现MAC、Mul、Sub、AC和ROM,编写vhd文件实现; 步骤6根据图6流程,先将根据样本计算得到的qij存储在ROM中,然后按照计算顺序设计各个运算单元之间连接和触发顺序; 步骤7将构造好的神经元看作一个基本的元件。调用相应数量的神经元构成图7所示整个网络,然后使网络进行递归运算,当网络稳定时,求得收敛参数α,b。
图10所示为该例采用LS-SVM分类学习神经网络进行Simulink仿真实验得到的各参数收敛曲线,其中 α=(0.3404,0.3681,0.5758,0.2756,0.6158,0.1499,0.2430) b=-0.2249。
图10中符号细实线,圆圈线,加号线,星号线,左三角线,右三角线上三角符号线,下三角符号线依次分别代表α,α1,α2,α3,α4,α5,α6,b线。
图11中曲线是由上面参数α,b求得的分类超平面,其表达式为 图11中的‘o’代表第一类样本,‘*’代表第二类样本。
图12所示为该例采用LS-SVM分类学习神经网络的FPGA实现方法得到的各参数的值,其中 α=(0.3292,0.4302,0.9177,0.3563,0.9709,0.0977,0.2520),b=-0.2463。
图13中的曲线是由上面参数α,b求得的分类超平面,其表达式为 同时这里给出该例基于LS-SVM分类学习神经网络这两种实现方法所需时间Simulink仿真实验所用时间为2.432×10-3s;FPGA实现所用的时间为2.365×10-4s。从最后分类超平面的分类效果上看,两种实现方法都较好的完成了本例的线性不可分分类,但是使用FPGA的方法进行实现所需的时间更短。
实施例2、采用回归递归神经网络对12个点进行的函数回归问题,该12个点的函数值见表1 表1实施例2中12个点的函数值列表
步骤1根据12个样本数量构造SVM回归神经网络的拓扑结构; 步骤2采用高斯核函数,其中γ-1=1,σ=1,并计算
步骤3将动态方程(15)(16)进行离散化处理,取步长ΔT=2-3S; 步骤4选择该实验使用的带补码的二进制编码的位数为16位,其中包括1位符号位、4位整数位和11位小数位; 步骤5构造乘累加单元(MAC)、乘法器单元(Mul)、减法器单元(Sub)、累加器单元(AC)以及存储单元ROM和RAM,其中调用ISE9.1中IP核实现MAC、Mul、Sub、AC和ROM,编写vhd文件实现; 步骤6根据图9流程,先将根据样本计算得到的qij存储在ROM中,然后按照计算顺序设计各个运算单元之间连接和触发顺序; 步骤7将构造好的神经元看作一个基本的元件。调用相应数量的神经元构成图7所示整个网络,然后使网络进行递归运算。当网络稳定时,求得参数α,b。
图14所示为该例采用LS-SVM回归学习神经网络进行Simulink仿真实验得到的各参数收敛曲线,其中 α=(-24.9382,-14.0225,-16.0573,-15.3244,-13.7700,-11.3375,-7.6692,-2.6501,4.7093,13.9112,16.5170,70.7750) b=48.2587 图14中的符号意义为实线,五角星符号,加号,圆圈,星号,点号,叉号,上三角符号,下三角符号,左三角符号,右三角符号,菱形符号,正方形符号依次代表α,α1,α2,α3,α4,α5,α6,α7,α8,α9α10α11α12b线。
图15中的曲线是采用上面参数值绘制的函数回归结果,其回归函数表达式为 ‘o’代表待回归的点。
图17是该例采用LS-SVM回归学习神经网络的FPGA实现得到的各参数收敛曲线,其中 α=(-25.9467,-15.0320,-17.0666,-16.3331,-14.7794,-13.3862,-8.6783,-3.65704.6998,13.9033,16.5094,70.7668) b=48.2789 图16中的曲线是采用LS-SVM学习神经网络的函数回归的结果,其表达式为 同时这里给出该例基于LS-SVM分类学习神经网络这两种实现方法所需时间Simulink仿真实验所用时间为3.012×10-3s;FPGA实现所用的时间为3.574×10-4s。从图15和图16中可以看出,图中这12个样本点虽然存在着一定的偏差,但都大致地分布在运用LSSVRLN所求得到的曲线上。这就说明基于LS-SVM回归学习神经网络的这两种方法都很好的实现了回归,但是使用FPGA的方法进行实现所用的时间更短。
综上所述,本发明的LS-SVM分类和回归学习递归神经网络的FPGA实现方法不仅加快了支持向量机的训练速度,也解决了模拟电路实现方法中灵活性不足的问题,使支持向量机的应用范围更加广泛。
权利要求
1、一种基于LS-SVM分类学习递归神经网络的FPGA实现方法,其特点在于该方法按以下步骤实施
步骤1根据样本数量构造LS-SVM分类学习递归神经网络的拓扑结构为将-α1qi1…-αNqiN、1、-γ-1αi以及-byi接入∑中进行求和,∑的输出端接入积分器∫,积分器∫的输出即为αi,而αi再经权值-qij反馈到各相对应的∑中,形成一个递归神经网络;
给定分类训练集(zi,yi)是一组待分类的样本,i=1,2,...N,对于所有的zi∈RN都有yi∈(+1,-1)为样本相对应的类别,其分类决策面描述为
其中W是权值向量,b是阈值,
表示训练样本从输入空间到特征空间的非线性映射,LS-SVM的分类学习即解决下面受约束的优化问题
约束条件
求解该问题引入Lagrange函数
其中αi为Lagrange乘子,利用KKT条件分别对Lagrange函数各个变量求偏导可以得到该问题的最优条件
其中qij=yiyjKij,且
定义为核函数,得到LS-SVM分类学习神经网络模型的动态方程
其中αi为Lagrange乘子,b是阈值,(zi,yi)是一组待分类的样本,i=1,2,...N,
步骤2选用高斯核函数,选择参数γ-1=1、σ=1,并计算
步骤3结合步骤2的结果,将动态方程(6)、(7)进行离散化处理,并确定步长ΔT;
将方程(6)、(7)进行离散化处理后得到离散动态方程(8)、(9)
方程(8)、(9)中的时间间隔ΔT即是采样的步长;
步骤4确定带补码的二进制编码的位数将32位的带补码的二进制编码C转换为16位的带补码的二进制编码,包括整数位的位数和小数位的位数;
步骤5按照步骤4构造基本的元件库,包括运算单元、存储单元和控制单元,其中运算单元包括乘累加单元MAC、乘法器单元Mul、减法器单元Sub、累加器单元AC;存储单元包括ROM和RAM;控制单元调用ISE9.1中IP核实现MAC、Mul、Sub、AC和ROM;
步骤6利用步骤5得到的元件库,分别构建神经元单元
构建LS-SVM分类学习神经元模块,
A1、当数据存储完毕,此时从ROM和RAM中同时读取数据,输入到MAC单元中,其中在一个触发沿中的αj(t)和qij是相互对应的,在MAC单元计算的同时计算1-b(t)yi,首先通过使用Mul的映射单元Mul(1)完成b(t)yi运算,然后通过使用Sub的映射单元Sub(1)完成1-b(t)yi;
A2、等待MAC单元运算完毕,将结果
和1-b(t)yi输入到Sub的映射单元Sub(2),与Sub(2)平行的位置还有Mul(2),在这个时间段内同时完成γ-1αi(t)的计算;
A3、将Mul(2)和Sub(2)的结果输入到Sub(3)中,完成的计算;
A4、再将Sub(3)的结果与设定好的ΔT送入Mul(3),此时得到运算结果αj(ΔT),再将αj(ΔT)送入到AC模块中进行累加,最终得到αj(t+ΔT),对于(9)中部分看作是αj(t)到αj(t+ΔT)一个增量,当它为0时,即AC模块的输入为0的时候,AC模块的输出不再变化时,神经元的输出稳定,输出结果为αj;
步骤7将各个神经元单元看作基本元件,Neuro1~Neuroi代表i个神经元,Neuro_b代表阈值神经元,调用i个神经元和Neuro_b阈值神经元并联接入select模块,通过i+1个神经元的规则连接,构成了SVM学习功能的神经网络,同时使每个神经元受控于一个时钟控制信号,每个神经元一个周期内计算完毕后,都产生一个有效控制信号,当神经网络控制单元接收到的所有神经元的控制信号有效时,产生一个总的有效控制信号使全部神经元进入下一周期的运算,当网络进行递归运算直至稳定时,求得收敛参数α,b。
2、一种基于LS-SVM回归学习递归神经网络的FPGA实现方法,其特点在于,该方法按以下步骤实施
步骤1、根据样本数量构造LS-SVM回归学习递归神经网络的拓扑结构将-α1Ωi1…-αNΩiN、yi、-γ-1α以及-b接入∑中进行求和,∑的输出端接入积分器∫,积分器∫的输出即为αi,而αi再经权值-Ωij反馈到各相对应的∑中,
给定训练集(zi,yi),i=1,...,N,其中,第i个输入数据zi∈Rn并且第i个输出数据yi∈R,与分类问题相似的回归函数为
其中W为权值向量,b为偏移量,
表示从输入空间到特征空间的非线性映射,LS-SVM的回归问题即解决下面优化问题
约束条件为
同样构建Lagrange函数
其中αi为Lagrange乘子,由KKT条件和与分类问题的推导得到问题最优必须满足
上式中
定义为核函数,
得到LS-SVM回归学习神经网络模型的动态方程
其中αi为Lagrange乘子,b是阈值,(zi,yi)是一组待分类的样本,i=1,2,...N,
步骤2选用高斯核函数,选择参数γ-1=1、σ=1,并计算
步骤3结合步骤2的结果,将动态方程(15)(16)进行离散化处理,并确定步长ΔT;
方程(17)、(18)中的时间间隔ΔT即是采样的步长;
步骤4确定带补码的二进制编码的位数将32位的带补码的二进制编码C转换为16位的带补码的二进制编码,包括整数位的位数和小数位的位数;
步骤5按照步骤4构造基本的元件库,包括运算单元、存储单元和控制单元,其中运算单元包括乘累加单元MAC、乘法器单元Mul、减法器单元Sub、累加器单元AC;存储单元包括ROM和RAM;控制单元调用ISE9.1中IP核实现MAC、Mul、Sub、AC和ROM;
步骤6利用步骤5得到的元件库,构建LS-SVM回归学习递归神经元单元,
B1、当数据存储完毕,此时从ROM和RAM中同时读取数据,输入到MAC单元中完成
的运算,同时完成yi-b(t)的计算;
B2、等待MAC单元运算完毕,将结果
和yi-b(t)输入到Sub的映射单元Sub(2),与Sub(2)平行的位置还有Mul(1),在这个时间段内同时完成γ-1αi(t)的计算;
B3、将Mul(1)和Sub(2)的结果输入到Sub(3)中,完成的计算;
B4、再将Sub(3)的结果与设定好的ΔT送入Mul(2),此时得到运算结果αj(ΔT),再将αj(ΔT)送入到AC模块中进行累加,最终得到αj(t+ΔT),对于(9)中部分看作是αj(t)到αj(t+ΔT)一个增量,当它为0时,即AC模块的输入为0的时候,AC模块的输出不再变化时,神经元的输出稳定,输出结果为αj;
步骤7将各个神经元单元看作基本元件,Neuro1~Neuroi代表i个神经元,Neuro_b代表阈值神经元,调用i个神经元和Neuro_b阈值神经元并联接入select模块,通过i+1个神经元的规则连接,构成了SVM学习功能的神经网络,同时使每个神经元受控于一个时钟控制信号,每个神经元一个周期内计算完毕后,都产生一个有效控制信号,当神经网络控制单元接收到的所有神经元的控制信号有效时,产生一个总的有效控制信号使全部神经元进入下一周期的运算,当网络进行递归运算直至稳定时,求得收敛参数α,b。
全文摘要
本发明公开了一种LS-SVM分类与回归学习递归神经网络的FPGA实现方法,该方法按照以下步骤实施根据样本数量构造LS-SVM分类或回归学习递归神经网络的拓扑结构;选用合适的核函数,选择核函数参数并进行计算;将得到的动态方程进行离散化处理,并确定步长;选择实验使用的带补码的二进制编码的位数;构造基本的元件库,包括运算单元、存储单元和控制单元;构建LS-SVM分类或回归学习递归神经网络神经元单元;将构建的神经元单元看作基本元件,调用相应数量的神经元构建整个网络。本发明的FPGA实现方法不仅加快了LS-SVM训练速度,而且克服了模拟电路实现灵活性不足的缺点,可以较好的应对应用环境的改变。
文档编号G06N3/063GK101625735SQ20091002358
公开日2010年1月13日 申请日期2009年8月13日 优先权日2009年8月13日
发明者涵 刘 申请人:西安理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1