Actor-Critic方法
Actor-Critic
方法是一个非常重要的policy gradient methods。这一类方法强调的一种整合策略梯度和value-based方法的结构。
什么是“
actor
”和“
critic
”?
- “actor”表示policy update。它被称为actor是因为policies will be applied to take actions。
- “critic”表示policy evaluation或者value estimation。它被称为critic是因为it criticizes the policy by evaluating it。
1. The simplest actor-critic(QAC)
重新回顾policy gradient的思想:
我们可以从这个算法中看到“actor”和“critic”:
- 这个算法对应actor!
- 这个算法估计 q t ( s t , a t ) q_t(s_t,a_t) qt(st,at)对应ctitirc! q t q_t qt是 q π q_\pi qπ的近似
如何得到
q
t
(
s
t
,
a
t
)
q_t(s_t, a_t)
qt(st,at)?到目前为止,我们已经学习过两种方法来估计action values:
现在给出第一个Actor-Critic算法:QAC
对上面算法做一些补充说明:
- critic对应“Sarsa+value function approximation”
- actor对应policy update algorithm.
- 这个算法是on-policy,为什么呢?
- 因为这个policy是stochastic,no need to use techniques like ϵ \epsilon ϵ-greedy
- 这个特殊的actor-critic algorithm有时候也被称为Q Actor-Critic(QAC)。
- 尽管简单,但是该算法揭示了actor-critic方法的核心思想。它可以被扩展到其他算法当中。
2. Advantage actor-critic(A2C)
A2C是QAC的一个推广。基本思想是它在reduce variance过程中引入了一个baseline。
Baseline invariance
首先介绍一个性质,the policy gradient is invariant to an additional baseline:
这里,the additional baseline
b
(
S
)
b(S)
b(S) 是
S
S
S的一个scale function。
两个问题:
- 为什么引入一个新的b(S)它不会发生变化?
- 为什么要关注这个 b ( S ) b(S) b(S),它究竟有什么用?
第一个问题,为什么引入一个新的
b
(
S
)
b(S)
b(S)公式仍然成立?这是因为
细节如下:
第二个问题,为什么这个baseline是有用的?首先把刚才的这个梯度
∇
θ
J
(
θ
)
=
E
[
X
]
\nabla_\theta J(\theta)=\mathbb{E}[X]
∇θJ(θ)=E[X],把这个
E
[
X
]
\mathbb{E}[X]
E[X]写成一个新的变量
X
X
X:
我们有:
- E [ X ] \mathbb{E}[X] E[X]对于 b ( S ) b(S) b(S)是invariant
- 方差
v
a
r
(
X
)
var(X)
var(X)对于
b
(
S
)
b(S)
b(S)不是invariant
- 为什么?因为
t
r
[
v
a
r
(
X
)
]
=
E
[
X
T
−
X
]
−
x
ˉ
T
x
ˉ
tr[var(X)]=\mathbb{E}[X^T-X]-\bar{x}^T\bar{x}
tr[var(X)]=E[XT−X]−xˉTxˉ,并且
当b是非常巨大的时候,对于E的影响也是不一样的。
- 为什么?因为
t
r
[
v
a
r
(
X
)
]
=
E
[
X
T
−
X
]
−
x
ˉ
T
x
ˉ
tr[var(X)]=\mathbb{E}[X^T-X]-\bar{x}^T\bar{x}
tr[var(X)]=E[XT−X]−xˉTxˉ,并且
我们的目标:寻找一个最优的baseline b b b最小化 v a r ( X ) var(X) var(X)
- Benefit:当我们使用一个随机采样去近似 E [ X ] \mathbb{E}[X] E[X]的时候,the estimation variance应当是较小的。
在REINFORCE和QAC算法中:
- 没有baseline
- 或者,我们可以说 b = 0 b=0 b=0,也就是not guaranteed to be a good baseline。
能够最小化方差
v
a
r
(
X
)
var(X)
var(X)的最优baseline应当是,对于任意
s
∈
S
s\in \mathcal{S}
s∈S,有
- 尽管这个baseline是最优的,但是它太复杂了
- 所以,我们可以移除权重 ∣ ∣ ∇ θ ln π ( A ∣ s , θ t ) ∣ ∣ 2 ||\nabla_\theta \ln \pi (A|s, \theta_t)||^2 ∣∣∇θlnπ(A∣s,θt)∣∣2并且选择次优的baseline: b ( s ) = E A ∼ π [ q ( s , A ) ] = v π ( s ) b(s)=\mathbb{E}_{A\sim \pi}[q(s,A)]=v_\pi(s) b(s)=EA∼π[q(s,A)]=vπ(s)这是s的state value!
The algorithm of advantage actor-critic
当 b ( s ) = v π ( s ) b(s)=v_\pi(s) b(s)=vπ(s),
- the gradient-ascent algorithm是:
其中 δ π ( S , A ) ≐ q π ( S , A ) − v π ( S ) \delta_\pi(S,A)\doteq q_\pi(S,A)-v_\pi(S) δπ(S,A)≐qπ(S,A)−vπ(S)被称为advantage function
(为什么称为advantage?其实它描述的是 q π q_\pi qπ和 v π v_\pi vπ之间的差,而 v π v_\pi vπ是 q π q_\pi qπ在某一个状态下它的一个平均值,那么如果对应的某一个action是比这个平均值要大,那就说明这个action肯定是比较好的,所以它是有一定的优势的) - 这个算法的stochastic version是:
进一步地,算法被重新表示为:
这里边其实想要强调的是:
- the step size is proportional to the relative value δ t \delta_t δt,而不是absolute value q t q_t qt,这是更合理的。
- 它能够平衡exploration和exploitation。
更进一步地,the advantage function是由TD error近似: δ t = q t ( s t , a t ) − v t ( s t ) → r t + 1 + γ v t ( s t + 1 ) − v t ( s t ) \delta_t=q_t(s_t,a_t)-v_t(s_t)\rightarrow r_{t+1}+\gamma v_t(s_{t+1})-v_t(s_t) δt=qt(st,at)−vt(st)→rt+1+γvt(st+1)−vt(st)
- 这种近似是reasonable,是因为:
- 这么做的好处是:只需要一个神经网络去近似 v π ( s ) v_\pi(s) vπ(s),而不需要两个网络去近似 q π ( s , a ) q_\pi(s,a) qπ(s,a)和 v π ( s ) v_\pi(s) vπ(s)。
这样,我们就得到了A2C这个算法:
这是一个on-policy的算法,因为策略
π
(
θ
t
)
\pi(\theta_t)
π(θt)是stochastic,不需要使用像
ϵ
\epsilon
ϵ-greedy的这些方法。
3. Off-policy actor-critic
Policy gradient是on-policy,因为the gradient 是 ∇ θ J ( θ ) = E S ∼ η , A ∼ π [ ∗ ] \nabla_\theta J(\theta )=\mathbb{E}_{S\sim \eta, A\sim \pi}[*] ∇θJ(θ)=ES∼η,A∼π[∗]。那么我们是否可以把它转化为off-policy吗?当然是可以的,通过importance sampling就可以。the importance sampling technique is not limited to AC, but also to any algorithm that aims to estimate an expectation.
Illustrative examples
考虑一个随机变量
X
∈
X
=
{
+
1
,
−
1
}
X\in \mathcal{X}=\{+1, -1\}
X∈X={+1,−1}。如果X的概率分布是
p
0
p_0
p0:
p
0
(
X
=
+
1
)
=
0.5
,
p
0
(
X
=
−
1
)
=
0.5
p_0(X=+1)=0.5, p_0(X=-1)=0.5
p0(X=+1)=0.5,p0(X=−1)=0.5那么
X
X
X的expectation是
E
X
∼
p
0
[
X
]
=
(
+
1
)
⋅
0.5
+
(
−
1
)
⋅
0.5
=
0
\mathbb{E}_{X\sim p_0}[X]=(+1)\cdot 0.5+(-1)\cdot 0.5=0
EX∼p0[X]=(+1)⋅0.5+(−1)⋅0.5=0
那么问题是:如何使用一些采样
{
x
i
}
\{x_i\}
{xi}来估计
E
[
X
]
\mathbb{E}[X]
E[X]?考虑两种情况:
第一种情况:
根据
p
0
p_0
p0生成采样
{
x
i
}
\{x_i\}
{xi}:
E
[
x
i
]
=
E
[
X
]
,
v
a
r
[
x
i
]
=
v
a
r
[
X
]
\mathbb{E}[x_i]=\mathbb{E}[X], var[x_i]=var[X]
E[xi]=E[X],var[xi]=var[X]然后,the average value可以收敛到the expectation:
x
ˉ
=
1
n
∑
i
=
1
n
x
i
→
E
[
X
]
,
as
n
→
∞
\bar{x}=\frac{1}{n}\sum_{i=1}^nx_i\rightarrow \mathbb{E}[X], \text{as } n\rightarrow \infty
xˉ=n1i=1∑nxi→E[X],as n→∞因为
E
[
x
ˉ
]
=
E
[
X
]
,
v
a
r
[
x
ˉ
]
=
1
n
v
a
r
[
X
]
\mathbb{E}[\bar{x}]=\mathbb{E}[X], var[\bar{x}]=\frac{1}{n}var[X]
E[xˉ]=E[X],var[xˉ]=n1var[X]
第二种情况:
样本
{
x
i
}
\{x_i\}
{xi}是根据另一个分布
p
1
p_1
p1生成的:
p
1
(
X
=
+
1
)
=
0.8
,
p
1
(
X
=
−
1
)
=
0.2
p_1(X=+1)=0.8, p_1(X=-1)=0.2
p1(X=+1)=0.8,p1(X=−1)=0.2The expectation是
E
X
∼
p
0
[
X
]
=
(
+
1
)
⋅
0.8
+
(
−
1
)
⋅
0.2
=
0.6
\mathbb{E}_{X\sim p_0}[X]=(+1)\cdot 0.8+(-1)\cdot 0.2=0.6
EX∼p0[X]=(+1)⋅0.8+(−1)⋅0.2=0.6如果我们使用样本的平均值,那么
x
ˉ
=
∑
i
=
1
n
1
n
x
i
→
E
X
∼
p
1
[
X
]
=
0.6
≠
E
X
∼
p
0
[
X
]
\bar{x}=\sum_{i=1}^n \frac{1}{n}x_i\rightarrow \mathbb{E}_{X\sim p_1}[X]=0.6\ne \mathbb{E}_{X\sim p_0}[X]
xˉ=i=1∑nn1xi→EX∼p1[X]=0.6=EX∼p0[X]
我们的问题是:是否可以使用
{
x
i
}
∼
p
1
\{x_i\}\sim p_1
{xi}∼p1去估计
E
X
∼
p
0
[
X
]
\mathbb{E}_{X\sim p_0}[X]
EX∼p0[X]?
- 为什么要这样做?因为我们想估计 E A ∼ π [ ∗ ] \mathbb{E}_{A\sim \pi}[*] EA∼π[∗],其中 π \pi π是基于一个behavior policy β \beta β的采样数据的target policy。
- 如何做到这一点?
- 我们不能直接使用 x ˉ \bar{x} xˉ: x ˉ = E X ∼ p 1 [ X ] = 0.6 ≠ E X ∼ p 0 [ X ] \bar{x}=\mathbb{E}_{X\sim p_1}[X]=0.6\ne \mathbb{E}_{X\sim p_0}[X] xˉ=EX∼p1[X]=0.6=EX∼p0[X]
- 我们可以通过
importance sampling technique
来实现。
Importance sampling
最核心的式子:
有了这个式子,我们可以估计
E
X
∼
p
1
[
f
(
X
)
]
\mathbb{E}_{X\sim p_1}[f(X)]
EX∼p1[f(X)]以达到估计
E
X
∼
p
0
[
X
]
\mathbb{E}_{X\sim p_0}[X]
EX∼p0[X]的目的。
那么如何估计
E
X
∼
p
1
[
f
(
X
)
]
\mathbb{E}_{X\sim p_1}[f(X)]
EX∼p1[f(X)]呢?
因此,
f
ˉ
\bar{f}
fˉ又可以用来近似
E
X
∼
p
1
[
f
(
X
)
]
=
E
X
∼
p
0
[
X
]
\mathbb{E}_{X\sim p_1}[f(X)]=\mathbb{E}_{X\sim p_0}[X]
EX∼p1[f(X)]=EX∼p0[X]:
-
p
0
(
x
i
)
p
1
(
x
i
)
\frac{p_0(x_i)}{p_1(x_i)}
p1(xi)p0(xi)被称为importance weight。
- 如果 p 1 ( x 1 ) = p 0 ( x i ) p_1(x_1)=p_0(x_i) p1(x1)=p0(xi),那么importance weight是1,并且 f f f变为了 x ˉ \bar{x} xˉ。
- 如果 p 1 ( x 1 ) ≥ p 0 ( x i ) p_1(x_1)\ge p_0(x_i) p1(x1)≥p0(xi),那么 x i x_i xi在 p 0 p_0 p0下被采样到的概率比在 p 1 p_1 p1下大。这个importance weight ( > 1 ) (>1) (>1)可以强调这个采样的重要性。
也许会问:当
f
=
1
n
∑
i
=
1
n
p
0
(
x
i
)
p
1
(
x
i
)
x
i
f=\frac{1}{n}\sum _{i=1}^n\frac{p_0(x_i)}{p_1(x_i)}x_i
f=n1∑i=1np1(xi)p0(xi)xi,如果我知道
p
0
(
x
)
p_0(x)
p0(x),为什么没有直接计算the expectation?
回答:It is applicable to the case where it it easy to calculate
p
0
(
x
)
p_0(x)
p0(x) given an x, 但是difficult to calculate the expectation。
- 例如,在连续的情况下, p 0 ( x ) p_0(x) p0(x)的表达式是复杂的,或者没有 p 0 ( x ) p_0(x) p0(x)的表达式(例如, p 0 ( x ) p_0(x) p0(x)用一个神经网络表示)。
小结:如果
{
x
i
}
∼
p
1
\{x_i\}\sim p_1
{xi}∼p1,
The theorem of off-policy policy gradient
就像上面的on-policy的情况,我们需要将policy gradient推导到off-policy的情况。
- 假设 β \beta β是the behavior policy,用来生成experience samples
- 我们的目标是用这些samples去更新一个target policy
π
\pi
π,使其可以最小化下面的度量:
其中 d β d_\beta dβ是在policy β \beta β条件下的stationary distribution。
这个目标函数对应的gradient就是下面的定理:
The algorithm of off-policy actor-critic
同样地,The off-policy policy gradient对于一个baseline b ( s ) b(s) b(s)也是invariant。
- 具体地,我们有
- 为了减少估计方差,我们选择
b
(
S
)
=
v
π
(
S
)
b(S)=v_\pi(S)
b(S)=vπ(S)作为baseline,然后得到:
对应的stochastic gradient-ascent algorithm
是
与on-policy case中的情况相似,
然后,这个算法变为
因此
The algorithm of off-policy actor-critic
:
4. Deterministic actor-critic(DPG)
直到现在,用在policy gradient methods中的policies全部都是stochastic
,因为对于所有的
(
s
,
a
)
(s,a)
(s,a),
π
(
a
∣
s
,
θ
)
>
0
\pi(a|s,\theta)>0
π(a∣s,θ)>0。
那么,是否可以在policy gradient methods中使用deterministic policies
呢?首先我们为什么要关心这个deterministic policies
呢,因为它可以处理continuous action
。
表示一个策略的方式:
- 直到现在,一个普通的策略的定义是 π ( a ∣ s , θ ) ∈ [ 0 , 1 ] \pi(a|s, \theta)\in[0,1] π(a∣s,θ)∈[0,1],既可以是stochastic,也可以是deterministic。
- 现在,deterministic policy可以直接定义为
a
=
μ
(
s
,
θ
)
≐
μ
(
s
)
a=\mu (s,\theta)\doteq \mu(s)
a=μ(s,θ)≐μ(s)
- μ \mu μ是从KaTeX parse error: Undefined control sequence: \methcal at position 1: \̲m̲e̲t̲h̲c̲a̲l̲{S}到 A \mathcal{A} A的一个映射
- μ \mu μ可以由,例如,输入是 s s s,输出是 a a a,参数是 θ \theta θ的神经网络表示
- 可以将 μ ( s , θ ) \mu(s,\theta) μ(s,θ)简写为 μ ( s ) \mu(s) μ(s)
The theorem of deterministic policy gradient
之前得到的policy gradient theorem是merely valid for stochastic policies
。如果policy必须是deterministic,那么必须derive a new policy gradient theorem
。
首先,我们要有一个目标函数。consider the metric of average state value in the discounted case: J ( θ ) = E [ v μ ( s ) ] = ∑ s ∈ S d 0 ( s ) v μ ( s ) J(\theta)=\mathbb{E}[v_\mu (s)]=\sum _{s\in \mathcal{S}}d_0(s)v_\mu(s) J(θ)=E[vμ(s)]=s∈S∑d0(s)vμ(s)其中 d 0 ( s ) d_0(s) d0(s)是满足 ∑ s ∈ S d 0 ( s ) = 1 \sum _{s\in \mathcal{S}}d_0(s)=1 ∑s∈Sd0(s)=1的一个概率分布。
- d 0 d_0 d0与 μ \mu μ没有什么关系。在这种情况下,容易计算梯度。
- 在选择
d
0
d_0
d0上,有两种重要而又特殊的情况:
- 第一种,只关心某一个状态,比如有一个任务,每次开始这个任务,都会从这个状态出发,那么其他状态无所谓,只要最大化从这个状态出发它的return就可以了。这个时候令 d 0 ( s 0 ) = 1 d_0(s_0)=1 d0(s0)=1, d 0 ( s ≠ s 0 ) = 0 d_0(s\ne s_0)=0 d0(s=s0)=0,其中 s 0 s_0 s0就是我们感兴趣的特殊出发状态。
- 第二种, d 0 d_0 d0是一个stationary distribution of a behavior policy,that is different from the μ \mu μ。
这与之前stochastic case的一个重要的差异在于:
- the gradient 没有涉及到action A A A的分布(为什么?因为这个action A最后会被替换成 μ ( S ) \mu(S) μ(S))
- 因此,the deterministic policy gradient method是一个off-policy的算法。
The algorithm of deterministic actor-critic
基于policy gradient,the gradient-ascent algorithm就可以最大化
J
(
θ
)
J(\theta)
J(θ):
因为
E
\mathbb{E}
E是不能被计算的,所以使用stochastic gradient来进行代替,对应的stochastic gradient-ascent algorithm就是:
相应对的deterministic actor-critic算法如下:
补充说明:
- 这是一个off-policy implementation,其中the behavior policy β \beta β可能与 μ \mu μ不同
- β \beta β也可以由 μ + noise \mu+\text{noise} μ+noise替代
- 如何选取函数以表示
q
(
s
,
a
,
w
)
q(s,a,w)
q(s,a,w)?
Linear function
: q ( s , a , w ) = ϕ T ( s , a ) w q(s,a,w)=\phi^T(s,a)w q(s,a,w)=ϕT(s,a)w,其中 ϕ ( s , a ) \phi(s,a) ϕ(s,a)是feature vector。Neural function
:deep deterministic policy gradient (DDPG) method。
总结:
到此为止,我们已经学习完成了赵老师的《强化学习的数学原理》课程,虽然可能仍然存在这样那样的问题,但是只要我们继续坚持探索,坚持学习下去,现在所面临或者困惑的问题终将会被解决。后面我们将继续强化学习实践之旅!
内容来源
- 《强化学习的数学原理》 西湖大学工学院 赵世钰 教授主讲
- 《动手学强化学习》 俞勇 著