算法流程
1.主要的架构可以分解成以下几部分进行理解:
*首先DDPG的特点是actor虽然是PG的架构,但是actor输出的动作值并不是一个概率分布,而是一个确定性的连续动作选择(可以适用连续动作情况),其网络就是给予状态作为输入,然后网络会给予一个动作作为输出,表示在这个状态情况下,最该采取的动作值, 然后对其这个online网络的更新是根据critic网络提供更新依据,也就是下面的式子,会利用到这个s和a得到critic评价出的Q值,然后进行梯度的改变从而告诉网络下次进行选择时该选择怎么采取动作值。【也就是其优化训练online网络时,需要根据critic提供的对这一动作的Q值评估来进行梯度调整】Q是critic提取的,Q值的梯度其实也是critic网络计算提供的。
在actor网络的 target网络部分则完全是一段 时间的软更新的情况,也就是
过一段时间就进行参数的保存(这个target网络的主要作用就是用于
critic网络的target现实部分进行下一行为的选取,也就是会根据这里现实网络的情况来进行行为的选取)
其实这里也有个疑问,actor网络的输入是状态,输出是唯一的动作,那么critic网络呢,是输入状态和行为、输出Q值吗? 还是说输入状态,输入多个行为的Q值,然后从中再选取?是两种方式中的那个呢.....【经过搜索发现,这里critic网络应该是第一种形式,输入的是 状态和动作,输出的是这个动作对应的Q值】
*在critic部分,也是包括两个部分,分别为 online和target部分,
online部分其实很像之前的DDQN方式,也就是网络会根据输入行为和状态得到Q值输出, 然后会根据利用target网络提供的真实值计算TD-error进行网络的训练,并在一段时间后进行target网络的更新。
*第三部分就是 行为探索和记忆更新。 行为探索对应于1和2两部分,前期倾向于一种有噪声的随机探索,这样能够增加其探索能力,每次行为探索都会产生状态的转移和立即奖励。
2.记忆的利用对应于3和4两部分,也就是actor网络进行探索的同时也会将一些直观的环境反馈情况等进行保存(前期偏向随机,后期不断变得更有智能),之后再网络训练时候 是不断进行记忆的采样进行两部分网络训练的,但是切记应该是一种记忆碎片式的记忆方式,并不需要两个网路使用的记忆有强的关联性,
只不过更新时,网络之间会有一些相互之间的利用罢了。
算法结构
符号含义
1:按一定的有噪声的行为策略β选择行为。
2:环境根据选取的动作给予 奖励和新的状态反映。
3:类似于DDQN那种,将有智能或者没智能行为记忆进行存储。
4:从记忆库中选取批次以及进行两个网络不同形式和利用的训练。
5:在critic中,Q现实网络根据下一状态和下一个该选取的动作作为网络输入,r+Q(next)计算获取Q现实值。
6:critic网络通过计算td-error梯度后进行网络的更新。
7:actor网络的
online网络进行更新时,针对于自己现在的行为,需要进行梯度的计算调整,使得让网络在相同的状态下倾向于生成更好的动作选择, 所以要依赖于这个action的Q值,Q值则需要critic网络计算得到。
8:是优化器计算的梯度结果进行网络参数的更新。
9:两种网络形式之间的软更新。