人工智能Paper解读之强化学习TRPO算法

人工智能Paper解读之强化学习TRPO算法

Paper来源,issued: Apri 20,2017 , Author :John Schulman

《Trust Region Policy Optimization》链接高能,慎重点开

1.这个有点难

  首先,请让我矫情一下,开始写这篇blog,我还是挺心虚的,整晚整晚的睡不着,害怕写不好,因为这篇Paper真的不好懂,研读这篇文章时候,一度怀疑自己的智商,甚至想到趁额头头发还有几根没有掉完,从今以后不再做技术了,去环游世界或者探索太空不也很好嘛,正当我不敢直面自己的惨淡的人生之时,传说有个叫openAI Five团队底层采用了TRPO算法,在5v5的Dota2开黑团战对战中,击败人类玩家战队,顿时让我,让我。。。。超级想吃王思聪的热狗,哈哈哈

  • 以下gif来自openAI玩家(PS:dota我不行,不要找我)

dataAI.gif

  • 索性就吃着热狗给你们解读吧

image.png

2.大牛大神,你们好!

image.png
  这篇Paper的作者John Schulman师从这么多大名鼎鼎的一些人物,实在让人恨啊!我就不一一介绍了,总之一句话,地球最强战队。统计学祖师爷Michael.I.Jordon桃李满天下,掀起了人工智能热潮,让人顶礼膜拜。
  话说回来,今天要讲的TRPO算法其实用了很多统计学和优化理论的知识。由于本人能力有限,可能有解读不到位的地方,恳请读者指正,不吝赐教

3.还等什么,那我们就开始吧

  基于无模型(model free)的强化学习算法,可以从两个方面进行求解,第一是基于值函数的方法,第二只基于策略梯度的算法,在基于策略梯度的TRPO算法提出之前,包括A2C,A3C,DDPG等一系列算法很难保证单调收敛。
  比如基于策略梯度算法: θ n e w = θ o l d + α ∇ θ \theta_{new}=\theta_{old}+\alpha\nabla_\theta θnew=θold+αθ
  当我们做优化的时候,如果步长 α \alpha α太小,那么就会导致更新效率低下,步长 α \alpha α如果太大,会导致更新的策略比上次更差,通过更差的策略去采样,那么会得到更差的样本,用差的样本去更新参数,那么更新到的参数会更差,这样一旦“误人子弟”,那么便迭代相传,而在这种“兜兜转转”不肯“朝着山顶”很好收敛的情况下,最终会导致优化崩溃。所以合适的步长对于强化学习非常之关键,试想我们如果能找到一种步长,使他每次更新时都能保证回报函数单调递增,一步一个台阶,稳定上升,这样的步长就是好步长。TRPO的核心就是要解决这样的问题。

4.渐入深水区

   既然TRPO的根本目的是为了使每次更新的回报函数单调不减,可以理解为每次更新都是有意义的更新,有意义的探索。那么如何才能做到呢?或者说,假如我们在训练的第i步得到一个策略 π i \pi_{i} πi,当迭代到第i+1步的时候,如何在策略 π i \pi_{i} πi的基础上得到 π i + 1 \pi_{i+1} πi+1呢?一个很自然的想法是将新的策略 π i + 1 \pi_{i+1} πi+1对应的回报函数 η ( π i + 1 ) \eta \left( \pi _ { i + 1 } \right) η(πi+1)分解成原来策略对应的回报函数 η ( π i ) \eta \left( \pi _ { i } \right) η(πi)加一个其他项,关键是这个其他项,如果我们能保证这个其他项是大于零的。那就是说明,这个新策略 π i + 1 \pi_{i+1} πi+1我们是可以接受的,因为新的策略函数 π i + 1 \pi_{i+1} πi+1让回报函数相比前一步变大了,也就是朝着最优的方向“百尺竿头更进一步”,基于这样的想法,就可以开始我们的具体实现方案。
  (1)我们有如下定义:
  给定一个infinite-horizon discounted 马尔科夫决策过程的描述如下
( S , A , P , r , ρ 0 , γ ) \left( \mathcal { S } , \mathcal { A } , P , r , \rho _ { 0 } , \gamma \right) (S,A,P,r,ρ0,γ)
S 是有限的状态空间
A 是有限的动作空间
P 可以理解为HMM中的状态转移矩阵,只不过加了动作,这里有三维,可以表示为, P : S × A × S → R P : \mathcal { S } \times \mathcal { A } \times \mathcal { S } \rightarrow \mathbb { R } P:S×A×SR
r 是处在状态s的及时回报,可以表示为 r : S → R r : \mathcal { S } \rightarrow \mathbb { R } r:SR
ρ 0 \rho_{0} ρ0: 是起始状态 s 0 s_{0} s0的状态分布,至于为什么在这里定义这样一种分布,且看下面的讲解
π \pi π 在状态s采取的动作a的随机概率 π : S × A → [ 0 , 1 ] \pi : \mathcal { S } \times \mathcal { A } \rightarrow [ 0,1 ] πS×A[0,1]
下面的 π ~ \tilde{\pi} π~代表下一轮或者新的策略
γ \gamma γ 折扣因子 γ ∈ ( 0 , 1 ) \gamma \in ( 0,1 ) γ(0,1)

  (2) 在第i步,假设我们已知策略 π \pi π,在策略 π \pi π的指导下我们得到如下和环境交互的片段或者完整序列
τ 0 : s 0 , a 0 → s 1 , a 1 → s 2 , a 2 → s 3 , a 3 → s 4 , a 4 → . . . . . . : τ 0 回 报 为 : G τ 0 = ∑ t = 0 ∞ γ t r ( s t ) 其 中 s t ∈ τ 0 τ 1 : s 0 , a 0 → s 1 , a 1 → s 2 , a 2 → s 3 , a 3 → s 4 , a 4 → . . . . . . : τ 1 回 报 为 : G τ 1 = ∑ t = 0 ∞ γ t r ( s t ) 其 中 s t ∈ τ 1 τ 2 : s 0 , a 0 → s 1 , a 1 → s 2 , a 2 → s 3 , a 3 → s 4 , a 4 → . . . . . . : τ 2 回 报 为 : G τ 2 = ∑ t = 0 ∞ γ t r ( s t ) 其 中 s t ∈ τ 2 τ 3 : s 0 , a 0 → s 1 , a 1 → s 2 , a 2 → s 3 , a 3 → s 4 , a 4 → . . . . . . : τ 3 回 报 为 : G τ 3 = ∑ t = 0 ∞ γ t r ( s t ) 其 中 s t ∈ τ 3 . . . . . . . τ n : s 0 , a 0 → s 1 , a 1 → s 2 , a 2 → s 3 , a 3 → s 4 , a 4 → . . . . . . : τ n 回 报 为 : G τ 3 = ∑ t = 0 ∞ γ t r ( s t ) 其 中 s t ∈ τ n \tau_{0}:s_{0} , a_{0}\rightarrow s_{1} , a_{1}\rightarrow s_{2}, a_{2} \rightarrow s_{3}, a_{3} \rightarrow s_{4}, a_{4} \rightarrow ......:\tau_{0}回报为:G_{\tau_{0}} = \sum _ { t = 0 } ^ { \infty } \gamma ^ { t } r \left( s _ { t } \right) 其中 s_{t} \in \tau_{0} \\ \tau_{1}:s_{0} , a_{0} \rightarrow s_{1}, a_{1} \rightarrow s_{2}, a_{2} \rightarrow s_{3}, a_{3} \rightarrow s_{4}, a_{4} \rightarrow ......:\tau_{1}回报为:G_{\tau_{1}} = \sum _ { t = 0 } ^ { \infty } \gamma ^ { t } r \left( s _ { t } \right) 其中 s_{t} \in \tau_{1} \\ \tau_{2}:s_{0} , a_{0}\rightarrow s_{1} , a_{1}\rightarrow s_{2}, a_{2} \rightarrow s_{3}, a_{3} \rightarrow s_{4}, a_{4} \rightarrow ...... :\tau_{2}回报为:G_{\tau_{2}} = \sum _ { t = 0 } ^ { \infty } \gamma ^ { t } r \left( s _ { t } \right) 其中 s_{t} \in \tau_{2} \\ \tau_{3}:s_{0} , a_{0}\rightarrow s_{1} , a_{1}\rightarrow s_{2}, a_{2} \rightarrow s_{3}, a_{3} \rightarrow s_{4} , a_{4}\rightarrow ......:\tau_{3}回报为:G_{\tau_{3}} = \sum _ { t = 0 } ^ { \infty } \gamma ^ { t } r \left( s _ { t } \right) 其中 s_{t} \in \tau_{3} \\ .......\\ \tau_{n}:s_{0} ,a_{0}\rightarrow s_{1} , a_{1} \rightarrow s_{2}, a_{2} \rightarrow s_{3}, a_{3} \rightarrow s_{4} , a_{4}\rightarrow ......:\tau_{n}回报为:G_{\tau_{3}} = \sum _ { t = 0 } ^ { \infty } \gamma ^ { t } r \left( s _ { t } \right) 其中 s_{t} \in \tau_{n} \\ τ0s0,a0s1,a1s2,a2s3,a3s4,a4......:τ0Gτ0=t=0γtr(st)stτ0τ1s0,a0s1,a1s2,a2s3,a3s4,a4......:τ1Gτ1=t=0γtr(st)stτ1τ2s0,a0s1,a1s2,a2s3,a3s4,a4......:τ2Gτ2=t=0γtr(st)stτ2τ3s0,a0s1,a1s2,a2s3,a3s4,a4......:τ3Gτ3=t=0γtr(st)stτ3.......τns0,a0s1,a1s2,a2s3,a3s4,a4......:τnGτ3=t=0γtr(st)stτn
  (3) 在第i+1 步我们要得到策略 π ~ \tilde{\pi} π~,使得回报函数变大。首先我们需要先定义回报函数,如下:
当给定一些片段或者整段的状态和动作序列的时候,得到这些状态序列的的期望回报为
η ( π ) = E s 0 , a 0 , … [ ∑ t = 0 ∞ γ t r ( s t ) ] s 0 ∼ ρ 0 ( s 0 ) , a t ∼ π ( a t ∣ s t ) , s t + 1 ∼ P ( s t + 1 ∣ s t , a t ) \eta ( \pi ) = \mathbb { E } _ { s _ { 0 } , a _ { 0 } , \dots } \left[ \sum _ { t = 0 } ^ { \infty } \gamma ^ { t } r \left( s _ { t } \right) \right] \\ s _ { 0 } \sim \rho _ { 0 } \left( s _ { 0 } \right) , a _ { t } \sim \pi \left( a _ { t } | s _ { t } \right) , s _ { t + 1 } \sim P \left( s _ { t + 1 } | s _ { t } , a _ { t } \right) η(π)=Es0,a0,[t=0γtr(st)]s0ρ0(s0),atπ(atst),st+1P(st+1st,at)
当你刚看到这个公式的时候可能会一脸懵,如果我把他写成如下的形式,或许更好理解一点,其中下式G就是代表在状态 s 0 s_{0} s0 的时候,其中产生的一个序列 τ \tau τ的累计回报而已
G τ = ∑ t = 0 ∞ γ t r ( s t ) 其 中 s t ∈ τ η ( π ) = E τ [ G τ ] = E s 0 , a 0 , … [ ∑ t = 0 ∞ γ t r ( s t ) ] , τ ∈ { τ 0 , τ 1 , τ 2 . . . . . . . τ n } G_{\tau} = \sum _ { t = 0 } ^ { \infty } \gamma ^ { t } r \left( s _ { t } \right) 其中 s_{t} \in \tau \\ \eta ( \pi ) = \mathbb { E } _ { \tau } \left[ G_{\tau} \right] = \mathbb { E } _ { s _ { 0 } , a _ { 0 } , \dots } \left[ \sum _ { t = 0 } ^ { \infty } \gamma ^ { t } r \left( s _ { t } \right) \right] ,\tau \in \left\{ \tau_{0},\tau_{1},\tau_{2}.......\tau_{n}\right \} Gτ=t=0γtr(st)stτη(π)=Eτ[Gτ]=Es0,a0,[t=0γtr(st)],τ{ τ0,τ1,τ2.......τn}
我们用 η ( π ) \eta ( \pi ) η(π) 代表:如果在选取策略概率函数 π \pi π时候,在其作用下产生的所有一系列序列的累计回报期望,注意:如果这个期望越大,说明这个策略函数 π \pi π越优秀.

5.我们怎么得到 η ( π ) \eta ( \pi ) η(π) η ( π ~ ) \eta ( \tilde{\pi} ) η(π~)的关系

第一阶段

  有了 η ( π ) \eta ( \pi ) η(π)的定义,那么我们是怎么得到 η ( π ) \eta ( \pi ) η(π) η ( π ~ ) \eta ( \tilde{\pi} ) η(π~)的关系,进而推导出在选取策略 π ~ \tilde{\pi} π~的时候, η ( π ~ ) \eta ( \tilde{\pi} ) η(π~) η ( π ) \eta ( \pi ) η(π)回报值大呢?
  带着这样的问题,我们继续向下看:
  首先我们来回忆一下以前我们学的状态值函数和状态动作值函数表达式
Q π ( s t , a t ) = E s t + 1 , a t + 1 , … [ ∑ l = 0 ∞ γ l r ( s t + l ) ] V π ( s t ) = E a t , s t + 1 … [ ∑ l = 0 ∞ γ l r ( s t + l ) ] \begin{array} { l } { Q _ { \pi } \left( s_{ t } , a_{ t } \right) = \mathbb { E } _ { s _ { t + 1 } , a _ { t + 1 } , \ldots } \left[ \sum _ { l = 0 } ^ { \infty } \gamma ^ { l } r \left( s _ { t + l } \right) \right] } \\ { V _ { \pi } \left( s _ { t } \right) = \mathbb { E } _ { a _ { t } , s _ { t + 1 } \ldots } \left[ \sum _ { l = 0 } ^ { \infty } \gamma ^ { l } r \left( s _ { t + l } \right) \right] } \end{array} Qπ(st,at)=Est+1,at+1,[l=0γlr(st+l)]Vπ(st)=Eat,st+1[l=0γlr(st+l)]
上面的式子在我们刚接触强化学习的时候就要理解的式子,这里无需多言,大家可能都能明白,这里需要关注的是根据bellman equation,我们很容易得到
V π ( s t ) = ∑ a π ( a ∣ s t ) Q π ( s t , a ) V _ { \pi } \left( s _ { t } \right)= \sum_{a} \pi(a|s_{t})Q _ { \pi } \left( s _ { t } , a \right) Vπ(st)=aπ(ast)Qπ(st,a)
那么问题来了,我们是不是可以把状态值函数 V π ( s t ) V _ { \pi } \left( s _ { t } \right) Vπ(st)看做状态动作值函数 Q π ( s t , a ) Q _ { \pi } \left( s _ { t } , a \right) Qπ(st,a) 的平均值。那么 当智能体所处状态 s t s_{t} st的时候采取某一具体动作a的时候,算出来的状态值函数 Q π ( s t , a ) Q _ { \pi } \left( s _ { t } , a \right) Qπ(st,a) 相对平均值 V π ( s t ) V _ { \pi } \left( s _ { t } \right) Vπ(st)产生的差异是什么?是比平均值大还是比平均值小呢?好了,我们用势能函数 A ( s , a ) A \left( s,a \right) A(s,a)来表示,定义如下
A π ( s t , a ) = Q π ( s t , a ) − V π ( s t ) A_{ \pi } ( s_{t}, a ) = Q_{ \pi } ( s_{t} , a ) - V_{ \pi } ( s_{t} ) Aπ(st,a)=Qπ(st,a)Vπ(st)
而由于
V π ( s t ) = E s t + 1 ∼ P ( s t + 1 ∣ s t , a ) [ V π ( s t ) ] V_{ \pi } ( s_{t} ) = E_{ s_{t+1} \sim P \left( s_{t+1} | s_{t}, a \right) } \left[ V _ { \pi } ( s_{t} ) \right] Vπ(st)=Es</

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值