CN115099397A - 面向硬件的Adam算法二阶矩估计优化方法及系统 - Google Patents

面向硬件的Adam算法二阶矩估计优化方法及系统 Download PDF

Info

Publication number
CN115099397A
CN115099397A CN202210599828.8A CN202210599828A CN115099397A CN 115099397 A CN115099397 A CN 115099397A CN 202210599828 A CN202210599828 A CN 202210599828A CN 115099397 A CN115099397 A CN 115099397A
Authority
CN
China
Prior art keywords
value
formula
order
moment
square
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.)
Pending
Application number
CN202210599828.8A
Other languages
English (en)
Inventor
张春
牛丽婷
张惟宜
姜汉钧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN202210599828.8A priority Critical patent/CN115099397A/zh
Publication of CN115099397A publication Critical patent/CN115099397A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种面向硬件的Adam算法二阶矩估计优化方法及系统,该方法包括:初始化;重复执行以下步骤,直至达到设定迭代步数或满足收敛条件:针对本步待优化参数对目标函数求导,获得本步梯度;根据二阶指数衰减因子、本步梯度的绝对值和上步二阶矩估计开平方值,获得二阶距开平方和公式的较大值和较小值;将其输入至二阶距开平方和公式,获得本步二阶矩估计开平方值,以计算本步更新步,二阶距开平方和公式的确定步骤如下:获得平方和开根号近似公式;获得用于表示二阶距开平方和公式的较大值和较小值;确定二阶距开平方和公式。本发明可以实现低资源占用、高吞吐率的面向硬件的Adam算法二阶矩估计优化,且可避免精度的损失。

Description

面向硬件的Adam算法二阶矩估计优化方法及系统
技术领域
本发明涉及机器学习、电路设计领域,尤其涉及一种面向硬件的Adam算法二阶矩估计优化方法及系统。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
训练神经网络的本质是重复网络的前向和反向传播,并在其中不断地寻找合适的参数的过程。更新参数的方向即为使损失函数达到最小的方向,损失函数是真实值与目标函数值的差值。神经网络根据损失函数对待更新参数求偏导数,该偏导数不直接作用于待更新参数上,而是先通过一个优化器得到更新因子,然后和学习率一起更新待更新参数。
常见的优化算法有梯度下降算法(Stochastic Gradient Descent,SGD)、带动量的随机梯度下降(Momentum-SGD)、Adagrad、Adadelta和自适应矩估计(Adaptive MomentEstimation,Adam)等。Adam算法结合了Momentum和Adadelta算法优点,在迭代过程中同时考虑一阶矩估计和二阶矩估计,动态调整每个参数的学习率。
目前,Adam算法已因其良好的性能和快速的收敛速度被广泛使用。Adam算法中的一阶矩,相当于当前梯度的期望,它的作用是惯性保持,使得每一次更新时,前后两次的更新不会相差太大,即保证梯度平滑稳定地过度。Adam算法中的二阶矩,相当于当前梯度平方的期望,它的作用是环境感知,例如当一阶矩较小而二阶矩较大时,说明当前梯度一会正一会负,所以一阶矩相抵消,二阶矩逐渐累计,此时更新可能处于震荡状态。
Adam同时考虑惯性保持与环境感知问题,目前是收敛速度最快、性能最好、使用最广泛的几个优化算法之一。带随之而来的是计算复杂度的提升,这点在硬件实现时将会导致成倍的速度资源消耗。
目前,Adam实现大致有三种方法,一是使用通用处理器,但存在着运算效率低、不能并行运算等缺点,第二种GPU实现则会带来巨大的功耗开销。最后一种是可编程逻辑门阵列(FPGA)实现,它并行度高、功耗低,能够解决上述两种处理器存在的问题,但是,有限的资源配置和精度的损失也成为实现硬件加速阻碍。根据Adam算法的二阶矩计算公式vt=β2·vt-1+(1-β2)·gt 2以及参数更新公式
Figure BDA0003669536670000021
在计算Adam算法的二阶矩估计时,需要先后经过平方运算、除法运算、开方运算和除法运算,这些运算部署于硬件(FPGA)将会消耗大量硬件资源,尤其是LUT资源。仅一次开方就会使用约5000多个LUT资源和675个触发器资源。同时由于Adam算法的核心就是要沿着梯度下降的方向去寻找目标函数的最小值,所以总有数量级相当小的数值经过Adam算法,如果此数值再经过一次平方运算,数量级将会翻倍,当在硬件中使用定点数进行平方运算后,所得的数值极有可能超出最小精确值的表示范围,从而被记录为0值,造成大量的精度损失,导致算法无法收敛。
因此,对Adam算法二阶距估计进行硬件实现一方面要考虑资源使用问题,另一方面要避免精度的损失。与此同时还要考虑数据的吞吐量。
发明内容
本发明实施例提供一种面向硬件的Adam算法二阶矩估计优化方法,用以解决Adam算法FPGA实现时资源占用过多、精度易损失等问题,实现低资源占用、高吞吐率的面向硬件的Adam算法二阶矩估计优化,且可避免精度的损失,该方法包括:
初始化二阶矩估计开平方值、二阶指数衰减因子、初始迭代步数和预设迭代步骤;
重复执行以下步骤,直至达到设定迭代步数或满足收敛条件:
针对本步待优化参数对目标函数求导,获得本步梯度;
根据二阶指数衰减因子、本步梯度的绝对值和上步二阶矩估计开平方值,获得二阶距开平方和公式的较大值和较小值;
将所述较大值和较小值输入至二阶距开平方和公式,获得本步二阶矩估计开平方值,所述本步二阶矩估计开平方值用于输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步,所述更新步用于在硬件中训练神经网络获得本步更新步;
其中,所述二阶距开平方和公式的确定步骤如下:
将Adam算法的待优化参数更新公式中的本步二阶矩估计值用本步二阶矩估计开平方值代替;
将Adam算法中本步二阶矩估计值计算公式整理为第一临时值和第二临时值的平方和开根号形式的本步二阶矩估计值计算公式;
获得平方和开根号近似公式;
根据第一临时值和第二临时值,获得用于表示二阶距开平方和公式的较大值和较小值;
根据较大值、较小值、平方和开根号近似公式,确定二阶距开平方和公式。
本发明实施例还提供一种面向硬件的Adam算法二阶矩估计优化系统,用以解决Adam算法FPGA实现时资源占用过多、精度易损失等问题,实现低资源占用、高吞吐率的面向硬件的Adam算法二阶矩估计优化,且可避免精度的损失,该系统包括控制模块、比较模块和二阶矩估计模块;其中,
控制模块,用于初始化二阶矩估计开平方值、二阶指数衰减因子、初始迭代步数和预设迭代步骤;重复执行以下步骤,直至达到设定迭代步数或满足收敛条件:
针对本步待优化参数对目标函数求导,获得本步梯度;
将二阶指数衰减因子、本步梯度和上步二阶矩估计开平方值输入至比较模块,获得二阶距开平方和公式的较大值和较小值;
将所述较大值和较小值输入至二阶矩估计模块,获得本步二阶矩估计开平方值,所述二阶矩估计模块用于基于二阶距开平方和公式获得本步二阶矩估计开平方值,所述本步二阶矩估计开平方值用于输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步,所述更新步用于在硬件中训练神经网络获得本步更新步;
其中,所述二阶距开平方和公式的确定步骤如下:
将Adam算法的待优化参数更新公式中的本步二阶矩估计值用本步二阶矩估计开平方值代替;
将Adam算法中本步二阶矩估计值计算公式整理为第一临时值和第二临时值的平方和开根号形式的本步二阶矩估计值计算公式;
获得平方和开根号近似公式;
根据第一临时值和第二临时值,获得用于表示二阶距开平方和公式的较大值和较小值;
根据较大值、较小值、平方和开根号近似公式,确定二阶距开平方和公式。
本发明实施例中,初始化二阶矩估计开平方值、二阶指数衰减因子、初始迭代步数和预设迭代步骤;重复执行以下步骤,直至达到设定迭代步数或满足收敛条件:针对本步待优化参数对目标函数求导,获得本步梯度;根据二阶指数衰减因子、本步梯度的绝对值和上步二阶矩估计开平方值,获得二阶距开平方和公式的较大值和较小值;将所述较大值和较小值输入至二阶距开平方和公式,获得本步二阶矩估计开平方值,所述本步二阶矩估计开平方值用于输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步,所述更新步用于在硬件中训练神经网络获得本步更新步;其中,所述二阶距开平方和公式的确定步骤如下:将Adam算法的待优化参数更新公式中的本步二阶矩估计值用本步二阶矩估计开平方值代替;将Adam算法中本步二阶矩估计值计算公式整理为第一临时值和第二临时值的平方和开根号形式的本步二阶矩估计值计算公式;获得平方和开根号近似公式;根据第一临时值和第二临时值,获得用于表示二阶距开平方和公式的较大值和较小值;根据较大值、较小值、平方和开根号近似公式,确定二阶距开平方和公式。与现有的技术方案相比,本发明实施例确定了二阶距开平方和公式,且在这个过程中,确定了平方和开根号近似公式,并根据二阶指数衰减因子、本步梯度的绝对值和上步二阶矩估计开平方值,获得二阶距开平方和公式的较大值和较小值,进一步地,将所述较大值和较小值输入至二阶距开平方和公式,获得本步二阶矩估计开平方值,可以解决Adam算法在硬件实现时平方运算、开方运算以及除法运算等造成的硬件资源的大量消耗,避免使用定点数时,数据连续经过平方和开方导致的精度损失,同时大幅提高了数据的吞吐量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中面向硬件的Adam算法二阶矩估计优化方法的流程图一;
图2为本发明实施例中二阶距开平方和公式的确定步骤的流程图;
图3为本发明实施例中面向硬件的Adam算法二阶矩估计优化方法的流程图二;
图4为本发明实施例中本步二阶矩估计开平方值应用于Adam在神经网络整体训练过程中的流程图;
图5为本发明实施例中面向硬件的Adam算法二阶矩估计优化系统的示意图一;
图6为本发明实施例中比较模块的示意图;
图7为本发明实施例中二阶矩估计模块的示意图;
图8为本发明实施例中计算本步二阶矩估计开平方值的相关模块关系图;
图9为本发明实施例中面向硬件的Adam算法二阶矩估计优化系统的示意图二。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
图1为本发明实施例中面向硬件的Adam算法二阶矩估计优化方法的流程图一,包括:
步骤101,初始化二阶矩估计开平方值、二阶指数衰减因子、初始迭代步数和预设迭代步骤;
步骤102,重复执行以下步骤,直至达到设定迭代步数或满足收敛条件:
步骤1021,针对本步待优化参数对目标函数求导,获得本步梯度;
步骤1022,根据二阶指数衰减因子、本步梯度的绝对值和上步二阶矩估计开平方值,获得二阶距开平方和公式的较大值和较小值;
步骤1023,将所述较大值和较小值输入至二阶距开平方和公式,获得本步二阶矩估计开平方值,所述本步二阶矩估计开平方值用于输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步,所述更新步用于在硬件中训练神经网络获得本步更新步;
图2为本发明实施例中二阶距开平方和公式的确定步骤的流程图,所述二阶距开平方和公式的确定步骤如下:
步骤201,将Adam算法的待优化参数更新公式中的本步二阶矩估计值用本步二阶矩估计开平方值代替;
步骤202,将Adam算法中本步二阶矩估计值计算公式整理为第一临时值和第二临时值的平方和开根号形式的本步二阶矩估计值计算公式;
步骤203,获得平方和开根号近似公式;
步骤204,根据第一临时值和第二临时值,获得用于表示二阶距开平方和公式的较大值和较小值;
步骤205,根据较大值、较小值、平方和开根号近似公式,确定二阶距开平方和公式。
在步骤201中,将Adam算法的待优化参数更新公式中的本步二阶矩估计值用本步二阶矩估计开平方值代替,以后每轮无需算出二阶距估计值,仅用二阶矩估计开平方值即可完成每步更新。
在一实施例中,所述梯度计算公式为
Figure BDA0003669536670000061
其中,gt为本步梯度;θ为待优化参数;θt-1为本步待优化参数。
ftt-1)可表示为目标函数,即关于参数θ可微的随机标量函数。
其中,二阶矩估计开平方值为vrt
Figure BDA0003669536670000062
初始迭代步数赋值为0。
另外,在获得本步梯度之后,对本步梯度进行取绝对值操作,后续采用本步梯度的绝对值进行计算。这是因为二阶距开平方和公式中的a、b必须为非负数。需要说明的是,计算一阶矩时不需要对本步梯度取绝对值。
在一实施例中,根据二阶指数衰减因子、本步梯度的绝对值和上步二阶矩估计开平方值,获得二阶距开平方和公式的较大值和较小值,包括:
采用如下公式,根据二阶指数衰减因子和上步二阶矩估计开平方值,计算第一临时值:
Figure BDA0003669536670000063
其中,β2为二阶指数衰减因子,vrt-1为上步二阶矩估计开平方值;
采用如下公式,根据二阶指数衰减因子和本步梯度,获得第二临时值:
Figure BDA0003669536670000064
gt为本步梯度;
比较第一临时值和第二临时值,将较大值作为二阶距开平方和公式的较大值,将较小值作为二阶距开平方和公式的较小值。
在一实施例中,获得平方和开根号近似公式,包括:
预设
Figure BDA0003669536670000065
其中,a=vrt cosθ,b=vrt sinθ,
Figure BDA0003669536670000066
预设a≥b,其中,sinθ≥cosθ,
Figure BDA0003669536670000067
预设
Figure BDA0003669536670000068
其中,
Figure BDA0003669536670000069
整理第一公式
Figure BDA0003669536670000071
其中第一公式的值域为
Figure BDA0003669536670000072
Figure BDA0003669536670000073
Figure BDA0003669536670000074
时,第一公式的值为0,确定平方和开根号近似公式为
Figure BDA0003669536670000075
上述过程也是平方和开根号近似公式的证明过程。
上述第一公式误差为
Figure BDA0003669536670000076
最大误差仅在
Figure BDA0003669536670000077
左右。
平方和开根号近似公式中,将原始Adam算法每一次迭代中二阶矩估计值的1次平方运算,1次开方运算,2次除法运算简化为硬件实现方便,不损失精度的加法和移位等运算。经FPGA开发板(Ultra96_V2)测试,单次开方运算占用5157个LUT(look up table)资源和675个触发器资源;单次除法运算占用227个LUT资源和9个DSP资源。优化后的算法中,单次加法运算只占用39个LUT资源,不需要DSP、触发器资源,单次移位运算几乎不消耗任何资源。经测试,对于一个Adam单元,本发明方法相较于原始Adam,LUT资源约下降83%,DSP资源下降50%。
在一实施例中,所述二阶距开平方和公式的确定步骤,包括:
将Adam算法中本步二阶矩估计值计算公式中的本步二阶矩估计值vt表示为本步二阶矩估计开平方值vrt
将Adam算法中本步二阶矩估计值计算公式
Figure BDA0003669536670000078
整理为平方和开根号形式的本步二阶矩估计值计算公式:
Figure BDA0003669536670000079
其中,
Figure BDA00036695366700000710
为第一临时值,
Figure BDA00036695366700000711
为第二临时值;
根据第一临时值和第二临时值,获得用于表示二阶距开平方和公式的较大值
Figure BDA00036695366700000712
和较小值
Figure BDA00036695366700000713
根据较大值、较小值、平方和开根号近似公式
Figure BDA00036695366700000714
确定二阶距开平方和公式为
Figure BDA00036695366700000715
上述为二阶矩估计开平方和公式的推导过程,通过二阶距开平方和公式,无需计算每步的二阶矩估计值vt,仅需利用二阶距开平方和公式计算出每步二阶矩估计开平方值vrt,就能计算出更新待优化参数,完成全部的更新过程。vrt最终可表示为两数相加形式,整个更新过程无需进行平方开放运算。
为了进一步减少硬件资源消耗,提高数据吞吐量,同时对精度无影响,对二阶距开平方和公式中的除3计算进行优化,在一实施例中,所述二阶距开平方和公式如下:
vrt≈a+(b>>2)+(b>>4)+(b>>6)
其中,vrt为本步二阶矩估计开平方值,a为较大值,b为较小值。
在本发明实施例中,将1/3表示成了对一个初始值为1/4(1/22)公比为1/4的等比数列求和,为了简化取了前三位。
图3为本发明实施例中面向硬件的Adam算法二阶矩估计优化方法的流程图二,在一实施例中,所述方法还包括:
步骤301,初始化一阶矩估计值、初始学习率、一阶指数衰减因子和常数;
步骤302,根据一阶指数衰减因子、上步一阶矩估计值和本步梯度,计算本步一阶矩估计值;
步骤303,将初始学习率、一阶指数衰减因子、二阶指数衰减因子和常数、本步一阶矩估计值、本步二阶矩估计开平方值输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步。
在一实施例中,采用如下公式,根据一阶指数衰减因子、上步一阶矩估计值和本步梯度,计算本步一阶矩估计值:
mt=β1·mt-1+(1-β1)·gt
其中,mt为本步一阶矩估计值,β1为一阶指数衰减因子,mt-1为上步一阶矩估计值和本步梯度,gt为本步梯度。
在一实施例中,所述优化后的Adam算法的待优化参数更新公式如下:
Figure BDA0003669536670000081
其中,θt为本步待优化参数,θt-1为上步待优化参数,Ir为初始学习率,mt为本步一阶矩估计值,vrt为本步二阶矩估计开平方值,ε为常数,t为迭代次数。
上述优化后的Adam算法的待优化参数更新公式的推导过程如下:
将原始Adam算法的待优化参数更新公式
Figure BDA0003669536670000082
中的vt替换为vt 2,改写后更新公式如下:
Figure BDA0003669536670000091
再取近似可得优化后的Adam算法的待优化参数更新公式。
将本发明实施例中面向硬件的Adam算法二阶矩估计优化方法对应的代码部署于硬件板卡上即可完成神经网络参数训练,节省约83%的LUT资源和50%的DSP资源,同时将速度提升约10倍。更好的实现硬件加速的目的。
通过上述实施例,获得了本步二阶矩估计开平方值,所述本步二阶矩估计开平方值用于输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步,所述更新步用于在硬件中训练神经网络获得本步更新步,图4为本发明实施例中本步二阶矩估计开平方值应用于Adam在神经网络整体训练过程中的流程图,包括:
步骤401,用上步待优化参数进行网络前向传播,获得本步输出值;
步骤402,将本步输出值带入目标函数,进入网络反向传播阶段,根据目标函数对待优化参数进行链式法则求导,获得导数值;
步骤403,将所得导数值输入Adam算法,得到本步待优化参数;
步骤404,判断是否达到迭代终止条件,若是,结束迭代,若否,转至步骤401。
本发明实施例还提出一种面向硬件的Adam算法二阶矩估计优化系统,为面向硬件的Adam算法二阶矩估计优化方法的硬件电路实现,图5为本发明实施例中面向硬件的Adam算法二阶矩估计优化系统的示意图一,包括控制模块501、比较模块502和二阶矩估计模块503;其中,
控制模块501,用于初始化二阶矩估计开平方值、二阶指数衰减因子、初始迭代步数和预设迭代步骤;重复执行以下步骤,直至达到设定迭代步数或满足收敛条件:
针对本步待优化参数对目标函数求导,获得本步梯度;
将二阶指数衰减因子、本步梯度和上步二阶矩估计开平方值输入至比较模块402,获得二阶距开平方和公式的较大值和较小值;
将所述较大值和较小值输入至二阶矩估计模块503,获得本步二阶矩估计开平方值,所述至二阶矩估计模块用于基于二阶距开平方和公式获得本步二阶矩估计开平方值,所述本步二阶矩估计开平方值用于输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步,所述更新步用于在硬件中训练神经网络获得本步更新步;
其中,所述二阶距开平方和公式的确定步骤如下:
将Adam算法的待优化参数更新公式中的本步二阶矩估计值用本步二阶矩估计开平方值代替;
将Adam算法中本步二阶矩估计值计算公式整理为第一临时值和第二临时值的平方和开根号形式的本步二阶矩估计值计算公式;
获得平方和开根号近似公式;
根据第一临时值和第二临时值,获得用于表示二阶距开平方和公式的较大值和较小值;
根据较大值、较小值、平方和开根号近似公式,确定二阶距开平方和公式。
图6为本发明实施例中比较模块的示意图,在一实施例中,比较模块包括:
第一乘法器601,用于对二阶指数衰减因子的平方根和上步二阶矩估计开平方值进行乘法计算,获得第一临时值;
第一移位寄存器602,用于根据二阶指数衰减因子确定的位数值,对本步更新的梯度右移操作,获得第二临时值;
比较器603,用于比较第一临时值和第二临时值,获得比较结果;
第一二路选择器604,用于根据比较结果,获得第一临时值和第二临时值中的较大值;
第二二路选择器605,用于根据比较结果,获得第一临时值和第二临时值中的较小值。
图7为本发明实施例中二阶矩估计模块的示意图,在一实施例中,二阶矩估计模块包括:
第二移位寄存器701,用于对较小值右移两位操作,获得第三临时值;
第三移位寄存器702,用于对较小值右移四位操作,获得第四临时值;
第四移位寄存器703,用于对较小值右移六位操作,获得第五临时值;
第一加法器704,用于对较大值与第三临时值进行加法计算,获得第六临时值;
第二加法器705,用于对第四临时值与第五临时值进行加法计算,获得第七临时值;
第三加法器706,用于对第七临时值与第六临时值进行加法计算,获得本步二阶矩估计开平方值。
基于图6和图7,图8为本发明实施例中计算本步二阶矩估计开平方值的相关模块关系图,根据该关系模块的实现,避免了平方和开方操作,将更新过程优化为最简的加法运算与移位运算,有效减少大量资源浪费,增大数据吞吐率,同时避免了平方加开方操作将较小的值误算为0值的情况。
图9为本发明实施例中面向硬件的Adam算法二阶矩估计优化系统的示意图二,在一实施例中,还包括待优化参数更新模块901,用于将初始学习率、一阶指数衰减因子、二阶指数衰减因子和常数、本步一阶矩估计值、本步二阶矩估计开平方值输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步;
控制模块还用于:
初始化一阶矩估计值、初始学习率、一阶指数衰减因子和常数;
根据一阶指数衰减因子、上步一阶矩估计值和本步梯度,计算本步一阶矩估计值;
将初始学习率、一阶指数衰减因子、二阶指数衰减因子和常数、本步一阶矩估计值、本步二阶矩估计开平方值输入至待优化参数更新模块,获得本步更新步。
综上所述,本发明实施例提出的方法及系统具有如下有益效果:
第一,提出了二阶距开平方和公式和平方和开根号近似公式,将原始Adam算法每一次迭代中二阶矩估计值的1次平方运算,1次开方运算,2次除法运算简化为硬件实现方便,不损失精度的加法和移位等运算。经FPGA开发板(Ultra96_V2)测试,单次开方运算占用5157个LUT(look up table)资源和675个触发器资源;单次除法运算占用227个LUT资源和9个DSP资源。优化后的算法中,单次加法运算只占用39个LUT资源,不需要DSP、触发器资源,单次移位运算几乎不消耗任何资源。经测试,对于一个Adam单元,本发明相较于原始Adam,LUT资源约下降83%,DSP资源下降50%。
第二,将二阶矩估计计算待优化参数的过程,替换连续平方和开方操作,避免了因硬件存储空间位宽有限导致的误赋0值情况。因Adam算法要沿着梯度下降的方向去寻找目标函数的最小值,该算法所要处理的梯度值总会达到相对较小的数值,经过一次开方运算会使数量级指数倍增,所需位宽成为原数值位宽的二倍,所以必须考虑数据超出硬件存储位宽,进而影响精度的问题,本发明方法不经过开方运算,理论上只要输入数据能正常通过就不会发生上述问题造成任何的精度损失。
第三,由于加法和移位操作延时相较于平方、开方和除法等运算更小,所以本发明方法相较于原始Adam算法在电路实现上可以提高约10倍的数据吞吐量,更好的满足神经网络硬件加速的需求。
第四,面向硬件的Adam算法二阶矩估计优化系统的硬件实现以FPGA为硬件加速平台,以HLS高层次综合为工具,对二阶矩估计优化后的Adam算法进行了硬件实现,相较于原版Adam算法,成数量级地节省了硬件资源,提高了70%以上的数据吞吐量,同时避免了精度的问题。需要强调的是,Adam算法作为神经网络参数优化的一种算法,一般必须和神经网络一起部署在FPGA上,原版Adam耗费单次迭代就会耗费2623个LUT资源,即使能够单独硬件实现,也很难找到资源充足的板卡去满足使用原版Adam算法的神经网络,所以对Adam算法进行改进以满足硬件部署的需要是迫切需要的。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1.一种面向硬件的Adam算法二阶矩估计优化方法,其特征在于,包括:
初始化二阶矩估计开平方值、二阶指数衰减因子、初始迭代步数和预设迭代步骤;
重复执行以下步骤,直至达到设定迭代步数或满足收敛条件:
针对本步待优化参数对目标函数求导,获得本步梯度;
根据二阶指数衰减因子、本步梯度的绝对值和上步二阶矩估计开平方值,获得二阶距开平方和公式的较大值和较小值;
将所述较大值和较小值输入至二阶距开平方和公式,获得本步二阶矩估计开平方值,所述本步二阶矩估计开平方值用于输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步,所述更新步用于在硬件中训练神经网络获得本步更新步;
其中,所述二阶距开平方和公式的确定步骤如下:
将Adam算法的待优化参数更新公式中的本步二阶矩估计值用本步二阶矩估计开平方值代替;
将Adam算法中本步二阶矩估计值计算公式整理为第一临时值和第二临时值的平方和开根号形式的本步二阶矩估计值计算公式;
获得平方和开根号近似公式;
根据第一临时值和第二临时值,获得用于表示二阶距开平方和公式的较大值和较小值;
根据较大值、较小值、平方和开根号近似公式,确定二阶距开平方和公式。
2.如权利要求1所述的方法,其特征在于,所述梯度计算公式为gt=▽θftt-1),其中,gt为本步梯度;θ为待优化参数;θt-1为本步待优化参数。
3.如权利要求1所述的方法,其特征在于,在获得本步梯度之后,还包括:
对本步梯度进行取绝对值操作。
4.如权利要求1所述的方法,其特征在于,根据二阶指数衰减因子、本步梯度的绝对值和上步二阶矩估计开平方值,获得二阶距开平方和公式的较大值和较小值,包括:
采用如下公式,根据二阶指数衰减因子和上步二阶矩估计开平方值,计算第一临时值:
Figure FDA0003669536660000011
其中,β2为二阶指数衰减因子,vrt-1为上步二阶矩估计开平方值;
采用如下公式,根据二阶指数衰减因子和本步梯度,获得第二临时值:
Figure FDA0003669536660000021
gt为本步梯度;
比较第一临时值和第二临时值,将较大值作为二阶距开平方和公式的较大值,将较小值作为二阶距开平方和公式的较小值。
5.如权利要求1所述的方法,其特征在于,获得平方和开根号近似公式,包括:
预设
Figure FDA0003669536660000022
其中,a=vrt cosθ,b=vrt sinθ,
Figure FDA0003669536660000023
预设a≥b,其中,sinθ≥cosθ,
Figure FDA0003669536660000024
预设
Figure FDA0003669536660000025
其中,
Figure FDA0003669536660000026
整理第一公式
Figure FDA0003669536660000027
其中第一公式的值域为
Figure FDA0003669536660000028
Figure FDA0003669536660000029
Figure FDA00036695366600000210
时,第一公式的值为0,确定平方和开根号近似公式为
Figure FDA00036695366600000211
6.如权利要求5所述的方法,其特征在于,所述二阶距开平方和公式的确定步骤,包括:
将Adam算法中本步二阶矩估计值计算公式中的本步二阶矩估计值vt表示为本步二阶矩估计开平方值vrt
将Adam算法中本步二阶矩估计值计算公式
Figure FDA00036695366600000212
整理为平方和开根号形式的本步二阶矩估计值计算公式:
Figure FDA00036695366600000213
其中,
Figure FDA00036695366600000214
为第一临时值,
Figure FDA00036695366600000215
为第二临时值;
根据第一临时值和第二临时值,获得用于表示二阶距开平方和公式的较大值
Figure FDA00036695366600000216
和较小值
Figure FDA00036695366600000217
根据较大值、较小值、平方和开根号近似公式
Figure FDA00036695366600000218
确定二阶距开平方和公式为
Figure FDA00036695366600000219
7.如权利要求6所述的方法,其特征在于,还包括:
将二阶距开平方和公式中的除法运算改写为针对除法运算中的被除数的前三个1/2的偶数次方求和形式;
所述二阶距开平方和公式如下:
vrt≈a+(b>>2)+(b>>4)+(b>>6)
其中,vrt为本步二阶矩估计开平方值,a为较大值,b为较小值。
8.如权利要求1所述的方法,其特征在于,还包括:
初始化一阶矩估计值、初始学习率、一阶指数衰减因子和常数;
根据一阶指数衰减因子、上步一阶矩估计值和本步梯度,计算本步一阶矩估计值;
将初始学习率、一阶指数衰减因子、二阶指数衰减因子和常数、本步一阶矩估计值、本步二阶矩估计开平方值输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步。
9.如权利要求1所述的方法,其特征在于,所述优化后的Adam算法的待优化参数更新公式如下:
Figure FDA0003669536660000031
其中,θt为本步待优化参数,θt-1为上步待优化参数,Ir为初始学习率,mt为本步一阶矩估计值,vrt为本步二阶矩估计开平方值,ε为常数,t为迭代次数。
10.一种面向硬件的Adam算法二阶矩估计优化系统,其特征在于,包括控制模块、比较模块和二阶矩估计模块;其中,
控制模块,用于初始化二阶矩估计开平方值、二阶指数衰减因子、初始迭代步数和预设迭代步骤;重复执行以下步骤,直至达到设定迭代步数或满足收敛条件:
针对本步待优化参数对目标函数求导,获得本步梯度;
将二阶指数衰减因子、本步梯度和上步二阶矩估计开平方值输入至比较模块,获得二阶距开平方和公式的较大值和较小值;
将所述较大值和较小值输入至二阶矩估计模块,获得本步二阶矩估计开平方值,所述二阶矩估计模块用于基于二阶距开平方和公式获得本步二阶矩估计开平方值,所述本步二阶矩估计开平方值用于输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步,所述更新步用于在硬件中训练神经网络获得本步更新步;
其中,所述二阶距开平方和公式的确定步骤如下:
将Adam算法的待优化参数更新公式中的本步二阶矩估计值用本步二阶矩估计开平方值代替;
将Adam算法中本步二阶矩估计值计算公式整理为第一临时值和第二临时值的平方和开根号形式的本步二阶矩估计值计算公式;
获得平方和开根号近似公式;
根据第一临时值和第二临时值,获得用于表示二阶距开平方和公式的较大值和较小值;
根据较大值、较小值、平方和开根号近似公式,确定二阶距开平方和公式。
11.如权利要求10所述的系统,其特征在于,比较模块包括:
第一乘法器,用于对二阶指数衰减因子的平方根和上步二阶矩估计开平方值进行乘法计算,获得第一临时值;
第一移位寄存器,用于根据二阶指数衰减因子确定的位数值,对本步更新的梯度右移操作,获得第二临时值;
比较器,用于比较第一临时值和第二临时值,获得比较结果;
第一二路选择器,用于根据比较结果,获得第一临时值和第二临时值中的较大值;
第二二路选择器,用于根据比较结果,获得第一临时值和第二临时值中的较小值。
12.如权利要求10所述的系统,其特征在于,二阶矩估计模块包括:
第二移位寄存器,用于对较小值右移两位操作,获得第三临时值;
第三移位寄存器,用于对较小值右移四位操作,获得第四临时值;
第四移位寄存器,用于对较小值右移六位操作,获得第五临时值;
第一加法器,用于对较大值与第三临时值进行加法计算,获得第六临时值;
第二加法器,用于对第四临时值与第五临时值进行加法计算,获得第七临时值;
第三加法器,用于对第七临时值与第六临时值进行加法计算,获得本步二阶矩估计开平方值。
13.如权利要求10所述的系统,其特征在于,还包括待优化参数更新模块,用于将初始学习率、一阶指数衰减因子、二阶指数衰减因子和常数、本步一阶矩估计值、本步二阶矩估计开平方值输入至优化后的Adam算法的待优化参数更新公式,获得本步更新步;
控制模块还用于:
初始化一阶矩估计值、初始学习率、一阶指数衰减因子和常数;
根据一阶指数衰减因子、上步一阶矩估计值和本步梯度,计算本步一阶矩估计值;
将初始学习率、一阶指数衰减因子、二阶指数衰减因子和常数、本步一阶矩估计值、本步二阶矩估计开平方值输入至待优化参数更新模块,获得本步更新步。
CN202210599828.8A 2022-05-30 2022-05-30 面向硬件的Adam算法二阶矩估计优化方法及系统 Pending CN115099397A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210599828.8A CN115099397A (zh) 2022-05-30 2022-05-30 面向硬件的Adam算法二阶矩估计优化方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210599828.8A CN115099397A (zh) 2022-05-30 2022-05-30 面向硬件的Adam算法二阶矩估计优化方法及系统

Publications (1)

Publication Number Publication Date
CN115099397A true CN115099397A (zh) 2022-09-23

Family

ID=83288913

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210599828.8A Pending CN115099397A (zh) 2022-05-30 2022-05-30 面向硬件的Adam算法二阶矩估计优化方法及系统

Country Status (1)

Country Link
CN (1) CN115099397A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024188311A1 (zh) * 2023-03-14 2024-09-19 上海壁仞科技股份有限公司 对神经网络进行训练的方法及更新神经网络参数的优化器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024188311A1 (zh) * 2023-03-14 2024-09-19 上海壁仞科技股份有限公司 对神经网络进行训练的方法及更新神经网络参数的优化器

Similar Documents

Publication Publication Date Title
Friedman et al. An algorithm for finding nearest neighbors
US20230144556A1 (en) Fpga implementation device and method for fblms algorithm based on block floating point
US20200401873A1 (en) Hardware architecture and processing method for neural network activation function
Real et al. Two algorithms for fast approximate subspace tracking
CN111612147A (zh) 深度卷积网络的量化方法
US10534576B2 (en) Optimization apparatus and control method thereof
CN110852434B (zh) 基于低精度浮点数的cnn量化方法、前向计算方法及硬件装置
CN111758104B (zh) 适合于硬件实现的神经网络参数优化方法、神经网络计算方法和装置
CN115099397A (zh) 面向硬件的Adam算法二阶矩估计优化方法及系统
CN113741858B (zh) 存内乘加计算方法、装置、芯片和计算设备
CN112434801A (zh) 一种按照比特精度进行权重拆分的卷积运算加速方法
US20120030203A1 (en) Method for establishing multiple look-up tables and data acquisition method using multiple look-up tables
CN111383157A (zh) 图像处理方法、装置、车载运算平台、电子设备及系统
US8812569B2 (en) Digital filter implementation for exploiting statistical properties of signal and coefficients
US20040024801A1 (en) System and method for computing histograms with exponentially-spaced bins
CN111091183A (zh) 一种神经网络加速系统和方法
EP0474222A2 (en) Learning machine with a hierarchical structure without mutual connections within levels thereof
CN112886947A (zh) 一种变步长鲁棒仿射投影自适应滤波器
CN113778378B (zh) 一种求解复数n次方根的装置和方法
CN115860062A (zh) 一种适合fpga的神经网络量化方法及装置
CN116562347A (zh) 实现softmax函数计算的硬件系统及方法
CN115965062A (zh) 一种bert中层归一化非线性函数的fpga加速方法
CN115034373A (zh) Adam算法加速系统及方法
CN108174114B (zh) 熵值计算装置及熵值计算方法
CN111353118B (zh) 开平方的方法及相应的用于开平方的电路

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination