从REINFORCE到PPO,看Policy Gradient的前世今生

从REINFORCE到PPO,看Policy Gradient的前世今生

Policy Gradient和Q-learning可以说是model-free RL的两大阵营。前者是off-line、on-policy的方法,后者是on-line、off-policy的方法。前者是策略迭代,关心的是策略网络的参数;后者是值迭代,关心的是值网络的输出。随着RL的不断发展,这两类方法在不断交错领跑的过程中交汇融合,不断给我们带来新的惊喜。

本文重点在介绍Policy Gradient方法,从其“初心”出发,通过一步步的推导来讲述新的算法。后半部分的重点将放在兼具漂亮理论基础和简洁代码实现的PPO方法上,欢迎RL入门级的小朋友们一起讨论学习!

Policy Gradient

如果你已经了解了DQN,也许会想到这样一个问题:为什么一定要用值函数来做决策(当然这个想法也是很自然的),为什么不绕过值函数直接用神经网络来表示策略呢?
当然,想要讨论清楚这个问题不是很容易,有很多不同的看法,感兴趣的小朋友可以看一下知乎上对问题RL两大类算法的本质区别?(Policy Gradient 和 Q-Learning)
南京大学俞杨老师的答案,很有启发性。

让我们再退一步,我们想要的东西到底是什么呢?其实就是让我们采取策略的期望收益最大化!

θ=argmaxθEτpθ(τ)r(τ)J(θ) θ ∗ = arg ⁡ max θ ⁡ E τ ∼ p θ ( τ ) r ( τ ) ⏟ J ( θ )

τ τ 表示一条样本轨迹,策略所影响的,是样本轨迹 τ τ 出现的概率,也就是 pθ(τ) p θ ( τ )

那么 r(τ) r ( τ ) pθ(τ) p θ ( τ ) 指的具体是什么呢?我们再进一步展开来写一下:

r(τ)=tr(st,at)pθ(τ)=p(s1)tπθ(at|st)p(st+1|st,at) r ( τ ) = ∑ t r ( s t , a t ) p θ ( τ ) = p ( s 1 ) ∏ t π θ ( a t | s t ) p ( s t + 1 | s t , a t )

注意,这里的 τ τ t t 的含义不同, τ 是样本轨迹, t t 是样本轨迹上的时间。仔细看 p θ ( τ ) 我们就会发现,将概率展开以后实际上我们的策略可以影响的只有 πθ(at|st) π θ ( a t | s t ) ,也就是在状态 st s t 下采取动作 at a t 的概率。这也就是我们策略的数学表示。

REINFORCE

现在我们就可以再向前走一步,按照机器学习的一般思路,我已经定义好了我的目标函数 J(θ) J ( θ ) ,如果可以求出它的梯度 θJ(θ) ∇ θ J ( θ ) ,我们就可以梯度下降了!为了求梯度,我们将 J(θ) J ( θ ) 改写成积分的形式:

J(θ)θJ(θ)=Eτpθ(τ)r(τ)=pθ(τ)r(τ)dτ=θpθ(τ)r(τ)dτ=pθ(τ)θlogpθ(τ)r(τ)dτ=Eτpθ(τ)θlogpθ(τ)r(τ) J ( θ ) = E τ ∼ p θ ( τ ) r ( τ ) = ∫ p θ ( τ ) r ( τ ) d τ ∇ θ J ( θ ) = ∫ ∇ θ p θ ( τ ) r ( τ ) d τ = ∫ p θ ( τ ) ∇ θ log ⁡ p θ ( τ ) r ( τ ) d τ = E τ ∼ p θ ( τ ) ∇ θ log ⁡ p θ ( τ ) r ( τ )

这里用到了一个小技巧, θpθ(τ)=pθ(τ)θpθ(τ)pθ(τ)=pθ(τ)θlogpθ(τ) ∇ θ p θ ( τ ) = p θ ( τ ) ∇ θ p θ ( τ ) p θ ( τ ) = p θ ( τ ) ∇ θ log ⁡ p θ ( τ ) ,这样做的目的是把 pθ(τ) p θ ( τ ) 重新拿到外边来,就可以再写成期望的形式了。

现在公式中的自变量仍然是 τ τ ,实际应用中我们不可能直接对 τ τ 求导,因此我们再把 pθ(τ) p θ ( τ ) 带进来看看能不能将 τ τ 给替换为我们可以操作的 st s t at a t

θlogpθ(τ)θJ(θ)=θlogp(s1)0+tθlogπθ(at|st)+θlogp(st+1|st,at)0=tθlogπθ(at|st)=Eτp
  • 16
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值