Actor-Critic
概述
MC策略梯度方法使用了收获作为状态价值的估计,它虽然是无偏的,但是噪声却比较大,也就是变异性(方差)较高。如果我们能够相对准确地估计状态价值,用它来指导策略更新,那么是不是会有更好的学习效果呢?这就是Actor-Critic策略梯度的主要思想。
Actor-Critic的字面意思是“演员-评论”,相当于演员在演戏的同时,有评论家指点,继而演员演得越来越好。即使用Critic来估计行为价值:
Q w ( s , a ) ≈ Q π θ ( s , a ) Q_w(s,a)\approx Q^{\pi_\theta}(s,a) Qw(s,a)≈Qπθ(s,a)
基于Actor-Critic策略梯度学习分为两部分内容:
1.Critic:更新action-value函数的参数w。
2.Actor:按照Critic得到的价值,引导策略函数参数 θ \theta θ的更新。
∇ θ J ( θ ) ≈ E π θ [ ∇ θ log π θ ( s , a ) Q w ( s , a ) ] \nabla_\theta J(\theta)\approx E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)Q_w(s,a)] ∇θJ(θ)≈Eπθ[∇θlogπθ(s,a)Qw(s,a)]
Δ θ = α ∇ θ log π θ ( s , a ) Q w ( s , a ) \Delta \theta = \alpha \nabla_\theta \log \pi_\theta(s,a)Q_w(s,a) Δθ=α∇θlogπθ(s,a)Qw(s,a)
可以看出,Critic做的事情其实是我们已经见过的:策略评估,他要告诉个体,在由参数 θ \theta θ确定的策略 π θ \pi_\theta πθ到底表现得怎么样。
Compatible Function Approximation
近似策略梯度的方法引入了Bias,从而得到的策略梯度不一定能最后找到较好的解决方案,例如当近似价值函数引起状态重名的特征时。
幸运的是,如果我们小心设计近似函数,是可以避免引入bias的。该近似函数需要满足下面两个条件:
- 近似价值函数的梯度完全等同于策略函数对数的梯度,即不存在重名情况:
∇ w Q w ( s , a ) = ∇ θ log π θ ( s , a ) \nabla_w Q_w(s,a)=\nabla_\theta \log \pi_\theta(s,a) ∇wQw(s,a)=∇θlogπθ(s,a)
- 价值函数参数w使得均方差最小:
ϵ = E π θ [ ( Q π θ ( s , a ) − Q w ( s , a ) ) 2 ] \epsilon = E_{\pi_\theta}[(Q^{\pi_\theta}(s,a)-Q_w(s,a))^2] ϵ=Eπθ[(Qπθ(s,a)−Qw(s,a))2]
符合这两个条件,则认为策略梯度是准确的,即:
∇ θ J ( θ ) = E π θ [ ∇ θ log π θ ( s , a ) Q w ( s , a ) ] \nabla_\theta J(\theta)= E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)Q_w(s,a)] ∇θJ(θ)=Eπθ[∇θlogπθ(s,a)Qw(s,a)]
Reducing Variance Using Baseline
除了bias之外,variance也是需要考虑的方面。
我们从策略梯度里抽出一个基准函数B(s),要求这一函数仅与状态有关,而与行为无关,因而不改变梯度本身。
E π θ [ ∇ θ log π θ ( s , a ) B ( s ) ] = ∑ s ∈ S d π θ ( s ) ∑ a ∈ A ∇ θ π θ ( s , a ) B ( s ) = ∑ s ∈ S d π θ ( s ) B ( s ) ∇ θ ∑ a ∈ A π θ ( s , a ) = 0 E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)B(s)] = \sum_{s\in S} d^{\pi_\theta}(s)\sum_{a\in A}\nabla_\theta \pi_\theta(s,a)B(s)\\= \sum_{s\in S} d^{\pi_\theta}(s)B(s) \nabla_\theta \sum_{a\in A} \pi_\theta(s,a) = 0 Eπθ[∇θlogπθ(s,a)B(s)]=s∈S∑dπθ(s)a∈A∑∇θπθ(s,a)B(s)=s∈S∑dπθ(s)B(s)∇θa∈A∑πθ(s,a)=0
由于B(s)与行为无关,可以将其从针对行为a的求和中提出来,同时我们也可以把梯度从求和符号中提出来,而最后一个求和项:策略函数针对所有行为的求和,根据策略函数的定义,这里的结果肯定是1。而常数的梯度是0,因此总的结果等于0。
原则上,和行为无关的函数都可以作为B(s)。一个很好的B(s)就是基于当前状态的状态价值函数: V π θ ( s ) V^{\pi_\theta}(s) Vπθ(s)。
所以,我们可以用一个advantage function来改写策略梯度:
A π θ ( s , a ) = Q π θ ( s , a ) − V π θ ( s ) A^{\pi_\theta}(s,a)=Q^{\pi_\theta}(s,a)-V^{\pi_\theta}(s) Aπθ(s,a)=Qπθ(s,a)−Vπθ(s)
上式的现实意义在于评估当个体采取行为a离开s状态时,究竟比该状态s总体平均价值要好多少?
∇ θ J ( θ ) = E π θ [ ∇ θ log π θ ( s , a ) A π θ ( s , a ) ] \nabla_\theta J(\theta)= E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)A^{\pi_\theta}(s,a)] ∇θJ(θ)=Eπθ[∇θlogπθ(s,a)Aπθ(s,a)]
advantage function可以明显减少状态价值的variance。(通俗的说法就是A的值有正有负,不像Q和V都是正值。)
因此,现在Critic的任务就改为估计advantage function。
在这种情况下,我们需要两个近似函数也就是两套参数,一套用来近似状态价值函数,一套用来近似行为价值函数。即:
V v ( s ) ≈ V π θ ( s ) V_v(s)\approx V^{\pi_\theta}(s) Vv(s)≈Vπθ(s)
Q w ( s , a ) ≈ Q π θ ( s , a ) Q_w(s,a)\approx Q^{\pi_\theta}(s,a) Qw(s,a)≈Qπθ(s,a)
A ( s , a ) = Q w ( s , a ) − V v ( s ) A(s,a) = Q_w(s,a) - V_v(s) A(s,a)=Qw(s,a)−Vv(s)
不过实际操作时,我们并不需要计算两个近似函数。这里以TD学习为例说明一下。
根据定义,TD误差 δ π θ \delta^{\pi_\theta} δπθ可以根据真实的状态价值函数 V π θ ( s ) V^{\pi_\theta}(s) Vπθ(s)算出:
δ π θ = r + γ V π θ ( s ′ ) − V π θ ( s ) \delta^{\pi_\theta} = r + \gamma V^{\pi_\theta}(s') - V^{\pi_\theta}(s) δπθ=r+γVπθ(s′)−Vπθ(s)
因为:
E π θ [ δ π θ ∣ s , a ] = E π θ [ r + γ V π θ ( s ′ ) ∣ s , a ] − V π θ ( s ) = Q π θ ( s , a ) − V π θ ( s ) = A π θ ( s , a ) E_{\pi_\theta}[\delta^{\pi_\theta} | s,a] = E_{\pi_\theta}[r + \gamma V^{\pi_\theta}(s') | s,a] - V^{\pi_\theta}(s)= Q^{\pi_\theta}(s,a) - V^{\pi_\theta}(s) = A^{\pi_\theta}(s,a) Eπθ[δπθ∣s,a]=Eπθ[r+γVπθ(s′)∣s,a]−Vπθ(s)=Qπθ(s,a)−Vπθ(s)=Aπθ(s,a)
可见 δ π θ \delta^{\pi_\theta} δπθ就是 A π θ ( s , a ) A^{\pi_\theta}(s,a) Aπθ(s,a)的一个无偏估计。
因此,我们就可以使用TD误差来计算策略梯度:
∇ θ J ( θ ) = E π θ [ ∇ θ log π θ ( s , a ) δ π θ ] \nabla_\theta J(\theta)= E_{\pi_\theta}[\nabla_\theta \log \pi_\theta(s,a)\delta^{\pi_\theta}] ∇θJ(θ)=Eπθ[∇θlogπθ(s,a)δπθ]
实际运用时,我们使用一个近似的TD误差,即用状态函数的近似函数来代替实际的状态函数:
δ v = r + γ V v ( s ′ ) − V v ( s ) \delta_v = r + \gamma V_v(s') - V_v(s) δv=r+γVv(s′)−Vv(s)
这也就是说,我们只需要一套参数描述状态价值函数,而不再需要行为价值函数了。
上述方法不仅可用于TD方法,还可用于MC方法等,以下不加讨论的给出如下结论:
KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲ \nabla_\theta …
参考
https://zhuanlan.zhihu.com/p/51652845
强化学习这都学不会的话,咳咳,你过来下!
https://mp.weixin.qq.com/s/ce9W3FbLdsqAEyvw6px_RA
Actor Critic——一个融合基于策略梯度和基于值优点的强化学习算法
Integrating Learning and Planning
前面的章节主要介绍了Model-Free RL,下面将讲一下Model-Based RL,主要包括如下内容:
-
如何从经历中直接学习Model。
-
如何基于模型来进行Planning(规划)。
-
如何将“学习”和“规划”整合起来。
|
上面两图形象的说明了Model-Free RL(左图)和Model-Based RL(右图)的差别。
Model-Based RL
上图比较好的说明了模型学习在整个RL学习中的位置和作用。
我们首先看一下Model的定义:Model是一个参数化(参数为 η \eta η)的MDP<S, A, P, R>,其中假定:状态空间S和行为空间A是已知的,则 M = < P η , R η > M=<P_\eta, R_\eta> M=<Pη,Rη>,其中 P η ≈ P , R η ≈ R P_\eta \approx P, R_\eta \approx R Pη≈P,Rη≈R。则:
S t + 1 ∼ P η ( S t + 1 ∣ S t , A t ) S_{t+1} \sim P_\eta (S_{t+1} | S_t, A_t) St+1∼Pη(St+1∣St,At)
R t + 1 = R η ( R t + 1 ∣ S t , A t ) R_{t+1} = R_\eta (R_{t+1} | S_t, A_t) Rt+1=Rη(Rt+1∣St,At)
通常我们需要如下的假设,即状态转移函数和奖励函数是条件独立的:
P [ S t + 1 , R t + 1 ∣ S t , A t ] = P [ S t + 1 ∣ S t , A t ] P [ R t + 1 ∣ S t , A t ] P[S_{t+1}, R_{t+1} | S_t, A_t] = P[S_{t+1} | S_t, A_t] P[R_{t+1} | S_t, A_t] P[St+1,Rt+1∣St,At]=P[St+1∣St,At]P[Rt+1∣St,At]
Model Learning
所谓Model Learning是指:从experience { S 1 , A 1 , R 2 , … , S T } \{S_1, A_1, R_2, \dots, S_T\} {S1,A1,R2,…,ST},学习
S 1 , A 1 → R 2 , S 2 S_1, A_1\to R_2,S_2 S1,A1→R2,S2
S 2 , A 2 → R 3 , S 3 S_2, A_2\to R_3,S_3 S2,A2→R3,S3
… \dots …
S T − 1 , A T − 1 → R T , S T S_{T-1}, A_{T-1}\to R_T,S_T ST−1,AT−1→RT,ST
这实际上是一个监督学习的问题。其中, s , a → r s,a\to r s,a→r是一个回归问题(regression problem),而 s , a → s ′ s,a\to s' s,a→s′是一个密度估计问题(density estimation problem)。
选择一个损失函数,比如均方差,KL散度等,优化参数 η \eta η来最小化经验损失(empirical loss)。所有监督学习相关的算法都可以用来解决上述两个问题。
根据使用的算法不同,可以有如下多种模型:查表式(Table lookup Model)、线性期望模型(Linear Expectation Model)、线性高斯模型(Linear Gaussian Model)、高斯决策模型(Gaussian Process Model)、和深信度神经网络模型(Deep Belief Network Model)等。
这里主要以查表模型来解释模型的构建。