简说Policy Gradient (1) —— 入门
概念
1. PG的目标
首先,一个Policy可以被表达为
π θ ( a t ∣ s t ) {{\pi }_{\theta }}({{a}_{t}}|{{s}_{t}}) πθ(at∣st)
表示在当前观测 时,采用这个Policy所选用的Action( a t {{a}_{t}} at)
1.1 Reward
一个策略的优劣通过一个评价函数来表达,一般可以表示为这个通过这个策略所带来的Reward;
假设一个策略的单次采集episode记为
τ = { s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , . . . , s t , a t , r t , . . . } \begin{equation} \tau =\{{{s}_{1}},{{a}_{1}},{{r}_{1}},{{s}_{2}},{{a}_{2}},{{r}_{2}},...,{{s}_{t}},{{a}_{t}},{{r}_{t}},...\} \end{equation} τ={s1,a1,r1,s2,a2,r2,...,st,at,rt,...}
则本次episode的Reward可记为
R ( τ ) = ∑ t = 1 n r t \begin{equation} R(\tau )=\sum_{t=1}^{n}{{{r}_{t}}} \end{equation} R(τ)=t=1∑nrt
其中 表示这个episode中某一个动作所带来的收益reward
在后文中,为了区分一个episode的Reward和一个动作的reward,通过大小写来区分(R和r)
1.2 评价方式
问题:那如何评价一个策略的好坏呢?
答:期望
问:期望如何逼近呢
答:MC
只通过一个episode肯定不行,所以我们想到用统计学的方式,一次不行,那就多次。那多少才行,由统计学基础大数定理知道,当采样接近于无穷的时候,就能获得一个准确的估计。此时这个值就是期望,可以如下表示
E τ ∼ p ( τ ) [ R ( τ ) ] = ∑ τ ∼ p ( τ ) R ( τ ) p ( τ ∣ θ ) \begin{equation} {{\mathbb E}_{\tau \sim p(\tau )}}[R(\tau )]=\sum_{\tau \sim p(\tau )}{R(\tau )p(\tau |\theta )} \end{equation} Eτ∼p(τ)[R(τ)]=τ∼p(τ)∑R(τ)p(τ∣θ)
期望是可以通过sample逼近的。记住这句话
E τ ∼ p ( τ ) [ R ( τ ) ] = ∑ τ ∼ p ( τ ) R ( τ ) p ( τ ∣ θ ) ≅ 1 N ∑ R ( τ ) \begin{equation} {{\mathbb E}_{\tau \sim p(\tau )}}[R(\tau )]=\sum_{\tau \sim p(\tau )}{R}(\tau )p(\tau |\theta )≅\frac{1}{N}\sum{R}(\tau ) \end{equation} Eτ∼p(τ)[R(τ)]=τ∼p(τ)∑R(τ)p(τ∣θ)≅N1∑R(τ)
2. 方法
为了获得更好的Policy,很容易想到,基于优化的方法,使用梯度法逐步逼近最优,所以就叫 Policy Gradient,中文【策略梯度】
接下来我们推导一下PG的公式
根据以上的描述,为了获得更好的Policy,我们对Reward的期望求梯度,然后进行梯度优化
记梯度为 g = ∇ R g=\nabla R g=∇R,则
π θ ← π θ + g ⋅ α \begin{equation} {{\pi }_{\theta }}\leftarrow {{\pi }_{\theta }}+g⋅\alpha \end{equation} πθ←πθ+g⋅α
以上的核心就是为了求R的梯度
g = ∇ R = ∇ [ ∑ R ( τ ) p ( τ ∣ θ ) ] = ∑ ∇ [ ( R ( τ ) p ( τ ∣ θ ) ] = ∑ [ R ( τ ) ∇ p ( τ ∣ θ ) ] \begin{equation} \begin{aligned} g=\nabla R &=\nabla [\sum{R}(\tau )p(\tau |\theta )] \\ &=\sum{\nabla [(R(\tau )p(\tau |\theta )]} \\ &=\sum{[R(\tau )\nabla p(\tau |\theta )]} \end{aligned} \end{equation} g=∇R=∇[∑R(τ)p(τ∣θ)]=∑∇[(R(τ)p(τ∣θ)]=∑[R(τ)∇p(τ∣θ)]
注意了,以上的式子虽然成立,但是我们没有办法在工程上使用,原因如下:
- 我们没有办法直接获得每一个轨迹 的概率
所以我们一般使用MC的方式取逼近,也就是通过sample,然后求和取平均的方式
那该如何变换呢?
如下:
g = ∑ [ R ( τ ) ∇ p ( τ ∣ θ ) ] = ∑ p ( τ ∣ θ ) [ R ( τ ) ∇ p ( τ ∣ θ ) p ( τ ∣ θ ) ] = ∑ p ( τ ∣ θ ) [ R ( τ ) ∇ l o g ( p ( τ ∣ θ ) ] \begin{equation} \begin{aligned} g &=\sum{[R(\tau )\nabla p(\tau |\theta )]} \\ &=\sum{p(\tau |\theta )[R(\tau )\frac{\nabla p(\tau |\theta )}{p(\tau |\theta )}]} \\ &=\sum{p(\tau |\theta )[R(\tau )\nabla log(p(\tau |\theta )]} \end{aligned} \end{equation} g=∑[R(τ)∇p(τ∣θ)]=∑p(τ∣θ)[R(τ)p(τ∣θ)∇p(τ∣θ)]=∑p(τ∣θ)[R(τ)∇log(p(τ∣θ)]
看到没,通过以上变换,我们就有了一个【概率×func】求和的形式,这个形式是可以通过sample逼近的;也就是
g = ∑ p ( τ ∣ θ ) [ R ( τ ) ∇ l o g ( p ( τ ∣ θ ) ] ≅ 1 N ∑ [ R ( τ ) ∇ l o g ( p ( τ ∣ θ ) ] \begin{equation}\begin{aligned} g &=\sum{p(\tau |\theta )[R(\tau )\nabla log(p(\tau |\theta )]}\\ &≅\frac{1}{N}\sum{[R(\tau )\nabla log(p(\tau |\theta )]} \end{aligned}\end{equation} g=∑p(τ∣θ)[R(τ)∇log(p(τ∣θ)]≅N1∑[R(τ)∇log(p(τ∣θ)]
接下来我们进行化简,因为
l o g ( p ( τ ∣ θ ) ) = l o g ( p ( s 1 ) π ( a 1 ∣ s 1 ) p ( s 2 ∣ s 1 , a 1 ) π ( a 2 , ∣ s 2 ) . . . ) = l o g ( p ( s 1 ) ) + ∑ t = 1 p ( s t + 1 ∣ s t , a t ) + ∑ t = 1 π ( a t ∣ s t ) \begin{equation}\begin{aligned} log(p(\tau |\theta ))&=log(p({{s}_{1}})\pi ({{a}_{1}}|{{s}_{1}})p({{s}_{2}}|{{s}_{1}},{{a}_{1}})\pi ({{a}_{2}},|{{s}_{2}})...) \\ &=log(p({{s}_{1}}))+\sum_{t=1}{p}({{s}_{t}}+1|{{s}_{t}},{{a}_{t}})+\sum_{t=1}{\pi }({{a}_{t}}|{{s}_{t}}) \end{aligned}\end{equation} log(p(τ∣θ))=log(p(s1)π(a1∣s1)p(s2∣s1,a1)π(a2,∣s2)...)=log(p(s1))+t=1∑p(st+1∣st,at)+t=1∑π(at∣st)
观察上式,前两项与 θ \theta θ无关,求梯度后为0,所以
g = 1 N ∑ [ R ( τ ) ∇ l o g ( p ( τ ∣ θ ) ] = 1 N ∑ [ R ( τ ) ∇ ∑ t = 1 π ( a t ∣ s t ) ] = 1 N ∑ [ R ( τ ) ∑ t = 1 ∇ π ( a t ∣ s t ) ] = 1 N ∑ n = 1 ∑ t = 1 [ R ( τ ) ∇ π ( a t ∣ s t ) ] \begin{equation}\begin{aligned} g&=\frac{1}{N}\sum{[R(\tau )\nabla log(p(\tau |\theta )]}\\ &=\frac{1}{N}\sum{[R(\tau )\nabla \sum_{t=1}{\pi }({{a}_{t}}|{{s}_{t}})]} \\ &=\frac{1}{N}\sum{[R(\tau )\sum_{t=1}{\nabla \pi }({{a}_{t}}|{{s}_{t}})]} \\ &=\frac{1}{N}\sum_{n=1}{\sum_{t=1}{[R(\tau )\nabla \pi ({{a}_{t}}|{{s}_{t}})]}} \end{aligned}\end{equation} g=N1∑[R(τ)∇log(p(τ∣θ)]=N1∑[R(τ)∇t=1∑π(at∣st)]=N1∑[R(τ)t=1∑∇π(at∣st)]=N1n=1∑t=1∑[R(τ)∇π(at∣st)]
上式就是最基本的Policy Gradient计算方式,我们记住了
2.1 优化
为了方便,我们记(10)式中的R为 ψ \psi ψ, 则(1)式进化为
g = 1 N ∑ n = 1 ∑ t = 1 [ ψ ( τ ) ∇ π ( a t ∣ s t ) ] \begin{equation}\begin{aligned} g=\frac{1}{N}\sum_{n=1}{\sum_{t=1}{[\psi (\tau )\nabla \pi ({{a}_{t}}|{{s}_{t}})]}} \end{aligned}\end{equation} g=N1n=1∑t=1∑[ψ(τ)∇π(at∣st)]
其中 ψ \psi ψ的不同表达方式衍生出了不同的PG方案
同样记住此式
对于式(10),
ψ ( τ ) = ∑ l = 0 T r t \psi (\tau )=\sum_{l=0}^{T}{{{r}_{t}}} ψ(τ)=l=0∑Trt
观察(10),发现在每一个step t,我们都使用了 R,也就是使用了整个轨迹的Reward,其实是不合理的。
优化一:
将优化为只与当前决策有关的Reward,因为t之前的行为已经确定,所以优化后的为
ψ ( τ ) = ∑ l = t T r l \psi (\tau )=\sum_{l=t}^{T}{{{r}_{l}}} ψ(τ)=l=t∑Trl
优化二:
工程试验发现,通过以上计算的虽然是无偏的,但是会有非常大的方差,因为 r t r_t rt在经过长时累计后,可能会变得异常大,导致梯度爆炸或者抖动
容易想到,可以减去一个baseline;表达为
ψ ( τ ) = ∑ l = t T ( r t − b ) \psi (\tau )=\sum_{l=t}^{T}{{{(r}_{t}}-b)} ψ(τ)=l=t∑T(rt−b)
可以证明,以上转换也是无偏的,但是方差可以变小;证明见 (TODO)
关于b的计算方式也是一个学科
优化三:
观察 ψ ( τ ) \psi({\tau}) ψ(τ)发现,其实表达的是,策略的收益;假设我们可以估计出每一个step的收益,我们让策略向着收益变大的方向去逼近,也就是
ψ ( τ ) = Q π ( s t , a t ) \psi (\tau )={{Q}^{\pi }}({{s}_{t}},{{a}_{t}}) ψ(τ)=Qπ(st,at)
这个Q函数表达了策略采取的action的收益,越大表示策略越好;由此衍生出来的Q learning也是非常有名的方式。
优化四:
既然优化二考虑了方差大的问题,我么们将优化三也减去一个baseline,那就表达了策略相对于baseline的提升,也就是说,当提升为正时,我们就鼓励这种策略,如果提升为负时,我们就抑制这种策略。同时我们可以用一个函数来表达这种baseline,记为 V ( s t ) V(s_t) V(st),也就是V函数,也叫值函数,表达了当前状态的平均/默认收益值
ψ ( τ ) = Q π ( s t , a t ) − V π ( s t ) \psi (\tau )={{Q}^{\pi }}({{s}_{t}},{{a}_{t}})-{{V}^{\pi }}({{s}_{t}}) ψ(τ)=Qπ(st,at)−Vπ(st)
注意此处的V指的是当前策略 的收益,所以有一个上标;言外之意就是我们目标想要比当前策略默认要好
为了表示方便,一般用 A表示这个策略的优势,
A π ( s t , a t ) = Q π ( s t , a t ) − V π ( s t ) \begin{equation} {{A}^{\pi }}({{s}_{t}},{{a}_{t}})={{Q}^{\pi }}({{s}_{t}},{{a}_{t}})-{{V}^{\pi }}({{s}_{t}})\ \end{equation} Aπ(st,at)=Qπ(st,at)−Vπ(st)
这个函数也叫优势函数
优化五:
牛人发现,我们以上计算的都是需要用到整个轨迹中的变量,其实是很不方便的,很多时候我们不一定能够获得全部前后上下文的数据;那我们是不是可以递归一下
Q π ( s t , a t ) − V π ( s t ) = r t + V π ( s t + 1 ) − V π ( s t ) {{Q}^{\pi }}({{s}_{t}},{{a}_{t}})-{{V}^{\pi }}({{s}_{t}})={{r}_{t}}+{{V}^{\pi }}({{s}_{t+1}})-{{V}^{\pi }}({{s}_{t}}) Qπ(st,at)−Vπ(st)=rt+Vπ(st+1)−Vπ(st)
那这样我们只需要考虑两个相邻step的差即可,这种方法叫做 TD
记
δ t = r t + V π ( s t + 1 ) − V π ( s t ) {{\delta }_{t}}={{r}_{t}}+{{V}^{\pi }}({{s}_{t+1}})-{{V}^{\pi }}({{s}_{t}}) δt=rt+Vπ(st+1)−Vπ(st)
2.2 Discount
以上我们没有考虑discount,关于discount此处不做赘述,以 γ \gamma γ 来表示
以上的几种表达可以更新为
ψ ( τ ) = ∑ l = 0 T γ l r t + l δ t = r t + γ V π ( s t + 1 ) − V π ( s t ) A π , γ ( s t , a t ) = Q π , γ ( s t , a t ) − V π , γ ( s t ) \begin{aligned} \psi (\tau )&=\sum_{l=0}^{T}{{{\gamma }^{l}}{{r}_{t+l}}} \\ {{\delta }_{t}}&={{r}_{t}}+\gamma {{V}^{\pi }}({{s}_{t+1}})-{{V}^{\pi }}({{s}_{t}}) \\ {{A}^{\pi ,\gamma }}({{s}_{t}},{{a}_{t}})&={{Q}^{\pi ,\gamma }}({{s}_{t}},{{a}_{t}})-{{V}^{\pi ,\gamma }}({{s}_{t}}) \end{aligned} ψ(τ)δtAπ,γ(st,at)=l=0∑Tγlrt+l=rt+γVπ(st+1)−Vπ(st)=Qπ,γ(st,at)−Vπ,γ(st)
3. GAE
书接上回,在使用Discount版本的TD时,我们得到以下公式
δ t = r t + γ V π ( s t + 1 ) − V π ( s t ) {{\delta }_{t}}={{r}_{t}}+\gamma {{V}^{\pi }}({{s}_{t+1}})-{{V}^{\pi }}({{s}_{t}}) δt=rt+γVπ(st+1)−Vπ(st)
表达了某一个step, V函数的预测误差
先引入一个概念,大佬都喜欢创造概念(抽象抽象再抽象) γ-just
3.1 γ-just
首先给出数学定义,我们定义一个Function
A t ^ ( s 0 : ∞ , a 0 : ∞ ) \hat{{{A}_{t}}}({{s}_{0:\infty }},{{a}_{0:\infty }}) At^(s0:∞,a0:∞),如果这个函数是 γ-just的,那他一定满足以下:
E s 0 : ∞ , a 0 : ∞ [ A t ^ ( s 0 : ∞ , a 0 : ∞ ) ∇ π θ ( a t ∣ s t ) ] = E s 0 : ∞ , a 0 : ∞ [ A π , γ ( s t , a t ) ∇ π θ ( a t ∣ s t ) ] \begin{equation} {{\mathbb E}_{{{s}_{0:\infty }},{{a}_{0:\infty }}}}[\hat{{{A}_{t}}}({{s}_{0:\infty }},{{a}_{0:\infty }})\nabla {{\pi }_{\theta }}({{a}_{t}}|{{s}_{t}})]={{\mathbb E}_{{{s}_{0:\infty }},{{a}_{0:\infty }}}}[{{A}^{\pi ,\gamma }}({{s}_{t}},{{a}_{t}})\nabla {{\pi }_{\theta }}({{a}_{t}}|{{s}_{t}})] \end{equation} Es0:∞,a0:∞[At^(s0:∞,a0:∞)∇πθ(at∣st)]=Es0:∞,a0:∞[Aπ,γ(st,at)∇πθ(at∣st)]
其中 A π , γ ( s t , a t ) = Q π , γ ( s t , a t ) − V π , γ ( s t ) {{A}^{\pi ,\gamma }}({{s}_{t}},{{a}_{t}})={{Q}^{\pi ,\gamma }}({{s}_{t}},{{a}_{t}})-{{V}^{\pi ,\gamma }}({{s}_{t}}) Aπ,γ(st,at)=Qπ,γ(st,at)−Vπ,γ(st)为之前定义的经过 γ Discount的优势函数
好,数学定义完了,我们来理解一下。
📌首先γ-just种的 γ 表示这个定义是基于 γ折扣的,我们不讨论没有折扣的场景,或者没有折扣的场景可以表示为 γ=1;
just表示,我们定义了一个 A ^ \hat A A^ ,如果 A ^ \hat A A^满足一定的约束,那他可以很有用,这个约束就是上面的等式;这个等式什么意思的,可以这么理解:
• A ^ \hat A A^本身可以是一个关于所有 s和a的函数;(当然可以退化为只跟当前 s t , a t s_t, a_t st,at 有关)
• A ^ \hat A A^作为 ψ \psi ψ 函数时,代入约束式求期望之后 A ^ \hat A A^与 A π , γ ( s t , a t ) {{A}^{\pi ,\gamma }}({{s}_{t}},{{a}_{t}}) Aπ,γ(st,at) 作为 ψ \psi ψ 函数等价
• 有了这个 A ^ \hat A A^之后我们就可以定义任一的一个关于 s,a的函数,只要是γ-just,那么就可以直接用来算最优的 g 梯度了,我们的PG就可以顺利继续了
为什么要定义这么一个函数呢?
我理解:
• 可以统一之前的各种的形式
• 同时证明了以上的形式是等价的(都是无偏的,但是方差是不等价的)
• 我们可以找一些简单好计算的,只要证明是 γ-just的,就可以直接用来进行PG计算
3.2 Proposal
概念讲完了,引入一个对的第一个proposal
A t ^ ( s 0 : ∞ , a 0 : ∞ ) = Q t ( s 0 : ∞ , a 0 : ∞ ) − b t ( s 0 : t , a 0 : t ) \hat{{{A}_{t}}}({{s}_{0:\infty }},{{a}_{0:\infty }})={{Q}_{t}}({{s}_{0:\infty }},{{a}_{0:\infty }})-{{b}_{t}}({{s}_{0:t}},{{a}_{0:t}}) At^(s0:∞,a0:∞)=Qt(s0:∞,a0:∞)−bt(s0:t,a0:t)
其中 Q t Q_t Qt满足,对所有的 a t , s t a_t, s_t at,st
E s t + 1 : ∞ , a t + 1 : ∞ ∣ s t , a t [ Q t ( s t : ∞ , a t : ∞ ) ] = Q π , γ ( s t , a t ) . {{E}_{{{s}_{t+1:\infty }},{{a}_{t+1:\infty }}|{{s}_{t}},{{a}_{t}}}}[{{Q}_{t}}({{s}_{t:∞}},{{a}_{t:∞}})]={{Q}^{π,γ}}({{s}_{t}},{{a}_{t}}). Est+1:∞,at+1:∞∣st,at[Qt(st:∞,at:∞)]=Qπ,γ(st,at).
再解释一下,我们定义了一个 A ^ \hat A A^,那么他是γ-just的条件是,其中的 Q t Q_t Qt满足Q的期望为我们之前说的Q。
说人话,就是定义的这个 Q t Q_t Qt 应该是对 之前的Q的无偏估计,琢磨琢磨
证明:参考论文附录B
我们看下这个Proposal形式有什么特性
• Q t Q_t Qt应该只和t之后的时间的变量有关(容易理解)
• b t b_t bt 只与t及t之前的变量有关,翻译过来就是 b t b_t bt其实在t时刻应该是已知的、确定的(从而才能在后续求期望时可以为0,达到无偏估计)
论文种指出了以下几种表达是Proposal1的具体表达:
• ∑ l = 0 ∞ ( γ l r t + l ) \sum_{l=0}^{\infty }{(}{{\gamma }^{l}}{{r}_{t+l}}) ∑l=0∞(γlrt+l): 显然,这本身就是带γ折扣Q的一种表达
• Q π , γ ( s t , a t ) {{Q}^{\pi ,\gamma }}({{s}_{t}},{{a}_{t}}) Qπ,γ(st,at):本身也是 Q γ Q^\gamma Qγ的无偏估计
• A π , γ ( s t , a t ) {{A}^{\pi ,\gamma }}({{s}_{t}},{{a}_{t}}) Aπ,γ(st,at):已知 A π , γ ( s t , a t ) = Q π , γ ( s t , a t ) − V π , γ ( s t ) {{A}^{\pi ,\gamma }}({{s}_{t}},{{a}_{t}})={{Q}^{\pi ,\gamma }}({{s}_{t}},{{a}_{t}})-{{V}^{\pi ,\gamma }}({{s}_{t}}) Aπ,γ(st,at)=Qπ,γ(st,at)−Vπ,γ(st),第一项本身也是 Q γ Q^\gamma Qγ的无偏估计,第二项只与t时刻之前的量相关
• r t + γ V π , γ ( s t + 1 ) − V π , γ ( s t ) {{r}_{t}}+\gamma {{V}^{\pi ,\gamma }}({{s}_{t+1}})-{{V}^{\pi ,\gamma }}({{s}_{t}}) rt+γVπ,γ(st+1)−Vπ,γ(st),注意这个表达式的上标中的γ,只有γ折扣的值函数,δ才是γ-just的
3.3 GAE公式
考虑上面γ-just的最后一种形式,记为
δ t V π , γ = r t + γ V π , γ ( s t + 1 ) − V π , γ ( s t ) {{{{\delta }_{t}^{V}}}^{\pi ,\gamma }}={{r}_{t}}+\gamma {{V}^{\pi ,\gamma }}({{s}_{t+1}})-{{V}^{\pi ,\gamma }}({{s}_{t}}) δtVπ,γ=rt+γVπ,γ(st+1)−Vπ,γ(st)
已知 δ t V π , γ {{{{\delta }_{t}^{V}}}^{\pi ,\gamma }} δtVπ,γ是γ-just的。
注意对于上式,并不是所有的V都是 γ-just的,因为有些V函数本身可能是有偏的;同时这里要求V是γ折扣的
那我们对于任意的V函数,该怎么办?
GAE就来了。
记 δ t V = r t + γ V ( s t + 1 ) − V ( s t ) {{\delta }_{t}^{V}}={{r}_{t}}+\gamma V({{s}_{t+1}})-V({{s}_{t}}) δtV=rt+γV(st+1)−V(st)
则记
A ^ t ( 1 ) : = δ t V A ^ t ( 2 ) : = δ t V + γ δ t + 1 V A ^ t ( 3 ) : = δ t V + γ δ t + 1 V + γ 2 δ t + 2 V \begin{aligned} {{\hat{A}}_{t}^{(1)}}&:={{\delta }_{t}^{V}} \\ {{\hat{A}}_{t}^{(2)}}&:={{\delta }_{t}^{V}}+\gamma {{\delta }_{t+1}^{V}} \\ {{\hat{A}}_{t}^{(3)}}&:={{\delta }_{t}^{V}}+\gamma {{\delta }_{t+1}^{V}}+{{\gamma }^{2}}{{\delta }_{t+2}^{V}} \end{aligned} A^t(1)A^t(2)A^t(3):=δtV:=δtV+γδt+1V:=δtV+γδt+1V+γ2δt+2V
可得
A ^ t ( k ) : = ∑ l = 0 k γ l δ t + l V = − V ( s t ) + r t + γ r t + 1 + ⋅ ⋅ ⋅ + γ k − 1 r t + k − 1 + γ k V ( s t + k ) {{\hat{A}}_{t}^{(k)}}:=\sum_{l=0}^{k}{{{\gamma }^{l}}}{{\delta }_{t+l}^{V}}=-V({{s}_{t}})+{{r}_{t}}+γ{{r}_{t+1}}+···+{{γ}_{k−1}}{{r}_{t+k−1}}+{{γ}^{k}}V({{s}_{t+k}}) A^t(k):=l=0∑kγlδt+lV=−V(st)+rt+γrt+1+⋅⋅⋅+γk−1rt+k−1+γkV(st+k)
观察上式,当 k → ∞ k\rightarrow \infty k→∞ 时,
A ^ t ( ∞ ) : = − V ( s t ) + ∑ l = 0 ∞ γ l r t + l {{\hat{A}}_{t}^{(\infty )}}:=-V({{s}_{t}})+\sum_{l=0}^{\infty }{{{γ}^{l}}{{r}_{t+l}}} A^t(∞):=−V(st)+∑l=0∞γlrt+l
也就是说,当 k → ∞ k\rightarrow \infty k→∞ , 是γ-just的
再变形
将所有的累加,则有
3.4. 解释
来,再详细说说为什么GAE是γ折扣的无偏估计
先来看 δ t V π , γ = r t + γ V π , γ ( s t + 1 ) − V π , γ ( s t ) {{{{\delta }_{t}^{V}}}^{\pi ,\gamma }}={{r}_{t}}+\gamma {{V}^{\pi ,\gamma }}({{s}_{t+1}})-{{V}^{\pi ,\gamma }}({{s}_{t}}) δtVπ,γ=rt+γVπ,γ(st+1)−Vπ,γ(st)
明显 δ \delta δ本身是有偏的,因为在计算时 V 很可能不准确
也就是说 A ^ t ( 1 ) {{\hat{A}}_{t}^{(1)}} A^t(1)本身有偏的(因为V不准确), A ^ t ( ∞ ) {{\hat{A}}_{t}^{(\infty )}} A^t(∞)是无偏的(因为看了无穷远,就是MC)
那GAE就是为了在有小Variance有偏和大Variance无偏之间平衡;
显然,当 λ为1时,GAE接近于 ,当 λ为0时,GAE接近于 ,这就是GAE的核心
3.4 碎碎念
我们再来回顾以下GAE的公式,思考一下,为什么需要在求和 A ^ t ( k ) {{\hat{A}}_{t}^{(k)}} A^t(k)的时候要乘上(1-λ)?
考虑一下 A ^ t ( 1 ) → A ^ t ( ∞ ) {{\hat{A}}_{t}^{(1)}}\rightarrow {{\hat{A}}_{t}^{(\infty )}} A^t(1)→A^t(∞)的过程中,是bias ↓ variance ↑ 的一个过程,但是我们在计算GAE的时候,并不是选择了其中的一项,而是是将所有项累和,导致的问题是:这个值会很大,那就有问题了。怎么办,直接除以项数就行了。
计算一下项数
N G A E = 1 + λ ⋅ 1 + λ 2 ⋅ 1 + . . . + λ ∞ ⋅ 1 = 1 ⋅ 1 − λ ∞ 1 − λ → = 1 1 − λ \begin{aligned} {{N}^{GAE}}&=1+\lambda ⋅1+{{\lambda }^{2}}⋅1+...+{{\lambda }^{\infty }}⋅1\\ &=1⋅\frac{1-{{\lambda }^{\infty }}}{1-\lambda }\rightarrow =\frac{1}{1-\lambda } \end{aligned} NGAE=1+λ⋅1+λ2⋅1+...+λ∞⋅1=1⋅1−λ1−λ∞→=1−λ1
BINGO
其他
Bellman公式:
δ t = r t + γ V π ( s t + 1 ) − V π ( s t ) {{\delta }_{t}}={{r}_{t}}+\gamma {{V}^{\pi }}({{s}_{t+1}})-{{V}^{\pi }}({{s}_{t}}) δt=rt+γVπ(st+1)−Vπ(st)
参考
• GAE(Generalized Advantage Estimation)理解及推导 - 知乎
• 【DRL-13】Generalized Advantage Estimator - 知乎
• https://arxiv.org/abs/1506.02438