对强化学习的思考与总结-PPO-advantage

advantage优势值,是指该状态写做出该动作相比于其他动作而言有多好。在之前做强化学习的时候用了ppo2算法,由于是将多个智能体同时并行计算,需要对网上单个智能体的算法更新部分做一个改动,因此在之前自己写的算法中出现了错误:

在执行到需要更新的时候,计算优势函数使用了每个回合每一步的动作与奖励值,然后计算了总的Rt与At(advantage),然后计算损失函数的时候一直用的是这个Rt与At,但是实际上是计算智能体每一步的Rt与At,存成数组,然后在使用batch数据计算损失函数的时候,那个状态就要对应该状态智能体所有的At与Rt

在我的代码里面,At的shape应当是(peo_num, epoch_step),一个二维矩阵

别人的batch是指一个智能体在几轮运行结束之后从数据中取数据的batch,我的batch是指在每一轮数据中取的batch,其实差不多,都代表了某几次行动,只是在我的项目里,取得数据是peo_num个智能体的某几(peo_num,batch_size)

因此在运行的时候,actor_loss应该是由peo_num个actor_loss求mean而来(就是二维矩阵求mean),因此应当先按批处理 得到每一个智能体的actor_loss,再进行求平均

advantage标准化

我看了别人的代码说明,由于他们的代码在计算advantage的时候存在跨episode取值的问题,因此需要对advantage标准化,但是我存储数据的时候是按照回合来存储的,因此计算的时候也是安按照batch取回合,然后遍历回合计算回合里面每一步的At,因此我不存在需要标准化的问题。

advantage中的目标值与实际值

计算advantage的公式为:目标值函数V_target - 实际值函数V_real,其中V_real就是critic网络的输出值,V_target为 r +gamma * critic(next_state),观察advantage计算公式就可以知道advantage就是一个TD-error.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值