【强化学习】基于策略的深度强化学习

基于策略的深度强化学习

分类

基于值函数的RL
  • 学习值/动作-值函数逼近器,一种间接法,目标是找动作,但通过Q值来确定哪个动作带来的Q最大。
    V θ ( s ) ≈ V π ( s ) Q θ ( s , a ) ≈ Q π ( s , a ) V_\theta(s) \approx V^\pi(s) \\ Q_\theta(s,a) \approx Q^\pi(s,a) Vθ(s)Vπ(s)Qθ(s,a)Qπ(s,a)

  • 隐式的策略(贪婪策略等)


基于策略的RL

没有价值函数,学习一个策略逼近器 π θ ( s , a ) \pi_\theta(s,a) πθ(s,a)

基于Actor-Critic的RL

学习价值逼近器,也要学习策略逼近器


A3C A2C

回顾Actor-Critic

Actor-Critic包含两个部分

Actor演员, π θ ( a ∣ s ) \pi_\theta(a|s) πθ(as),它的作用是采取动作使Critic评论家满意的策略
J ( θ ) = E s ∼ p , π θ [ π θ ( a ∣ s ) Q Φ ( s , a ) ] ∂ J ( θ ) ∂ θ = E π θ [ ∂ log ⁡ π θ ( a ∣ s ) ∂ θ Q Φ ( s , a ) ] \begin{gathered} J(\theta)=\mathbb{E}_{s \sim p, \pi_\theta}\left[\pi_\theta(a \mid s) Q_{\Phi}(s, a)\right] \\ \frac{\partial J(\theta)}{\partial \theta}=\mathbb{E}_{\pi_\theta}\left[\frac{\partial \log \pi_\theta(a \mid s)}{\partial \theta} Q_{\Phi}(s, a)\right] \end{gathered} J(θ)=Esp,πθ[πθ(as)QΦ(s,a)]θJ(θ)=Eπθ[θlogπθ(as)QΦ(s,a)]
Critic评论家, Q Φ ( s , a ) Q_\Phi(s,a) QΦ(s,a),它的作用是学会准确估计演员策略所采取动作价值的值函数,使用TD Error进行更新。
Q Φ ( s , a ) ≃ r ( s , a ) + γ E s ′ ∼ p ( s ′ ∣ s , a ) , a ′ ∼ π θ ( a ′ ∣ s ′ ) [ Q Φ ( s ′ , a ′ ) ] Q_{\Phi}(s, a) \simeq r(s, a)+\gamma \mathbb{E}_{s^{\prime} \sim p\left(s^{\prime} \mid s, a\right), a^{\prime} \sim \pi_\theta\left(a^{\prime} \mid s^{\prime}\right)}\left[Q_{\Phi}\left(s^{\prime}, a^{\prime}\right)\right] QΦ(s,a)r(s,a)+γEsp(ss,a),aπθ(as)[QΦ(s,a)]

∇ θ J ( θ ) = E π θ [ ∇ θ log ⁡ π θ ( s , a ) G t ] R E I N F O R C E = E π θ [ ∇ θ log ⁡ π θ ( s , a ) Q w ( s , a ) ] Q A c t o r − C r i t i c = E π θ [ ∇ θ log ⁡ π θ ( s , a ) A w ( s , a ) ] 优势 A c t o r − C r i t i c = E π θ [ ∇ θ log ⁡ π θ ( s , a ) δ ] T D A c t o r − C r i t i c = E π θ [ ∇ θ log ⁡ π θ ( s , a ) δ e ] T D ( λ ) A c t o r − C r i t i c \begin{aligned} \nabla_\theta J(\theta) & =\mathbb{E}_{\pi_\theta}\left[\nabla_\theta \log \pi_\theta(s, a) G_t\right] \quad REINFORCE \\ & =\mathbb{E}_{\pi_\theta}\left[\nabla_\theta \log \pi_\theta(s, a) Q_{\mathrm{w}}(s, a)\right] \quad Q Actor-Critic\\ & =\mathbb{E}_{\pi_\theta}\left[\nabla_\theta \log \pi_\theta(s, a) A_{\mathbf{w}}(s, a)\right] \quad 优势Actor-Critic\\ & =\mathbb{E}_{\pi_\theta}\left[\nabla_\theta \log \pi_\theta(s, a) \delta\right] \quad TD Actor-Critic\\ & =\mathbb{E}_{\pi_\theta}\left[\nabla_\theta \log \pi_\theta(s, a) \delta e\right] \quad TD(\lambda) Actor-Critic \end{aligned} θJ(θ)=Eπθ[θlogπθ(s,a)Gt]REINFORCE=Eπθ[θlogπθ(s,a)Qw(s,a)]QActorCritic=Eπθ[θlogπθ(s,a)Aw(s,a)]优势ActorCritic=Eπθ[θlogπθ(s,a)δ]TDActorCritic=Eπθ[θlogπθ(s,a)δe]TD(λ)ActorCritic


A3C

如何将基于策略的RL方法和深度神经网络有效地结合在一起?

DQN使用的是经验回放技术,来减少数据之间的相关性,因为每个样本可能是不同策略所产生的,但是标准的策略梯度方法是On-Policy的,需要根据当前的策略来采样数据。

所以基于策略梯度的方法是无法采用经验回放的,只能采用并行训练的方法来减少数据相关性

image-20230830151546460

异步并行是每个线程并行收集 ( s i , a i , r i , s i ′ ) {(s_i,a_i,r_i,s_i^\prime)} (si,ai,ri,si),让数据一定程度上是独立同分布的,各自累计梯度更新参数,各个线程可能运行不同的步数后再去更新策略函数

同步并行是每个线程并行收集 ( s i , a i , r i , s i ′ ) {(s_i,a_i,r_i,s_i^\prime)} (si,ai,ri,si),同步累计梯度更新参数,各个线程在相同步数后去更新策略函数。


A2C

A3C的异步更新会导致有时不同线程中的Actor将使用不同版本的策略,因此累积更新的方向将不是最优的。

A2C是一种同步更新的方法

等待各个线程完成自己的任务,再计算各个线程的梯度平均值,然后对参数进行更新

每一次迭代中并行的actor将均执行同一策略,这种训练方式理论上会收敛更快

A2C已被证明在能够实现与A3C相同或更好的性能得同时,更有效地利用GPU,并且能够适应更大的批量batch_size大小

A2C网络的公式如下:
∇ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( r t n + V π ( s t + 1 n ) − V π ( s t n ) ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla \bar{R}_\theta \approx \frac{1}{N} \sum_{n=1}^N \sum_{t=1}^{T_n}\left(r_t^n+V_\pi\left(s_{t+1}^n\right)-V_\pi\left(s_t^n\right)\right) \nabla \log p_\theta\left(a_t^n \mid s_t^n\right) RˉθN1n=1Nt=1Tn(rtn+Vπ(st+1n)Vπ(stn))logpθ(atnstn)
还可以使用n-步回报来减少方差,是将梯度前面的优势由单步变为多步的。用来平衡是否有偏和方差高低。


Off-policy 策略梯度

A3C和A2C均是On-policy。

On-policy是根据策略 π \pi π产生的样本来学习关于 π \pi π的相关知识

Off-policy是根据另一个策略 μ \mu μ产生的样本来学习关于 π \pi π的相关知识

Off-policy的优势在于:1.可重复利用历史样本,数据利用率更高,2.利用行为策略交互收集数据,适用性更好。

那么想要将策略梯度转为Off-Policy的,可以使用重要性采样来实现。
E x ∼ p ( x ) [ f ( x ) ] = ∫ p ( x ) f ( x ) d x = ∫ q ( x ) q ( x ) p ( x ) f ( x ) d x = ∫ q ( x ) p ( x ) q ( x ) f ( x ) d x = E x ∼ q ( x ) [ p ( x ) q ( x ) f ( x ) ] \begin{aligned} E_{x \sim p(x)}[f(x)] & =\int p(x) f(x) d x \\ & =\int \frac{q(x)}{q(x)} p(x) f(x) d x \\ & =\int q(x) \frac{p(x)}{q(x)} f(x) d x \\ & =E_{x \sim q(x)}\left[\frac{p(x)}{q(x)} f(x)\right] \end{aligned} Exp(x)[f(x)]=p(x)f(x)dx=q(x)q(x)p(x)f(x)dx=q(x)q(x)p(x)f(x)dx=Exq(x)[q(x)p(x)f(x)]
策略梯度的优化目标是:
J ( θ ) = E τ ∼ p θ ( τ ) [ r ( τ ) ] J(\theta)=E_{\tau \sim p_\theta(\tau)}[r(\tau)] J(θ)=Eτpθ(τ)[r(τ)]
其中 p θ ( τ ) p_\theta(\tau) pθ(τ)是目标策略 π θ ( τ ) \pi_\theta(\tau) πθ(τ)产生的概率分布, p ˉ ( τ ) \bar{p}(\tau) pˉ(τ)是行为策略所产生的概率分布
J ( θ ) = E τ ∼ p ˉ ( τ ) [ p θ ( τ ) p ˉ ( τ ) r ( τ ) ] J(\theta)=E_{\tau \sim \bar{p}(\tau)}\left[\frac{p_\theta(\tau)}{\bar{p}(\tau)} r(\tau)\right] J(θ)=Eτpˉ(τ)[pˉ(τ)pθ(τ)r(τ)]
image-20230830161442498


TRPO(Trust region policy optimization)

策略梯度的步长更新是 θ = θ + α ∇ θ J ( θ ) \theta = \theta + \alpha \nabla_\theta J(\theta) θ=θ+αθJ(θ)

策略梯度对学习率敏感,训练过程中容易出现策略崩塌。

策略梯度算法的更新步长很重要

步长太小,导致更新效率低下

步长太大,导致参数变动太大,采集到的数据的分布会随策略的更新而变化,导致可能无法从bad policy恢复

TRPO的思想上选择合适的步长,使得每次更新得到的新策略所实现的回报值单调不减。

信赖域(Trust Region)方法是更高级的步长更新方法,指在该区域内更新,策略所实现的回报值单调不减。

具体实现上是要找到一个替代函数,该函数要满足以下条件:

  • J ( θ ) J(\theta) J(θ)的一个下界函数
  • 在当前策略处逼近 J ( θ ) J(\theta) J(θ)
  • 当替代函数的值提升时, J ( θ ) J(\theta) J(θ)单调不减
  • 容易优化

image-20230830165034935


PPO

PPO在TRPO的基础上,自适应地调整KL惩罚因子,使得策略在trust region内更新

image-20230830165539484

DPG/DDPG

确定性策略梯度: a = π θ ( s ) a=\pi_\theta(s) a=πθ(s)

直接给定当前状态下确定性的动作

找到使Q函数最大的动作

这两种方法的特点就是给出一个确定性的动作,而不是给出一个动作的概率分布

DPG

image-20230830170718185


DDPG

DDPG结合了DQN和DPG,DQN用于高维输入离散动作空间,DPG用于低维输入连续动作空间。

使用了DQN的两种技术:Experience Replay和Target Network

对于critic和actor均有Target Network,采用软更新的方式
θ − ← τ θ + ( 1 − τ ) θ − w − ← τ w + ( 1 − τ ) w − τ ≪ 1 \theta^{-} \leftarrow \tau \theta+(1-\tau) \theta^{-} \quad w^{-} \leftarrow \tau w+(1-\tau) w^{-} \quad \tau \ll 1 θτθ+(1τ)θwτw+(1τ)wτ1
θ − \theta^- θ为目标actor网络参数, w − w^- w为目标critic网络参数

为了充分探索,利用添加噪声产生探索性动作
π θ ′ ( s ) = π θ ( s ) + N , N 是噪声 \pi^\prime_\theta(s)=\pi_\theta(s)+\mathcal N, \quad \mathcal N是噪声 πθ(s)=πθ(s)+N,N是噪声
算法流程:

Actor当前网络: a = π θ ( s ) a=\pi_\theta(s) a=πθ(s),根据当前状态 s s s选择当前执行的确定性动作 a a a,用于和环境交互生成 s ′ s^\prime s,r

Critic当前网络:估计当前Q值 Q w ( s , a ) Q_w(s,a) Qw(s,a)

Critic目标网络:估计target Q值, r + γ Q w − ( s ′ , a ′ ) r+\gamma Q_{w^-}(s^\prime,a^\prime) r+γQw(s,a)

Actor目标网络: a ′ = π θ − ( s ′ ) a^\prime=\pi_{\theta^-}(s^\prime) a=πθ(s),根据经验回放池中采样的下一个状态 s ′ s^\prime s选择动作 a ′ a^\prime a,估计target Q值
D Q N : Q w ( s , a ) − ( r + γ max ⁡ a ′ Q w − ( s ′ , a ′ ) ) D D P G : Q w ( s , a ) − ( r + γ Q w − ( s ′ , π θ − ( s ′ ) ) ) \begin{aligned} &DQN:\quad Q_w(s, a)-\left(r+\gamma \max _{a^{\prime}} Q_{w^{-}}\left(s^{\prime}, a^{\prime}\right)\right) \\ &DDPG: \quad Q_w(s, a)-\left(r+\gamma Q_{w^{-}}\left(s^{\prime}, \pi_{\theta^{-}}\left(s^{\prime}\right)\right)\right) \end{aligned} DQN:Qw(s,a)(r+γamaxQw(s,a))DDPG:Qw(s,a)(r+γQw(s,πθ(s)))

参考资料

RLChina2022 【RLChina 2022】理论课五:深度强化学习 张启超_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值