RL--Policy-based methods--Policy Gradient

Intuition

通过 gradient ascent 让 policy 下 trajectory 的期望 return 变得尽可能的大

计算

期望 return

一个 policy 下的 trajectory 的期望 return,可以认为是 policy 下所有可能的 trajectory 的 return,再用trajectory 出现的概率加权求和,如下式
E τ ∼ π θ [ R ( τ ) ] = ∑ τ R ( τ ) p π θ ( τ ) \underset{\tau \sim \pi_{\theta}}E [R(\tau)] = \underset{\tau}\sum R(\tau)p_{\pi_{\theta}}(\tau) τπθE[R(τ)]=τR(τ)pπθ(τ)

其中 p π θ ( τ ) p_{\pi_{\theta}}(\tau) pπθ(τ) 表示轨迹 τ \tau τ 出现的概率, ∑ τ \underset{\tau}\sum τ表示穷举所有可能的轨迹

通过梯度上升来增大期望 return

梯度计算

∇ ∑ τ R ( τ ) p π θ ( τ ) = ∑ τ R ( τ ) ∇ p π θ ( τ ) = ∑ τ R ( τ ) p π θ ( τ ) ∇ p π θ ( τ ) p π θ ( τ ) = ∑ τ R ( τ ) p π θ ( τ ) ∇ 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 \underset{\tau}\sum R(\tau)p_{\pi_{\theta}}(\tau) \\ = \underset{\tau}\sum R(\tau)\nabla p_{\pi_{\theta}}(\tau) \\ = \underset{\tau}\sum R(\tau) p_{\pi_{\theta}}(\tau) \frac{\nabla p_{\pi_{\theta}}(\tau)}{p_{\pi_{\theta}}(\tau)} \\ = \underset{\tau}\sum R(\tau) p_{\pi_{\theta}}(\tau) \nabla \log(p_{\pi_{\theta}}(\tau))\\ \approx \frac{1}{N}\sum\limits_{n=1}^{N}R(\tau^n) \nabla \log(p_{\pi_{\theta}}(\tau^n))\\ =\frac{1}{N}\sum\limits_{n=1}^{N}\sum\limits_{t=1}^{T_n}R(\tau^n) \nabla \log(p_{\pi_{\theta}}(a_t^n|s_t^n)) τR(τ)pπθ(τ)=τR(τ)pπθ(τ)=τR(τ)pπθ(τ)pπθ(τ)pπθ(τ)=τR(τ)pπθ(τ)log(pπθ(τ))N1n=1NR(τn)log(pπθ(τn))=N1n=1Nt=1TnR(τn)log(pπθ(atnstn))

近似

实际中,trajectory的概率分布不容易得到

所以我们可以采样尽可能多的 trajectory,然后近似认为穷举了所有可能的 trajectory

再用采样得到的各种 trajectory 的数量来得到概率

每个(s, a) pair 对应的权重是整条 trajectory 的权重

而不是这个 pair 的权重

也就是说 trajectory 得到的 reward 越多,对参数的更新贡献越大

policy参数在 p π θ ( a ∣ s ) p_{\pi_{\theta}}(a|s) pπθ(as)

policy是一个输入 state,输出各个 action 概率的模型

Add a Baseline

如果不加 baseline

如果所有 trajectory 的 return 都是正的

  1. 理论上
    随着训练的进行,所有的 action 的输出值都会变大,但是因为有些 state action pair 对应的 return 更大,所以对应的 action 增大的幅度会更大,所以还是好的 action 的得分会相对的变大
  2. 实际上
    求解的公式是在用采样来近似求期望
    采样有可能会有误差,有些(s, a) pair可能没有被 sample 到,或者被 sample 到的很少
    但是如果只要出现在 sample 里的(s, a) pair 的得分就会变大,没有被 sample 到的(s, a) pair 自然就会相对变小
    而没有被 sample 到的(s, a) pair 不一定不好,它只是因为随机的没有被 sample 到,所以就得分就变小了

所以希望 return 不要总是正的

让每条 trajectory 的 return 减去一个 baseline 数值,比 baseline 大的才是正的 return,比 baseline 小的成了负的 return

加了 baseline 的梯度

1 N ∑ n = 1 N ∑ t = 1 T n ( R ( τ n ) − b ) ∇ log ⁡ ( p π θ ( a t n ∣ s t n ) ) \frac{1}{N}\sum\limits_{n=1}^{N}\sum\limits_{t=1}^{T_n}(R(\tau^n) - b) \nabla \log(p_{\pi_{\theta}}(a_t^n|s_t^n)) N1n=1Nt=1Tn(R(τn)b)log(pπθ(atnstn))

baseline 值怎么确定?

可以是所有 trajectory 的reward 的均值,也可以是其他的

Assign Suitable Credit

Intuition

在原有的计算梯度的公式里,一条 trajectory 里所有的(s, a) pair 都会乘以整条 trajectory 的reward,一条 trajectory的所有的 (s, a) pair 被强调的程度是一样的

但是一条 trajectory 里不是所有 action 都是好的,我们希望好的 action 被强调的更大,不好的 action 被强调的更小

我们希望同一条 trajectory 里的不同(s, a)pair 乘以不同的权重

如何给每个 (s, a) pair 计算不同的权重

  1. 可以以每条 trajectory 中从 (s, a) pair 开始以后的 return 作为权重
    (s, a) 出现之前的 reward 和 (s, a) 关系不大
  2. 可以加入 discount factor
    让离 (s, a) pair 远的 reward 进行衰减,从而强调近期的 reward

然后梯度变成了(替换了 R ( τ n ) R(\tau^n) R(τn)):
1 N ∑ n = 1 N ∑ t = 1 T n ( ∑ t ′ = t T n γ t ′ − t r t ′ n − b ) ∇ log ⁡ ( p π θ ( a t n ∣ s t n ) ) \frac{1}{N}\sum\limits_{n=1}^{N}\sum\limits_{t=1}^{T_n}(\sum\limits_{t'=t}^{T_n} \gamma^{t'-t} r_{t'}^{n} - b) \nabla \log(p_{\pi_{\theta}}(a_t^n|s_t^n)) N1n=1Nt=1Tn(t=tTnγttrtnb)log(pπθ(atnstn))

特点

on-policy

采样只能使用一次。每次 sample 到一些 trajectory 并用来更新参数以后,这些 sample 就丢掉了,需要重新采样才能再用来更新参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值