基础算法篇(六),基于AC框架的PPO算法

我们上一章给大家介绍了经典的策略梯度(PG)算法,但这个经典算法存在两个问题:

  • 一是需要完整序列

我们根据强化学习的目标“最大化总收益”而得到的公式中包含 R ( τ ) = ∑ t = 1 T r t R\left(\tau\right)=\sum_{t=1}^Tr_t R(τ)=t=1Trt,就算我们对其进行添加基线、改变收益计算方式等,都还是没有脱离从 t t t时刻起,需要后续所有收益这一问题,这一方法类似于我们在“基础算法篇(二),蒙特卡洛方法解决Model-Free强化学习问题”讲的方法,而这在很多情况下是很难实现的。

  • 二是一次采集的数据,不能够重复使用,学习效率极低还难以收敛

为啥不能重复使用,可以看看以下这个例子【本例子节选自“如何直观理解PPO算法?[理论篇]”,感兴趣的可以看原文,在这里对原作者表示感谢。】:
在这里插入图片描述大家可以看上图,如果P是原有策略,B是新策略,那么如果按照B采样的数据进行更新,动作 a 1 a1 a1就只会被更新一次,而 a 2 a2 a2被更新9次。这样最终P中 a 2 a2 a2的概率可能就会大于 a 1 a1 a1,但实际 a 1 a1 a1的TD-error明显高于 a 2 a2 a2,我们期望的是 a 1 a1 a1概率大于 a 2 a2 a2。这样,算法只会在错误的道路上越走越远。
针对以上两个方面的问题,分别提出了Actor-Critic框架和PPO算法,下面我们详细介绍这两部分内容。

一、Actor-Critic框架

针对前面提到的传统PG算法中需要完整序列的问题。让我们首先回忆一下,前面对于蒙特卡洛(MC)方法带来的问题,我们是如何解决的?
我们在基础算法篇(三)中介绍了时序差分方法,即:

  • r t + 1 k + γ v ( s t + 1 k − 1 ) r_{t+1}^k+\gamma v\left(s_{t+1}^{k-1}\right) rt+1k+γv(st+1k1)代替 G t k G_t^k Gtk

这样就避免了蒙特卡洛算法中必须要全过程累积回报的缺点,使得能够在过程中利用两步信息就学习。
那么,针对上一章介绍的策略梯度方法:
在这里插入图片描述

这里的 R ( τ ) R\left(\tau\right) R(τ)我们就可以用时序差分中的TD目标值 r t + 1 k + γ v ( s t + 1 k − 1 ) r_{t+1}^k+\gamma v\left(s_{t+1}^{k-1}\right) rt+1k+γv(st+1k1)来代替。那么就不需要去求全过程的累积和,而是需要求出 v ( s t + 1 k − 1 ) v\left(s_{t+1}^{k-1}\right) v(st+1k1)即可。
大家再回忆一下我们在“基础算法篇(四),值函数逼近方法解决强化学习问题”中介绍的,用深度神经网络来拟合值函数。因此,这里我们也可以参考DQN等做法,用一个深度神经网络来进行值函数的逼近。而这个网络就被成为“Critic”或“价值网络”。其实也就是通过这个红框内的改变,将原有的Value-Based方法和Policy-Based方法结合到了一起。而针对AC框架还有很多改进,包括A2C,A3C等,我们在后面再详细介绍。
价值网络在整个学习训练过程中,也是一直被Update的,其更新方法与基础算法篇(四)中介绍的一样,在这里就不再赘述。
其实,我们再回顾一下策略梯度本身的目标,就是最大化收益。那么前面的 R ( τ ) R\left(\tau\right) R(τ)除了使用TD目标值以外,还可以采用如下多种形式:

  • 状态价值或状态行为值 v π ( s ) v_\pi\left(s\right) vπ(s) q π ( s , a ) q_\pi\left(s,a\right) qπ(s,a)
  • 优势函数 q π ( s , a ) − v π ( s ) q_\pi\left(s,a\right)-v_\pi\left(s\right) qπ(s,a)vπ(s)
  • 时序差分值 r t + 1 k + γ v ( s t + 1 k − 1 ) − v ( s t k − 1 ) r_{t+1}^k+\gamma v\left(s_{t+1}^{k-1}\right)-v\left(s_t^{k-1}\right) rt+1k+γv(st+1k1)v
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值