【技术实现步骤摘要】
一种基于FPGA的A3C深度强化学习算法加速器
[0001]本专利技术涉及人工智能的深度强化学习
,特别是一种基于FPGA的A3C深度强化学习算法加速器。
技术介绍
[0002]A3C(Asynchronous Advantage Actor
‑
Critic,A3C)算法是一种典型的深度强化学习(Deep Reinforcement Learning,DRL)算法,通过采用分布式学习与异步训练的方式,能够很好的打破训练数据的相关性,提高智能体的训练效率和训练结果。A3C算法构建一个中心智能体(Central Agent)作为分布式智能体模板,并将该模板复制N份后构成N个本地智能体(Local Agent),分别放入N个独立的环境中进行交互,而每个智能体都可视作一个独立的Actor
‑
Critic(AC)智能体,在分布式框架下,每个智能体都能在互不干扰的情况下按照AC算法流程与环境进行交互获得经验值,并完成神经网络参数梯度值计算。由于分布式异步学习框架的引入,A3C算法的算法复杂度和计算量较大,因此如何在现有的硬件平台上实现高性能且低功耗的A3C算法具有一定的研究意义和实际价值。
[0003]A3C算法的硬件实现平台主要分为四种:通用处理器CPU、图形处理器GPU、专用集成电路ASIC以及现场可编程逻辑门阵列FPGA。CPU受限于串行的执行模式和有限的数据带宽,在功耗和延时两个方面都无法满足A3C算法运算的需求,因此目前A3C算法的硬件加速一般基于GPU、ASIC和FP ...
【技术保护点】
【技术特征摘要】
1.一种基于FPGA的A3C深度强化学习算法加速器,包括用于提供交互环境的上位机和用于计算加速的FPGA加速器,其特征在于,FPGA加速器包括存储模块、前向计算模块、反向计算模块、反向输入计算模块、梯度计算模块和RMSProp参数更新模块,其中,前向计算模块包括N个并行计算的FPE模块,FPE模块包括第一矩阵计算单元、ReLU激活单元和Softmax激活单元;其中,计算共享层时:第一矩阵计算单元,用于从存储模块中读取输入特征图x和网络参数θ、对x和网络参数θ进行矩阵乘法运算后输出运算结果A至ReLU激活单元和存储模块;ReLU激活单元,用于对第一矩阵计算单元输出的运算结果A进行激活运算后输出特征图y至存储模块缓存;计算输出层时:第一矩阵计算单元,用于从存储模块中读取y和网络参数θ,对y和网络参数θ进行线性相乘求和,得出一个Critic网络输出值v输出至存储模块;Softmax激活单元,用于对并行读入的共享层的计算结果进行处理,共享层的计算结果指y,得到一组Actor网络输出值π并将其输出至存储模块;反向输入计算模块,用于根据存储模块中的A3C智能体网络输出层计算结果,计算反向输入特征图x
’
并将其输出至存储模块,A3C智能体网络输出层计算结果为Actor网络输出值π和Critic网络输出值v,x
’
包括Actor网络反向输入图y
’
π
和Critic网络的反向输入图y
’
v
;反向计算模块包括N个并行计算的BPE模块,其中,BPE模块,用于对正向输入节点数据X、反向输入特征图x
’
和网络参数θ进行处理,得到反向输出特征图y
’
并将其输出至存储模块;其中,正向输入节点数据X指未经Relu激活操作的第一矩阵计算单元输出的运算结果A;梯度计算模块包括N个并行计算的GPE模块,其中,GPE模块,从存储模块中读取正向输入节点数据X和反向输入节点数据X
’
,X
’
指反向输入特征图x
’
或反向输出特征图y
’
,GPE模块对X和X
’
进行处理,输出一组网络参数梯度值dθ至RMSProp参数更新模块和存储模块;RMSProp参数更新模块包括梯度聚合单元和参数更新单元,其中,梯度聚合单元,用于根据从存储模块中读取的历史的梯度值、对dθ聚合计算,聚合后的梯度值输出至参数更新单元;参数更新单元,用于根据聚合后的梯度值,对从存储模块中读取的历史网络参数进行更新计算,得到新的网络参数并将其输出至存储模块。2.根据权利要求1所述的一种基于FPGA的A3C深度强化学习算法加速器,其特征在于,第一矩阵计算单元包括乘法器和加法器,ReLU激活单元包括0值比较器,Softmax激活单元包括指数运算器、除法器和加法器。3.根据权利要求1所述的一种基于FPGA的A3C深度强化学习算法加速器,其特征在于,前向计算模块的计算过程具体如下:在计算共享层时,使用第一矩阵计算单元和ReLU计算单元,此时前向计算模块的计算过程包括以下步骤:步骤11、从存储模块中读取输入特征图x和网络参数θ到第一矩阵计算单元;
步骤12、将读入的输入特征图x和网络参数θ送入第一矩阵计算单元的乘法
‑
加法树结构中,x和θ将在相乘求和后与偏置相加;步骤13、将第一矩阵计算单元输出结果作为输入数据送入ReLU激活单元,将输入数据与0进行比较,当输入数据小于0时,输出为0;当输入数据大于等于0时,输出数据并保持输入数据的大小不变,并将输出数据缓存至存储模块中,经过预设的时钟周期,完成所有输出的计算;在计算输出层时,使用第一矩阵计算单元和Softmax激活单元,此时前向计算模块的计算过程包括以下步骤:步骤21、从存储模块中读取y和网络参数θ到第一矩阵计算单元,读取y至Softmax激活单元;步骤22、第一矩阵计算单元的乘法
‑
加法树结构通过乘加方式,完成y与网络参数θ的线性相乘求和,得出一个Critic网络输出值v;步骤23、Softmax激活单元以并行读入的共享层的计算结果作为输入数据,将输入数据转化为串行排列,得到串行序列,共享层的计算结果指y;步骤24、将步骤23得到的串行序列送入指数运算器获得指数输出,然后通过累加器和除法器求出一组Actor网络输出π。4.根据权利要求1所述的一种基于FPGA的A3C深度强化学习算法加速器,其特征在于,反向输入计算模块包括乘法器、加法器和选择器;反向输入计算模块的计算过程包括以下步骤:在计算Actor网络反向输入图时,此时反向输入计算模块的计算过程包括以下步骤:步骤31、从存储模块中读取l个Actor网络层的输出结果π到反向输入计算模块中,π记为z1~z
l
,z
i
为第i个Actor网络层的输出结果,z
j
为第j个Actor网络层的输出结果,1≤i≤l,1≤j≤l;步骤32、利用浮点数计算IP核对z1~z
l
进行取反、取对数、乘法和加法操作后得到1
‑
lnz
i
、
‑
z
i
z
j
与z
i
(1
‑
z
i
)结果;步骤33、将步骤32得到的1
‑
lnz
i
、
‑
z
i
z
j
与z
...
【专利技术属性】
技术研发人员:葛芬,张国辉,周芳,李梓瑜,叶剑涛,龚文强,王浩,吴淑宁,
申请(专利权)人:南京航空航天大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。