基于FPGA的人工神经网络系统的实现方法

2010-03-26 01:47薛维琴李莉华
电子设计工程 2010年9期
关键词:隐层权值神经元

薛维琴,李莉华,戴 明

(1.中国科学院 长春光学精密机械与物理研究所,吉林 长春 130033;2.重庆市电子工程职业学院 重庆 401331)

神经网络是由大量的神经元通过特殊形式的加权网络相互联接而形成的,可以认为:神经网络由两种基本单元构成,即收集信号并且完成非线性变换的神经元胞,以及完成各神经元之间的加权互连的突触。标准的神经网络VLSI的实现方式是在单个芯片上集成多个神经元和突触单元,并且将它们按某种通信结构组成神经网络系统,此外,还有基于ASIC结构的,针对神经网络运算特点进行优化和简化设计的FPGA实现方式,以及基于商业处理器(如数字信号处理、RISC单片处理等)的模拟神经网络的多处理器结构的实现方式。

衡量一个神经网络性能的重要指标是快速性和适用性,而FPGA的集成度已经达到百万门级,用FPGA构造神经网络时,可以灵活地实现各种运算功能和学习规则,并且设计周期短、系统速度快、可靠性高、输入输出接口灵活、几乎可以和任何形式的并行、串行接口及并行、串行A/D或D/A,DSP等连接,同时由于可以将整个系统都集成在单个芯片内,因而抗干扰性能极强,使其在自动控制、故障诊断、模式识别,图像获取、DSP应用、嵌人式系统等领域有着广泛的应用前景。所以,FPGA无疑是首选的实现神经网络的硬件芯片[1-2]。

1 BP神经网络的基本原理

BP人工神经网络即误差后向传播网络,是一种前馈网络,由输入层、隐含层和输出层构成。隐含层通过作用函数执行一种固定不变的非线性变化,将输出空间映像到一个新的空间,输出层节点则在该新空间进行线性加权组合。BP算法用于多层网络,对于线性情况,多层网络可以简单到只有一个输入层节点和输出层节点,而没有隐含层(中间层)。实际上,大多数自然、经济和社会系统及其影响因素是非常复杂的非线性系统,它不仅有输入层节点及输出层节点,而且还可以有一层至多层隐含层节点。权值为零,说明相连的两个神经元不发生作用,若为负,说明相连的两个神经元之间相互抑制。此外,对于隐含层及输出层的各神经元而言,它还有一个阈值,其作用是调节神经元的兴奋水平。当有信息输入网络时,该信息首先由输入层传至隐含层节点,经特性函数作用后,再传至输出层输出,其间每经过一层都要由相应的特性函数进行变换。节点的特性函数要求是可微的,通常选用S型函数,特性函数通常取Sigmoid函数,本系统选用Sigmoid函数,即和作为特性函数,具有较好的收敛性,模拟结论也比较符合实际情况[3,6]。

2 BP学习算法描述

BP网络中每个节点都有一个状态变量xi,节点i到节点j有一个连接权系数wji,每个节点都有一个阈值θj,每一个节点定义一个变换函数 fj[xi,wji,θj(i≠j)],最常见的形式为

为了方便起见,将阈值θ作为神经元权值的第一个分量加到权值中去,那么输入向量就应增加一项,可设输入向量的第1个分量固定为 1,这样 fj[xi,wji(i≠j)]的形式就可变为

一个3层单输入、单输出、n个隐节点的BP网络结构如图1所示。

图1 BP网络结构图Fig.1 Structure diagram of BP network

图1中,黑圆表示输入为固定值1的神经元,用它与隐层神经元的连接权w011~w01n来表示隐层神经元的阈值,它与输出层神经元的连接权w02来表示输出层神经元的阈值,w11~w1n为输入层到隐层之间的连接权值,w21~w2n为隐层到输出层之间的连接权值[4-6]。描述一个如图1所示网络的BP算法,它主要包括2个阶段:

1)正向传播阶段 从样本集中取出一个样本(x,d),计算隐层各个节点(神经元)输出 yI(i)=f(w1(i)x-w01(i))和输出层节点输出

2)反向传播阶段 按下式反向计算各层节点的局部梯度δ 和权值修正量

即:

即:

权值调整量计算:

式中,x 是输入,d 是期望输出,f为激励函数,η为学习率,δ(o)为输出层节点的梯度,δi为隐层节点i的梯度。

3 BP神经网络的VHDL设计

3.1 选择系统处理数据字长

在运算中,涉及大量乘累加操作,本应采用浮点运算,但是占用的硬件资源和速度都将会不理想;如果采用定点运算,运算中带来的“位增长”率将使每一级运算的最大值可能会逐级加倍,因此如果不精心地规划设计,这些值就会溢出,结果会因为精度不够而无法使用。因此采用自定义的定点数进行基本的运算单元设计。本系统采用不削弱神经网络能力的最小要求16位(1,5,10)带符号定点数表示,最高位为符号位,低10位为小数位,其余为整数位。

例如:将 1.5用 16位(1,5,10) 带符号定点数可表示为:0000011000000000,将-2.3 用 16 位(1,5,10) 带符号定点数可表示为:1000100100110011。

3.2 BP神经网络模块库的建立

根据文件复用性的要求,建立基于VHDL语言的BP神经网络元件库,根据层次设计的要求,BP神经网络结构的描述分为3层:第1层是前向传输模块的描述,包括输入信号加权求和,权值的存储和非线性激励函数的实现;第2层是反向传输模块的描述;第3层是系统控制模块的描述。下面用VHDL语言对这3层结构分别进行设计。

3.2.1 前向传输模块的设计

图2为前向传输模块的VHDL程序设计流程。计算时x和w都是16位有符号数,相乘后为31位数(最高位为符号位(两输入数符号位相异或),低20位为小数位,其余10位为整数位),为了节省硬件资源四舍五入,舍去低10位小数位,为了防止后面相加是溢出,再扩展4位整数位,所以乘累加后输出为25位。

函数变换部分:对于FPGA硬件来说,其可实现的运算极为有限,而BP网络中的作用函数sigmoid函数是非线性的,是硬件实现的一个难点,常用的实现方法是查表法,这种方法比较简单,但需要占用较多资源,当需要实现的网络规模较大且精度要求较高时,查表法的实现有很大障碍;还有一个方法就是多项式逼近法。本系统使用了查表和多项式逼近2种方法。

图2 前向传输程序设计流程图Fig.2 Flow chart of prior to the transfer process

3.2.2 反向传输模块的设计

反向传输模块的VHDL程序设计流程如图3所示。

图3 反向传输程序设计流程图Fig.3 Flow chart of reverse transfer program

使用3输入的乘法器计算Δw02,4输入的乘法器计算Δw2,5输入的乘法器计算Δw01,6输入的乘法器计算Δw1,这样并行计算 Δw02、Δw2、Δw01、Δw1。

3.2.3 系统控制模块的设计

该系统控制模块由一个计数器组成,计数器的输入信号有:时钟信号、启动运算信号start、最大训练次数maxcount、误差信号e、误差容限eps,样本数目;输出信号有:前向传输控制信号en1,求误差控制信号en2、反向传输控制信号en3、权值调整控制信号en4、权值读写信号en5、读样本地址信号,训练次数 count。

3.3 基于FPGA的芯片和仿真软件选型

芯片选型要考虑的因素有:硬件资源,例如LE个数、PLL个数、RAM个数;核心及外设电压标准、功耗;软件工具的功能对VHDL语言的支持;市场上专业开发板的支持。

本系统设计采用Altera公司Cyclonell系列的EP2C20Q240C8型FPGA。器件EP2C20Q240C8片内资源丰富,逻辑单元共18752个,最大用户输入输出引脚为142个,器件EP2C20Q240C8还内嵌RAM,共208 KB,包含4个 PLL,同时支持 Nios软核处理器。EP2C20Q240C8型FPGA的核心电压是1.2 V,I/O电压是3.3 V。而综合软件则使用Altera公司的QuartusⅡ6.1。

4 实验验证

将该BP网络用来实现函数逼近,取网络为1-5-1(输入、输出层神经元数为1,隐层神经元数为5),本系统测试了很多函数,现将其中2例测试结果列出,如图4所示,(图中实线为目标曲线,+线为逼近曲线)。由测试结果可以看出,对于函数中比较平坦的地方,该系统拟合结果不太理想,对于不同的网络结构,网络模型的误差或性能和泛化能力也不一样,一般地,随着网络结构的变大,误差变小。通常,在隐层节点数增加的过程中,网络误差会出现迅速减小然后趋于稳定的一个阶段,因此,合理的隐层节点数应取误差迅速减小后基本稳定时的隐层节点数。合理网络模型是必须在具有合理隐层节点数、训练时没有发生“过拟合”现象、求得全局极小点和同时考虑网络结构复杂程度和误差大小的综合结果。设计合理的BP网络模型的过程是一个不断调整参数的过程,也是一个不断对比结果的过程,比较复杂且有时还带有经验性。

例1:待测函数y=x2,测试结果如图4所示。

图4 函数y=x2的BP网络硬件测试结果图Fig.4 Test results of BP network hardware for y=x2function

例2:待测函数y=e-xsin(2x)+0.2,测试结果如图5所示。

图5 函数y=e-xsin(2x)+0.2的BP网络硬件测试结果图Fig.5 Test results of BP network hardware for y=e-xsin(2x)+0.2 function

5 结 论

以BP网络为例提出了神经网络硬件实现方法。应该说明的是:这种方法并非只适合于BP网络,由于神经网络都具有大规模并行的简单运算的特点,所以可以将此方法推广至更多类型的神经网络。

本系统在参考前人工作的基础上,综合考虑了各种因素,用VHDL硬件描述语言设计并实现了该系统,从测试结果来看,本文所设计的BP神经网络不但达到了一定的数据精度,也能满足一般场合下的速度处理要求。此尝试的成功将改变人工神经网络的研究局限于算法和应用等领域的现状,也必将极大促进神经网络研究的进一步发展,这也将推动神经网络硬件在相关应用领域中的实用化。

[1] 高隽.人工神经网络原理及仿真实例[M].北京:机械工业出版,2007.

[2] 刘祖润,曾喆昭,张志飞,等.基于单片机的Chebyshev神经网络硬件设计[J].半导体技术,1999,24(5):1003-353X.LIU Zu-run,ZENG Zhe-zhao,ZHANG Zhi-fei,et al.Design of hard-ware of the Chebyshev neural networks based on single chip[J].Semiconductor Optoelectronics, 1999,24(5):1003-353X.

[3] 韩力群.人工神经网络理论、设计及应用[M].北京:化学工业出版,2005.

[4] Theodoridis S,Koutroumbas K.模 式 识 别[M].李 晶 皎 , 朱 志良,王爱侠,等,译.北京:电子工业出版,2004.

[5] Kumar S.神经网络 [M].北京:清华大学出版,2006.

[6] 赵知劲,庄婵飞,干立,等.调制样式BP神经网络分类器[J].现代雷达,2003,25(10):1004-7859.ZHAO Zhi-jin, ZHUANG Chan-fei, GAN Li, et al.Classifier of modulation types using BP neural network[J].Modern Radar, 2003,25(10):1004-7859.

猜你喜欢
隐层权值神经元
基于RTD可编程逻辑门的n变量函数实现算法
一种融合时间权值和用户行为序列的电影推荐模型
CONTENTS
基于BP神经网络学习算法的图像压缩技术研究
基于RDPSO结构优化的三隐层BP神经网络水质预测模型及应用
代价敏感正则化有限记忆多隐层在线序列极限学习机及图像识别应用
跃动的神经元——波兰Brain Embassy联合办公
基于权值动量的RBM加速学习算法研究
基于多维度特征权值动态更新的用户推荐模型研究
基于二次型单神经元PID的MPPT控制