强化学习-DDPG
DDPG发展自DPG,同样是“确定性策略梯度方法”,相较于DPG,其变化是:DPG等前序的算法只是把“函数拟合”的思想引入强化学习,其实际流程还是相当于自己写了个底层(写了详细的参数更新流程),并没有引入深度学习(神经网络)相关的东西,而DDPG则与深度学习(神经网络)的方法更彻底的结合,直接把深度学习的工具拿来用 。
除此之外,还有DDPG还把双网络、经验回放引入了算法中。
一、Loss Function
传统的Loss Function是用Y与Y_targrt来列写的,使Y可以接近Y_targrt,即Y接近真值。
典型的Loss Function有:L1,MES(均方误差),CrossEntropy。
1、Critic的Loss Function
Critic更新目标是使网络可以尽可能准确地估计真实的q值,即网络输出的q值与真实q值越靠近越好。
Critic输入是当前状态与在该状态下采取的动作,输出是该状态动作对的q值。
DDPG采用双网络技巧,故Critic网络分为Q与Q_traget两个网络。
Q_traget网络的输出与环境反馈数据共同计算后得到q_target(Y_target):
Q网络的输出就是q(Y):
由此,采用MESLoss可以定义用于Critic网络更新的Loss Function:
具体到实现中的梯度下降式子是:
2、Actor的Loss Function
Actor更新目标是使网络可以在当前状态下尽可能选择选择最优的动作,而当前状态下不同动作的优劣是由Critic输出的q值评价的,所以要以这个q值作为更新的依据,我们期望Actor输出的a在Critic的评价下q值越大越好。
那么如何定义loss呢?因为并没有一个参考值可以构建类似Critic那样的Loss Function。
这里要明确的是q值本身就是一个优化目标:
q越大越好,一般而言优化q值采用的是梯度上升的方式:
一般的神经网络采用梯度下降的算法更新参数,为了适应深度学习工具,可以把q的负值定义为Loss:
二、不严谨的流程
对于一个episode的每个step:
有一个探索性很强的策略(可以是当前策略
+噪声),进行探索,获取经验:
Critic:
计算q_target:
计算q:
计算Loss:
梯度下降
Actor:
计算a:
计算a对应的q值(-Loss):
梯度下降
达到一定轮次,更新目标网络的参数: