论文部分内容阅读
人工神经网络是受大脑神经突触结构启发,可并行处理信息的数学模型,已广泛应用于生物、电子、经济等领域。训练是建立神经网络最重要的一步,其通过改变神经网络的权重使预期值与实际输出值相符。已有诸多优化算法用于神经网络的训练过程,如梯度下降法、共轭梯度法、拟牛顿法和粒子群优化法等。其中,拟牛顿法以其快速收敛和计算量小的特点广受欢迎。但是,其迭代优化过程在软件平台实现时需要消耗大量求解时间,并且不适宜嵌入式场合。所以需要寻求一种硬件加速的方法提升网络的训练速度。近年来,现场可编程门阵列(FPGA)以其高并行度、设计灵活(相对于ASIC)、能耗低(相对于GPU)和丰富的逻辑资源等特点,被认为是加速设计的有效实现平台。因此本文首次将拟牛顿算法在FPGA上实现,用于加速神经网络的训练过程。本设计通过分析拟牛顿算法,将其划分为梯度计算、矩阵更新、线性搜索和目标函数评估四大模块。每个模块被实现为硬件单元,其架构根据模块中涉及的操作来定制。在每个模块内,尽可能地采用流水线技术和模块复用技术。本文提出了两个硬件架构:DFP架构与BFGS架构。DFP架构采用DFP矩阵更新方式和近似梯度计算结构。该架构通用性强,但耗时较长且有除零溢出的问题。BFGS架构采用BFGS拟牛顿法,并针对神经网络训练设计了梯度计算结构,有效地改善了DFP架构中的不足。两个硬件架构均具有可扩展性,可处理不同的网络规模,支持在线训练。上述硬件设计通过Vivado 2014.4在NetFPGA SUME开发板上综合实现。就资源消耗、运行时间和动态功耗这三方面,本文对硬件设计的性能进行评估。实验结果表明,相对于软件实现,DFP架构加速17倍,BFGS架构加速106倍。此外,本论文还将BFGS硬件架构置于实际场景中测试。实验结果表明,该设计对于训练多输出神经元的网络具有更优越的加速特性。