DRL(Deep Reinforced Learning) Policy Gradient 策略梯度优化

Policy Gradient 策略梯度优化

参考李宏毅老师的课程

强化学习有三个基础的组成部分 (坦克大战为例)

  • actor (坦克控制器)
  • environments (游戏界面交互)
  • reward function (击败敌方坦克获得奖励)

env 和 reward function 是无法控制的

调整actor中的policy,来获得最大的reward (控制坦克达成最大击杀)

policy决定actor的行为, policy部分就是一个network(即下图的Actor就是一个网络,可以通过网络来算出 a i a_i ai

reward不是标量(scalar)而是随机变量(random variable)

在这里插入图片描述

Trajectory  τ = { s 1 , a 1 , s 2 , a 2 , … , s T , a T } \text{Trajectory } \tau = \{s_1, a_1, s_2, a_2, \ldots, s_T, a_T\} Trajectory τ={s1,a1,s2,a2,,sT,aT}

p θ ( τ ) = p ( s 1 ) p θ ( a 1 ∣ s 1 ) p ( s 2 ∣ s 1 , a 1 ) p θ ( a 2 ∣ s 2 ) p ( s 3 ∣ s 2 , a 2 ) … = p ( s 1 ) ∏ t = 1 T p θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) p_\theta(\tau) = p(s_1)p_\theta(a_1|s_1)p(s_2|s_1,a_1)p_\theta(a_2|s_2)p(s_3|s_2,a_2)\dots \\ = p(s_1)\prod_{t=1}^T p_\theta(a_t|s_t)p(s_{t+1}|s_t,a_t) pθ(τ)=p(s1)pθ(a1s1)p(s2s1,a1)pθ(a2s2)p(s3s2,a2)=p(s1)t=1Tpθ(atst)p(st+1st,at)

轨迹 τ \tau τ 是走完整个行动的流程;

actor的参数给定为 θ \theta θ ,在参数确定的情况下,走完轨迹 τ \tau τ 的概率是 p θ ( τ ) p_\theta(\tau) pθ(τ)

在这里插入图片描述

R ˉ θ = ∑ τ R ( τ ) p θ ( τ ) = E τ ∼ p θ [ R ( τ ) ] \bar{R}_\theta = \sum_{\tau} R(\tau)p_\theta(\tau) = E_{\tau \sim p_\theta} [R(\tau)] Rˉθ=τR(τ)pθ(τ)=Eτpθ[R(τ)]
我们希望更新actor中的参数 θ \theta θ ,来使得获得的奖励函数 R ( τ ) R(\tau) R(τ) 的均值(也就是期望)越大越好

如何求 R ˉ θ \bar{R}_\theta Rˉθ 的梯度 ∇ R ˉ θ \nabla\bar{R}_\theta Rˉθ ,来对actor中的参数 θ \theta θ 进行策略梯度更新? η \eta η 为学习率
θ ← θ + η ∇ R ˉ θ \theta \leftarrow \theta + \eta \nabla \bar{R}_\theta θθ+ηRˉθ
∇ f ( x ) = f ( x ) ∇ log ⁡ f ( x ) \nabla f(x) = f(x) \nabla \log f(x) f(x)=f(x)logf(x) 可以推出下述公式
∇ R ˉ θ = ∑ τ R ( τ ) ∇ p θ ( τ ) = ∑ τ R ( τ ) p θ ( τ ) ∇ p θ ( τ ) p θ ( τ ) = ∑ τ R ( τ ) p θ ( τ ) ∇ log ⁡ p θ ( τ ) = E τ ∼ p θ ( τ ) [ R ( τ ) ∇ log ⁡ p θ ( τ ) ] ≈ 1 N ∑ n = 1 N R ( τ n ) ∇ log ⁡ p θ ( τ n ) = 1 N ∑ n = 1 N ∑ t = 1 T n R ( τ n ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla \bar{R}_\theta = \sum_{\tau} R(\tau) \nabla p_\theta(\tau) = \sum_{\tau} R(\tau) p_\theta(\tau) \frac{\nabla p_\theta(\tau)}{p_\theta(\tau)}= \sum_{\tau} R(\tau) p_\theta(\tau) \nabla \log p_\theta(\tau)\\= E_{\tau \sim p_\theta(\tau)}[R(\tau) \nabla \log p_\theta(\tau)] \approx \frac{1}{N} \sum_{n=1}^N R(\tau^n) \nabla \log p_\theta(\tau^n) \\ = \frac{1}{N} \sum_{n=1}^N \sum_{t=1}^{T_n} R(\tau^n) \nabla \log p_\theta(a_t^n | s_t^n) Rˉθ=τR(τ)pθ(τ)=τR(τ)pθ(τ)pθ(τ)pθ(τ)=τR(τ)pθ(τ)logpθ(τ)=Eτpθ(τ)[R(τ)logpθ(τ)]N1n=1NR(τn)logpθ(τn)=N1n=1Nt=1TnR(τn)logpθ(atnstn)

∇ f ( x ) = f ( x ) ∇ log ⁡ f ( x ) \nabla f(x) = f(x) \nabla \log f(x) f(x)=f(x)logf(x) 记住就行,是一个定理公式

R ( τ ) R(\tau) R(τ)​ 不要求可微,即使是黑盒也可以

表示为:
∇ R ˉ θ = E τ ∼ p θ ( τ ) [ R ( τ ) ∇ log ⁡ p θ ( τ ) ] \nabla \bar{R}_\theta =E_{\tau \sim p_\theta(\tau)}[R(\tau) \nabla \log p_\theta(\tau)] Rˉθ=Eτpθ(τ)[R(τ)logpθ(τ)]
在这里插入图片描述

上图表示我们处理策略梯度时的流程,通过采样一批 τ i \tau^i τi 来作为一个 θ \theta θ 更新的数据集,在更新完参数 θ \theta θ 后,再重新采样一批 τ i \tau^i τi 继续更新;每次采样的 τ \tau τ 只使用一次。因为其一直在与环境交互(即采样的 τ \tau τ 都来自环境),所以也被称为 on-policy gradient

需要注意的是, R ( τ n ) R(\tau^n) R(τn)​ 在每一步计算梯度时都要作为一个权重被乘上去。

Tip 1

需要注意的是,我们在实际情况下采样并不能将所有情况都囊括其中,以下图为例,我们可能没有采样到 a 的情况,这会导致在梯度更新后,actor 选择 a 的概率降低;但实际上选择 a 也会提高 reward ,只是我们没有采样到…

在这里插入图片描述

所以我们会优化策略梯度函数:
∇ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( R ( τ n ) − b ) ∇ log ⁡ p θ ( a t n ∣ s t n ) where  b ≈ E [ R ( τ ) ] \nabla \bar{R}_\theta \approx \frac{1}{N} \sum_{n=1}^N \sum_{t=1}^{T_n} (R(\tau^n) - b) \nabla \log p_\theta(a_t^n | s_t^n) \quad \text{where } b \approx E[R(\tau)] RˉθN1n=1Nt=1Tn(R(τn)b)logpθ(atnstn)where bE[R(τ)]
加入一个bias(b)来平衡这个问题,如果奖励不够,策略梯度就是负数。

Tip 2

根据公式 ∇ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( R ( τ n ) − b ) ∇ 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} (R(\tau^n) - b) \nabla \log p_\theta(a_t^n | s_t^n) RˉθN1n=1Nt=1Tn(R(τn)b)logpθ(atnstn) 可以知道, R ( τ n ) − b R(\tau^n) - b R(τn)b 会作为权重乘在每一次的 log ⁡ p θ ( a t n ∣ s t n ) \log p_\theta(a_t^n | s_t^n) logpθ(atnstn) 中。但以下图的两个例子来说:

  • 左边的 R = +3 说明最终的奖励是 +3 ,但是第一次的行动是 +5 ,第二次是 0 、第三次是 -2 ,说明第三次的行动被第二次影响了,如果没有第二次的行动,第三次行动可能就不会扣分。
  • 右边的 R = -7 说明最终的奖励是 -7 ,但是如果没有第二次的行动 +0 ,可能第三次的行动就不仅仅会扣两分了,可能会扣的更多

在这里插入图片描述

所以我们不能简单的将整体的奖励 R R R 作为权重来进行计算,要结合每一步的奖励进行计算

  • 左边第二次、第三次行动的奖励权重为 -2 而不是乘上整体的奖励 3
  • 右边的第二次、第三次行动的奖励权重为 -2 而不是乘上 -7

在这里插入图片描述

参考下述公式
∇ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( ∑ t ′ = t T n r t ′ n − b ) ∇ log ⁡ p θ ( a t n ∣ s t n ) where  b ≈ E [ R ( τ ) ] \nabla \bar{R}_\theta \approx \frac{1}{N} \sum_{n=1}^N \sum_{t=1}^{T_n} (\sum_{t'=t}^{T_n} r_{t'}^n-b) \nabla \log p_\theta(a_t^n | s_t^n) \quad \text{where } b \approx E[R(\tau)] RˉθN1n=1Nt=1Tn(t=tTnrtnb)logpθ(atnstn)where bE[R(τ)]

其中
R ( τ n ) → ∑ t ′ = t T n r t ′ n R(\tau^n) \rightarrow \sum_{t'=t}^{T_n} r_{t'}^n R(τn)t=tTnrtn
但由于随着行动次数越长,最开使的奖励影响越小,所以我们也要加入一个缩放因子来减少远距离时,奖励作为权重带来的影响
∑ t ′ = t T n r t ′ n → ∑ t ′ = t T n γ t ′ − t r t ′ n where  γ < 1 \sum_{t'=t}^{T_n} r_{t'}^n \rightarrow \sum_{t'=t}^{T_n} \gamma^{t'-t} r_{t'}^n \quad \text{where } \gamma < 1 t=tTnrtnt=tTnγttrtnwhere γ<1
在上述的推导步骤中,奖励的变化(即 R ( τ n ) − b R(\tau^n) - b R(τn)b )可以看作是一个函数:
R ( τ n ) − b = A θ ( s t , a t ) R(\tau^n) - b =A^\theta(s_t, a_t) R(τn)b=Aθ(st,at)
其中 A = Advantage Function  A = \text{Advantage Function } A=Advantage Function  ,这个函数的意义就是我们在 s t s_t st 的情况下执行 a t a_t at 相较于其他的行动能有多好

  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EEE1even

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值