当前位置: 首页 > article >正文

强化学习-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_{target}=r_{t+1}+\gamma Q_{target}\left ( s_{t+1},\mu_{target} \left ( s_{t+1} \right ) \right )

Q网络的输出就是q(Y):

q=Q\left ( s_{t},a_{t} \right )

由此,采用MESLoss可以定义用于Critic网络更新的Loss Function:

Loss =\left ( q-q_{target }\right )^{2}

具体到实现中的梯度下降式子是:

w_{t+1}=w_{t}+\alpha _{w}\bigtriangledown _{w}Loss

2、Actor的Loss Function

Actor更新目标是使网络可以在当前状态下尽可能选择选择最优的动作,而当前状态下不同动作的优劣是由Critic输出的q值评价的,所以要以这个q值作为更新的依据,我们期望Actor输出的a在Critic的评价下q值越大越好。

那么如何定义loss呢?因为并没有一个参考值可以构建类似Critic那样的Loss Function。

这里要明确的是q值本身就是一个优化目标:

q=Q\left ( s_{t},\mu \left ( s_{t} \right ) \right )

q越大越好,一般而言优化q值采用的是梯度上升的方式:

\theta _{t+1}=\theta _{t}+\alpha _{\theta }\left ( \bigtriangledown _{a }Q\left ( s_{t},a \right ) \right )|_{a=\mu \left ( s_{t} \right )}\bigtriangledown _{\theta }\mu \left ( s_{t} \right )

一般的神经网络采用梯度下降的算法更新参数,为了适应深度学习工具,可以把q的负值定义为Loss:

Loss = -Q\left ( s_{t},\mu \left ( s_{t} \right ) \right )

二、不严谨的流程

对于一个episode的每个step:

        有一个探索性很强的策略\pi _{\beta }(可以是当前策略\mu+噪声),进行探索,获取经验:

\left \{ s_{t},a_{t},r_{t+1},s_{t+1} \right \}

        Critic:

                计算q_target:

q_{target}=r_{t+1}+\gamma Q_{target}\left ( s_{t+1},\mu_{target} \left ( s_{t+1} \right ) \right )

                计算q:

q=Q\left ( s_{t},a_{t} \right )

                计算Loss:

Loss =\left ( q-q_{target }\right )^{2}

                梯度下降

        Actor:

                计算a:

a_{t+1}=\mu \left ( s_{t} \right )

                计算a对应的q值(-Loss):

Loss = -q\left ( s_{t},a_{t} \right )=-Q\left ( s_{t},a_{t+1} \right )

                梯度下降

        达到一定轮次,更新目标网络的参数:

w\rightarrow w'

\theta \rightarrow \theta '


http://www.kler.cn/a/547033.html

相关文章:

  • 希尔排序(C#)
  • MySQL 支持的事务隔离级别
  • 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,其各自的优势
  • Jetpack Compose初体验
  • 解决Did not find dashscope_api_key问题——jupyter设置环境变量
  • C++学习 mac上VScode运行C++
  • mars3d接入到uniapp的时候ios上所有地图的瓦片都无法加载解决方案
  • 通过服务器的 BMC(基板管理控制器)安装操作系统
  • AI时代前端开发:创造力的新引擎?
  • 每日Attention学习23——KAN-Block
  • PHP场地预定小程序
  • 清理docker/podman的存储空间
  • 智能光子学——机器学习赋能的光子学器件与系统:从创新设计到前沿应用
  • 【IC】AI处理器核心--第二部分 用于处理 DNN 的硬件设计
  • 初阶c语言(练习题,猜随机数,关机程序)
  • java后端开发day15--字符串(一)
  • 求助文心一言帮我用antv x6开发一个直线审批流程设计页面Vue2.0
  • 数据结构:哈夫曼树
  • Ubuntu 上安装 MySQL 8.0.22
  • Redis常用的五种数据结构详解