一、简介
DDPG在DQN的基础上即经验回放和双网络的方法来改进Actor-Critic难收敛的问题,这个算法就是是深度确定性策略梯度(Deep Deterministic Policy Gradient,以下简称DDPG)
DQN是一种基于值的学习方式,要求给定离散动作集,但考虑到一些控制系统一般为多组的连续动作,基于值的学习方式容易陷入局部最优且易导致“维数灾难”,而DDPG基于策略本身更新Q值,可以处理连续动作空间。因此基于DDPG做一下控制算法研究。
随机策略,在相同的策略,在同一个状态处,采用的动作是基于一个概率分布的,即是不确定的。
确定性策略,确定性策略虽然在同一个状态处,采用的动作概率不同,但采取的是最大概率的那一个。即作为确定性策略,相同的策略,在同一个状态处,动作是唯一确定的,即策略变成:
动作为:
二、原理
DDPG继承了DQN经验回放与目标网络的优点,且具有四个网络,即Critic当前网络、Critic目标网络和Actor的当前网络、Actor目标网络,Actor策略网络与DQN相似,但具有确定性策略,因此不需要ϵ−贪婪法这样的选择方法。而对经验回放池中采样的下一状态S′使用贪婪法选择动作A′,这部分工作由于用来估计目标Q值,因此可以放到Actor目标网络完成。
Actor策略网络基于经验回放池提供的S′,A′计算目标Q值,Critic策略网络用于评估。而Critic目标网络计算出目标Q值一部分后,Critic当前网络会计算目标Q值,并进行网络参数的更新,并定期将网络参数复制到Critic目标网络。
(截一张大佬的图):
有了上面的思路,我们总结下DDPG 4个网络的功能定位:
-
Actor当前网络:负责策略网络参数θ的迭代更新,负责根据当前状态S选择当前动作A,用于和环境交互生成S′,R。
-
Actor目标网络:负责根据经验回放池中采样的下一状态S′选择最优下一动作A′。网络参数θ′定期从θ复制。
-
Critic当前网络:负责价值网络参数w的迭代更新,负责计算负责计算当前Q值Q(S,A,w)。目标Q值yi=R+γQ′(S′,A′,w′)
-
Critic目标网络:负责计算目标Q值中的Q′(S′,A′,w′)部分。网络参数w′定期从w复制。
DDPG除了这4个网络结构,还用到了经验回放,这部分用于计算目标Q值,和DQN没有什么区别,这里就不展开了。
DDPG对于目标网络-当前网络直接采用了软更新,即每次参数只更新一点点,即:
其中τ是更新系数,一般取的比较小,比如0.1或者0.01这样的值。
三、损失函数
Critic当前网络,其损失函数和DQN是类似的,都是均方误差,即:
而对于 Actor当前网络,其损失函数就和之前讲的PG,A3C不同了,这里由于是确定性策略,原论文定义的损失梯度是:
假如对同一个状态,我们输出了两个不同的动作a1和a2,从Critic当前网络得到了两个反馈的Q值,分别是Q1,Q2,假设Q1>Q2,即采取动作1可以得到更多的奖励,那么策略梯度的思想是什么呢,就是增加a1的概率,降低a2的概率,也就是说,Actor想要尽可能的得到更大的Q值。所以我们的Actor的损失可以简单的理解为得到的反馈Q值越大损失越小,得到的反馈Q值越小损失越大,因此只要对状态估计网络返回的Q值取个负号即可,即: