BP神经网络FPGA实现结构的优化设计

2022-11-16 02:24谭会生徐界铭张驾祥
计算机工程与应用 2022年21期
关键词:偏置权值神经网络

谭会生,徐界铭,张驾祥

1.湖南工业大学 轨道交通学院,湖南 株洲 412000

2.长沙理工大学 近地空间电磁环境监测与建模湖南省普通高校重点实验室,长沙 410000

随着计算机硬件的发展,人工神经网络在图像处理[1-2]、语音识别[3-4]、语义分析[5]等领域有了更广泛的应用。BP神经网络的结构简单、泛化能力强等特征,使得其在分类和识别等任务中得到广泛应用,因此对BP 神经网络的硬件部署优化具有重要意义。目前主要采用软件方式实现对BP 神经网络的训练和推理,但其存在训练速度慢、不能满足实时性等问题,由此可以采用FPGA 处理BP 神经网络中存在的大量并行结构来达到减少计算时间的目的。利用FPGA的并行计算、流水线技术[6-7]等设计优化方式可以大大缩短神经网络前向传播与反向传播所用时间。许多课题在此方面展开了一些的研究,文献[8]提出一种适用于BP神经网络的串入串出的脉动阵列结构,采用并行化处理方式极大地提高了识别和训练速度;文献[9]通过采用平滑插值法对Sigmoid 激活函数的硬件实现进行改进,但是在数据存储中采用寄存器存储方式不利于大型网络的部署;文献[10-11]采用线性分段拟合实现Sigmoid 函数,降低了设计复杂度;文献[12-14]采用定点量化方法,将浮点数转换为定点数进行计算,以加快运算速度、降低资源消耗。

本文提出一种总体设计和关键模块融合优化的BP神经网络FPGA实现结构优化方法,采用流水线结构和定点数据量化方式提高BP 神经网络处理速度;采用二次方程多段拟合Sigmoid 激活函数方法,降低计算复杂度;采用一种权值读取与更新交替流水进行的双端口RAM 存取方法在不扩展存储空间的同时降低时间损耗,采用Fashion-MNIST 和MNIST 对BP 神经网络的FPGA优化结构进行验证。

1 BP神经网络结构与原理

1.1 BP神经网络结构

如图1 所示,BP 神经网络按层次可分为输入层、隐藏层和输出层,其中隐藏层和输出层含有权值和偏置参数。隐藏层是一种多层次结构,每层的神经元数量相同,层间输出采用Sigmoid等非线性激活函数进行处理,采用全连接的方式连接至下一层。BP神经网络包含前向传播和反向传播两个过程。前向传播时,用户数据由输入层输入,通过隐藏层和输出层的推理,得到最终输出结果。反向传播包括计算输出误差、计算修正量、更新输出层和隐藏层权重及偏置参数。

本文在现有网络结构基础上,选用784-30-10 的单隐藏层BP神经网络结构[10],其中包括784个输入层神经元,30个隐藏层神经元,10个输出层神经元。

1.2 BP神经网络前向传播原理

将28×28 的图像数据展开成一个784×1 的向量X并通过输入层传输至隐藏层。

不同钙硫比燃烧后的灰熔点参数见表4。由表4可知,灰熔点先降低后升高,在钙硫比为1.0时,灰熔点最低,钙硫比增至1.5之后,灰熔点逐渐上升。分析原因认为,外加脱硫剂与煤中矿物质反应生成的高钙化合物之间形成了低温共熔物,引起灰熔点降低,但当外加钙量过大时,其即破坏了硅聚合物,又形成了高熔点的正硅酸钙(CaSiO3,纯物质熔点为2 130 ℃),导致灰熔点上升[16-17],炉内不易结渣。

其中,W(1)是隐藏层权重矩阵,B(1)是隐藏层的偏置参数矩阵,A(1)由隐藏层计算结果Z(1)经过激活函数f(·)得到。输出层以A(1)作为输入,计算过程与隐藏层相似,最终得到A(2)向量作为输出。

1.3 BP神经网络反向传播原理

反向传播根据神经网络最终输出更新网络参数。本文采用均方误差损失函数反映网络输出与期望值间的差异,如公式(3)所示。梯度下降方式采用随机梯度下降法。通过多次迭代不断优化更新网络权值和偏置,使损失函数趋近于0,以此得到最为合适的网络参数。

本文使用Quartus Prime 16.0软件作为设计开发平台,以VHDL作为主要设计语言。

英国当地时间9月16日,以“融合创新、共享发展”为主题的“2018Shenzhen Products Show”在英国伦敦柏宁希尔顿酒店盛大召开。包括宝时捷在内的深圳七大产业约50家品牌携1000余件产品集中亮相。

2 BP神经网络的FPGA设计

采用学习率η=0.062 5 更新网络权值与偏置,权值及偏置参数更新如公式(8)~(11)所示:

要想从根本上提高民办高校实验建设和教学管理水平,既满足教学需求,又能做到为学生负责,为国家提供自主创新的人才。需要民办高校不断深化教育教学改革,对实验教学管理提出更高的要求,并在此基础上不断培养高素质、高水平的技术应用型人才。但是,现在的民办高校还不能更好的适应社会的发展,实验室的管理水平还不够科学规范,实验室的利用率没有充分挖掘,不能更好的服务于学生。要提高教学质量,需要进一步解决实验教学中存在的不足。

图像输入数据经归一化后和网络权重及偏置参数采用18 位有符号定点数表示,其中低13 位为小数位,最高位为符号位,一方面充分利用DSP 乘法器,另一方面保证足够的数据精度。初始化权值与偏置利用MATLAB产生正态分布的随机数预先存储于分布式双端口RAM中。

隐藏层输出A(1)计算如公式(1)、(2)所示:

图1显示了像素与黑色核(USAN)亮度相似的像素,不同亮度的像素着色为白色。当黑色核面积不到遮挡总面积的一半时,将该点视为角点,角点的位置由黑色核区域的最小值表征。

2.1 神经元模块设计

每个神经元拥有独立的权值存储空间,由专用DSP乘法器、加法器和限幅器组成。

神经元设计采用时序逻辑电路,当产生输入使能en和输入数据x_in 时,计数器进行计数得到分布式权值RAM的地址信号ad并输出读使能信号rd,权值RAM据此输出相应权值w至神经元中。输入数据x_in经寄存器调整时序后与权值w同时输入乘法器中进行计算。累加器与乘法器直接相连,当输入完成时即可完成所有乘累加运算,同时加上偏置参数b。输出z时,需要对其进行溢出判断,当z产生溢出时对其进行限幅,避免数据溢出错误。模块设计如图2所示。

2.2 Sigmoid函数及其导数模块设计

BP 神经网络的FPGA 实现结构设计如图9 所示。在前向传播中,图像数据X依次输入隐藏层,并将其存储至缓存RAM 中,隐藏层完成运算后数据经由并行转串行模块输出至Sigmoid 函数运算模块进行激活得到A(1),同时将A(1)输入至输出层并存储至隐藏层输出RAM 中,输出层完成运算后数据经由并行转串行模块输出至Sigmoid 函数模块进行激活得到A(2),利用A(2)得到置信度最大值的地址标签,通过显示模块对结果进行显示输出,前向传播完成。本文在前向传播的设计中,使用共享神经元读权值RAM信号、调换并行转串行模块与激活函数模块处理顺序等方法降低了硬件资源的消耗。

由公式(12)可知,该曲线关于点(0,0.5)中心对称,因此在实现z正半轴函数后仅需计算1-f(|z|)即可表达z负半轴部分,如公式(13)所示。该方法可在相同的计算量下减少硬件资源开销。

1.2 方法 2015年选取栽植15株树,3株1个小区,5次重复,萌芽前(山东烟台地区4月中旬),将发枝素与水按1∶1的比例混匀,用毛刷涂抹幼树主干,涂抹范围为幼树顶部剪口向下10 cm处至离地面60 cm区域,第2年对幼树上部新生主干用同样的方法涂抹。2016年萌芽前,对主干上抽生分枝涂抹促花剂,方法是将促花剂与水按照1∶1的比例混匀,用毛刷涂抹分枝。对照不作任何处理。

Sigmoid函数硬件设计采用二次函数分段拟合的方式实现。图3为分段函数在区间[0,1)、[1,2)、[2,4)、[4,6)、[6,8)、[8,+∞)上对Sigmoid函数进行拟合的曲线。

拟合函数如表1 所示,可以看出,采用二次函数分段拟合的方式拟合Sigmoid 函数的绝对误差不超过0.001,较线性分段拟合的方式拥有更高的精度。

隐藏层权值更新计算的设计与输出层权值更新计算的设计采用相似结构完成。

表1 分段二次函数及误差Table 1 Piecewise quadratic function and error

Sigmoid 函数导数的表达式如公式(14)所示,通过因式分解,Sigmoid 函数的导数可以表述为f′(z)=f(z)(1-f(z))。因此仅需使用1 次减法和1 次乘法即可得到Sigmoid 函数的一阶导数的FPGA 实现,相较于线性拟合方法,使用该方法可以在不增加设计量的同时获得较高精确度。

2.3 参数更新计算模块设计

2.3.2 输出层权值更新计算的设计

由公式(5)dB(2)=(A(2)-Y)⊙A(2)′,dB(2)由网络输出误差(A(2)-Y)与A(2)′ 构成,其中A(2)′ 可表示为A(2)⊙(I-A(2)),I是元素全为1 的向量,输出层偏置更新计算的设计如图5所示。输入A(2)同时输入期望值Y,利用流水线结构在3个周期后即可依次得到dB(2),通过向右移位的方式得到ηdB(2),将其输出至串转并模块后对输出层各神经元偏置进行更新。

面对市场的激烈竞争,酒店需要对各种营业进行预测分析,对酒店经营状况进行全面分析,而酒店管理信息系统既能及时提供历史资料和当前数据,又可以提供同期对比分析及其他分析的模式,使管理人员很方便地完成复杂的分析工作。信息化技术在酒店管理中的应用无疑是对酒店未来的发展有益处的,在管理的效率、成果上都有传统管理方式比不上的点,因此,酒店信息化管理大势所趋。

2.3.1 输出层偏置更新计算的设计

公式(4)可改写为dW(2)=dB(2)·A(1)T,其是一个维度为10×1的向量与一个维度为1×30的向量相乘。从数据更新角度分析,dB(2)中一个元素与向量A(1)T相乘得到的一行数据为dW(2)的一行元素,为一个神经元的分布式权值RAM更新所需的数据。输出层权值更新计算的设计如图6所示。

广州地铁导向系统是由图形、文字、特定颜色及几何形状组成的标识牌体,可以有效提高城市综合交通系统的运营效率与地铁运营系统的现代化管理水平,既体现地铁以人为本的设计理念,方便广大市民出行,同时又提高紧急状态下地铁车站的快速疏散能力。

2.3.3 隐藏层偏置更新计算的设计

由公式(7),dB(1)的计算首先需要得到W(2)T·dB(2),再得到W(2)T·dB(2)⊙A(1)′ 。隐藏层偏置更新计算的设计如图7 所示,当向量dB(2)中所有元素加载完成时,同时读取输出层分布式权值RAM 中权值数据,通过乘累加的方式依次输出向量W(2)T·dB(2)中的元素,同时读取隐藏层输出RAM中的数据,通过并行乘加计算得到W(2)T·dB(2)⊙A(1)′ ,以此得到向量dB(1),再以移位的方式乘学习率,最后通过串转并模块后对隐藏层偏置进行更新。

表1 中二次函数可写为f(z)=Aiz2+Biz+Ci,对f(z)=Aiz2+Biz+Ci进行因式分解,将其改写为f(z)=Ai(z2+Bi′z)+Ci,使Sigmoid 函数FPGA 设计具有流水线实现结构。Sigmoid 函数的模块设计如图4 所示,系数选择器根据输入值z选择所在分段的函数系数进行装载计算。

事情来得真是那么偶然。在我百无聊赖意气消沉的日子,你突然出现在我的生活里,好像穿射阴霾的一缕阳光,照亮了我的生活。

2.4 数据存取优化设计

本文采用分布式双端口RAM作为权值的主要存储器。双端口RAM 拥有2 个读写端口,可同时对同一存储空间中的不同地址数据进行读写,本文采用一种网络权值读取与更新交替流水进行的数据存取方法,以提高数据存取的速度、降低数据存取的资源消耗。

5G回传的分组切片网络架构和关键技术研究………………………………………………赵福川,温建中 24-4-02

使用单端口RAM 进行权值更新主要有两种方式,如图8(a)、(b)所示。图8(a)采用双RAM 方式,将RAM1 中存放的旧数据读出并通过计算更新写入至RAM2中,该方式在读RAM1数据时可以写RAM2的数据,因此其耗时为tR+tC,但该方法占用2 个RAM 空间。图8(b)采用单RAM 方式,数据更新时将存放在RAM1中的旧数据读出并通过计算暂存至寄存器中,待全部计算完成后再将新数据重新写入RAM1中,该方式虽只占用1个RAM空间,但其耗时为tR+tC+tW。数据存取交替流水设计采用如图8(c)所示的方式实现,数据更新时,通过端口A 读出RAM1 数据进行计算,因为权值更新会带来相应的延时,在端口B写数据回RAM1时不会与读数据产生相同地址同时读写的问题,所以可以从端口B将数据写入至RAM1中覆盖旧数据,采用这种结构结合了前两种设计的优势,耗时为tR+tC,且仅消耗1个RAM空间。

2.5 BP神经网络的FPGA实现结构设计

Sigmoid函数表达式如公式(12)所示:

在反向传播中,由输出值A(2)计算得到A(2)-Y,根据公式(5)计算得到dB(2),在更新B(2)同时输出dB(2),利用A(1)计算得到dW(2),在更新W(2)读取原数据时,将dB(2)同时输出至dB(1)计算模块中,再根据A(1)计算得到dB(1)并更新B(1),最后由X和dB(1)计算得到dW(1)并对W(1)更新,完成反向传播。在反向传播中采用数据存取优化设计提高了计算速度。

上述语料描述的是达西先生邀请伊丽莎白跳舞的一小段对话。首先对达西先生所说的话进行语义解码,达西先生对伊丽莎白所说的话可以理解为对伊丽莎白在当时的情境下是否有跳舞意向的询问。从句法结构的方面来讲,达西先生的这句话一方面将“Miss Bennet”作为问句中的插入语形式出现,强调了问话的对象,即伊丽莎白,另一方面从整个词义的角度上来讲,该句话中有两个超过四个音节的单词出现,体现了这句提问在语义上的含蓄与正式。

3 BP神经网络的FPGA系统仿真与测试

利用前述BP 神经网络的FPGA 实现结构,分别设计构建字符识别系统和服装识别系统。BP神经网络的FPGA 系统采用Quartus Prime 16.0 进行综合,利用ModelSim进行门级仿真。BP神经网络前向传播FPGA系统实现采用的芯片型号为5CSEMA5F31C6。

3.1 前向传播仿真

在前向传播仿真中,使用.mif文件将训练好的权值导入分布式权值RAM 中,随机选择Fashion-MNIST 数据集中测试集的一张图像进行输入,其标签为“9”。前向传播仿真结果如图10所示。在70 MHz时钟条件下,图像输入在11.018 μs处完成,经过0.952 μs处理后完成输出,总时间花费为11.97 μs。最后得到输出sig_o在地址9 处结果最大,仿真结果与标签相同,前向传播系统仿真正确。

为验证FPGA 系统输出结果具有普遍性,随机在MNIST和Fashion-MNIST数据集的测试集中选择10组图像样本进行硬件仿真测试,并与MATLAB 输出结果进行比较,结果如表2 和表3 所示。表中硬件识别结果与软件识别结果一致,置信度绝对误差小于0.003,FPGA设计识别结果具有普遍性。

表2 MNIST软硬件仿真结果比较Table 2 Comparison of MNIST software and hardware simulation results

表3 Fashion-MNIST软硬件仿真结果比较Table 3 Comparison of Fashion-MNIST software and hardware simulation results

3.2 反向传播仿真

反向传播仿真如图11 所示。前向传播在11.97 μs处完成,然后反向传播开始。B(2)计算输出在12.292 μs处完成,此时在W(2)计算更新模块与dB(1)计算模块中的数据装载完成并开始计算,在12.782 μs 处W(2)计算更新完成,经过0.504 μs 运算,在13.286 μs 处B(1)计算更新完成,同时W(1)计算模块中dB(1)数据装载完成,最后读入前一次的W(1)进行计算更新,在24.332 μs处W(1)更新完成。经测试,一次用硬件实现的数据更新的参数与用软件实现的数据更新参数的误差小于2-13,符合设计要求,仿真结果正确。

3.3 前向传播FPGA测试

前向传播FPGA实现资源消耗如图12所示,Quartus综合后逻辑资源利用率为11%,总寄存器数为4 380,消耗47 个DSP 乘法器资源。由于采用片上RAM 作为LCD显存,总片上RAM使用率为31%。

前向传播FPGA 系统实现如图13 所示,液晶屏显示输入图像数据,数码管左侧显示为网络识别结果,右侧为识别结果的置信度。将MNIST 测试集的10 张图像数据作为输入,FPGA 识别结果如表4 所示。导入Fashion-MNIST 数据集对应的网络权值参数后,FPGA识别Fashion-MNIST 数据集10 张图像数据结果如表5所示。

表4 MNIST数据集FPGA硬件识别结果Table 4 FPGA hardware recognition results of MNIST dataset

表5 Fashion-MNIST数据集FPGA硬件识别结果Table 5 FPGA hardware recognition results of Fashion-MNIST dataset

利用SignalTap II 逻辑分析器对FPGA 系统的输出及耗时进行观测,如图14 所示。选择前向传播仿真所用图片作为输入,FPGA 识别结果为“9”,其置信度为7 877,即0.961 5,系统耗时为855个周期,即11.97 μs,硬件输出结果符合仿真输出。

面对学生的这些问题,一年前的我,一来会自我贬低,觉得自己怎么这么没用,小小一个班级都管理不好;二来会贬低学生,认为他们太差劲,连认真上课都做不到。为了释放心中压抑的情绪,我可能会在班里用恶狠狠的话语骂上一通。可以想象,我的脸色极其难看,声音相当刺耳,没经过理性思考说出来的话十分难听,整个人成了“恶魔”的代言人。

3.4 性能比较

在前向传播中,在相同网络结构及硬件条件下,本设计资源消耗均少于文献[10],总逻辑单元使用率为文献[10]的31%。相较于文献[10],本文优化了权值RAM的读取方式,减少了地址发生器的数量;通过调换并行转串行模块与激活函数模块的处理顺序对硬件设计结构进行了优化,减少了激活函数模块的使用数量38个,降低逻辑资源使用量约6 270,资源消耗对比如表6 所示。在利用前向传播对MNIST 手写数字识别中,相较文献[10]100 个测试样本89%准确率,本设计准确率可达到与软件识别结果相同的97%,硬件实现结果与软件实现结果误差小于0.003,如表7所示。

表6 前向传播硬件设计资源消耗对比Table 6 Forward propagation hardware design resource consumption comparison

表7 前向传播输出正确率及误差对比Table 7 Forward propagation output correct rate and error comparison

在反向传播中,MATLAB 2019 在CPU 工作频率3.9 GHz 情况下进行60 000 次训练需要约3.2 s;根据仿真结果,基于硬件优化设计的BP 神经网络在相同训练次数下需要1.46 s,为MATLAB实现时间的45.63%。

文献[15]在仿真中以10并行度进行6 000次反向传播作为一次迭代训练,在100 MHz 时钟条件下耗时为150 ms;本设计在70 MHz时钟频率下进行6 000次反向传播耗时为146 ms,折算至100 MHz 时钟条件下,耗时为105 ms,本设计在相同条件下训练时间为文献[15]的70%,提高了BP神经网络的运算速度。

4 结束语

本文对一个用FPGA实现BP神经网络的结构进行了优化设计,对其前向传播进行了硬件实现,对反向传播进行了仿真。本文采用定点数计算和流水线结构,在降低计算复杂度的同时提高了计算速度;采用二次函数多段拟合Sigmoid函数,提高了系统计算精度;在结构设计上,通过调换并行转串行模块与激活函数模块的处理顺序、采用数据存取交替流水等优化设计方法,在降低资源消耗情况下,有效提高系统处理速度。实验结果表明,优化后的硬件结构总逻辑资源使用率为原来的31%,FPGA 中单样本前向与反向传播所用时间为24.332 μs,仅为MATLAB实现时间的45.63%,在提高BP神经网络识别速度的同时降低了资源消耗。

猜你喜欢
偏置权值神经网络
喷锡钢网曲线偏置方法研究
基于40%正面偏置碰撞的某车型仿真及结构优化
一种融合时间权值和用户行为序列的电影推荐模型
基于神经网络的船舶电力系统故障诊断方法
基于双向线性插值的车道辅助系统障碍避让研究
MIV-PSO-BP神经网络用户热负荷预测
基于改进Hopfield神经网络的对地攻击型无人机自主能力评价
基于5G MR实现Massive MIMO权值智能寻优的技术方案研究
某越野车小偏置碰撞结构优化
一种基于互连测试的综合优化算法∗