策略梯度方法Policy Function Approximation
从本文开始,将从value-based methods转向到policy-based methods,从value function approximation到policy function approximation。
Basic idea of policy gradient
到目前,我们的policies都是用tables表示的。如下是所有state的action probabilities,存储在一个table
π
(
a
∣
s
)
\pi(a|s)
π(a∣s),表格中的每个实体由一个state和一个action表示。
我们可以直接访问或改变表格中的一个值。
现在,我们可以把表格改成函数。policies用参数化的函数表示。 π ( a ∣ s , θ ) \pi(a|s,\theta) π(a∣s,θ)其中 θ ∈ R m \theta\in \mathbb{R}^m θ∈Rm是一个参数向量。
- 例如,这个函数可以是一个神经网络,它的输入是 s s s,输出是采取每个action的概率,参数是 θ \theta θ。
- 优势:当state space比较大时,表格化的表示是低效的,尤其是针对存储和泛化能力。
- 函数形式的表示有时也写为 π ( a , s , θ ) , π θ ( a ∣ s ) , π θ ( a , s ) \pi(a,s,\theta), \pi_\theta(a|s), \pi_\theta(a,s) π(a,s,θ),πθ(a∣s),πθ(a,s)
表格形式和函数形式表示的区别:
- 第一,如何定义最优策略?
- 当使用表格表示时,一个策略 π \pi π是最优的,如果它能够使得每个state value最大化。
- 当使用函数表示时,一个策略 π \pi π是最优的,如果它能够使得某个scalar metric最大化。
- 第二,如何获取一个action的概率?
- 当使用表格表示时,在状态 s s s采取 a a a的概率可以直接通过查表的形式得到
- 当使用函数表示时,我们需要在给定函数结构和参数的条件下计算 π ( a ∣ s , θ ) \pi(a|s, \theta) π(a∣s,θ)的值
- 第三,如何更新策略?
- 当使用表格表示时,可以直接在表格中更新策略 π \pi π
- 当使用函数表示时,可以通过改变参数 θ \theta θ的方式更新策略 π \pi π
Policy gradient的基本思路:
- 第一,需要有一个目标函数(metrics or objective functions)去定义最优策略是什么, J ( θ ) J(\theta) J(θ)定义最优策略。
- 第二,基于梯度的方法(gradient-based optimization algorithm)去寻找最优策略: θ t + 1 = θ t + α ∇ θ J ( θ t ) \theta_{t+1}=\theta_t+\alpha \nabla_\theta J(\theta_t) θt+1=θt+α∇θJ(θt)
尽管思路非常简单, 但是当我们回答下面问题的时候,会有一些复杂的地方:
- 第一,怎么选取目标函数?
- 第二,怎么求解目标函数对应的gradients?
Metrics to define optimal policies
有两大类的metrics:
第一大类是the average state value,或者简单地称为average value
。具体地,这个metric定义如下
v
ˉ
π
=
∑
s
∈
S
d
(
s
)
v
π
(
s
)
\bar{v}_\pi=\sum_{s\in \mathcal{S}}d(s)v_\pi(s)
vˉπ=s∈S∑d(s)vπ(s)
- 其中 v ˉ π \bar{v}_\pi vˉπ是state values的加权平均
- d ( s ) > 0 d(s)>0 d(s)>0是对于状态 s s s的权重
- 因为 ∑ s ∈ S d ( s ) = 1 \sum_{s\in \mathcal{S}} d(s)=1 ∑s∈Sd(s)=1,我们可以将 d ( s ) d(s) d(s)解释为一个概率分布。然后,这个metric可以被写为 v ˉ π = E [ v π ( S ) ] \bar{v}_\pi=\mathbb{E}[v_\pi (S)] vˉπ=E[vπ(S)],其中 S ∼ d S\sim d S∼d。
Vector-product(向量内积)的形式:
v
ˉ
π
=
∑
s
∈
S
d
(
s
)
v
π
(
s
)
=
d
T
v
π
\bar{v}_\pi = \sum_{s\in \mathcal{S}}d(s)v_\pi(s)=d^Tv_\pi
vˉπ=s∈S∑d(s)vπ(s)=dTvπ其中
v
π
=
[
.
.
.
,
v
π
(
s
)
,
.
.
.
]
T
∈
R
∣
S
∣
v_\pi=[...,v_\pi (s),...]^T\in \mathbb{R}^{|\mathcal{S} |}
vπ=[...,vπ(s),...]T∈R∣S∣
d
=
[
.
.
.
,
d
(
s
)
,
.
.
.
]
T
∈
R
∣
S
∣
d=[...,d(s),...]^T\in \mathbb{R}^{|\mathcal{S} |}
d=[...,d(s),...]T∈R∣S∣
这种形式对于后面分析它的梯度是非常有帮助的。
如何选择分布
d
d
d?这里有两种情况:
第一种情况是
d
d
d和策略
π
\pi
π没什么关系。
- 这种情况相对简单,因为metric的gradient是容易计算的
- 这种情况下,将 d d d写为 d 0 d_0 d0, v ˉ π \bar{v}_\pi vˉπ写为 v ˉ π 0 \bar{v}_\pi^0 vˉπ0
- 如何选择
d
0
d_0
d0?
- 一个简单的方式是平等地对待所有的states,即选择 d 0 ( s ) = 1 / ∣ S ∣ d_0(s)=1/|\mathcal{S}| d0(s)=1/∣S∣
- 另一个重要的情况是我们只对一个特定的state s 0 s_0 s0感兴趣。例如,episodes在某些任务中总是从相同的state s 0 s_0 s0开始,然后,我们仅仅关注从 s 0 s_0 s0开始的long-term return。在这种情况下 d 0 ( s 0 ) = 1 , d 0 ( s ≠ s 0 ) = 0 d_0(s_0)=1, d_0(s\ne s_0)=0 d0(s0)=1,d0(s=s0)=0
第二种情况是 d d d依赖于策略 π \pi π。
- 这是一种常见的选择,选择
d
d
d为
d
π
(
s
)
d_\pi(s)
dπ(s),即stationary distribution under
π
\pi
π。
- d p i d_pi dpi的一个基本性质是它满足 d π T P π = d π T d_\pi^TP_\pi=d_\pi^T dπTPπ=dπT,其中 P Π P_\Pi PΠ是state transition probability matrix。
- 选择
d
π
d_\pi
dπ的解释:
- 如果一个state在long run中是frequently visited,它是更重要的,应带给与更多权重
- 如果一个state很少被visited,相应的它的权重自然少一些。
第二大类是average one-step reward,或者简称为average reward
.具体地,the metrics是
r
ˉ
π
≐
∑
s
∈
S
d
π
(
s
)
r
π
(
s
)
=
E
[
r
π
(
S
)
]
\bar{r}_\pi\doteq \sum _{s\in \mathcal{S} }d_\pi(s)r_\pi(s)=\mathbb{E}[r_\pi(S)]
rˉπ≐s∈S∑dπ(s)rπ(s)=E[rπ(S)]其中
S
∼
d
π
S\sim d_\pi
S∼dπ。这里
r
π
≐
∑
a
∈
A
π
(
a
∣
s
)
r
(
s
,
a
)
r_\pi\doteq \sum _{a\in \mathcal{A} }\pi(a|s)r(s,a)
rπ≐a∈A∑π(a∣s)r(s,a)是the average of the one-step immediate reward that can be obtained starting from state
s
s
s,并且
r
(
s
,
a
)
=
E
[
R
∣
s
,
a
]
=
∑
r
r
p
(
r
∣
s
,
a
)
r(s,a)=\mathbb{E}[R|s,a]=\sum _r rp(r|s,a)
r(s,a)=E[R∣s,a]=r∑rp(r∣s,a)
- 权重 d π d_\pi dπ是stationary distribution
- 正如它的名称所暗示的, r ˉ π \bar{r}_\pi rˉπ是simply a weighted average of the one-step immediate rewards。
上面average reward的第二种形式:
- 假设一个agent沿着一个给定的policy,生成一个trajectory,它的rewards是 ( R t + 1 , R t + 2 , . . . ) (R_{t+1}, R_{t+2},...) (Rt+1,Rt+2,...)
- 沿着trajectory的average single-step reward是
其中 s 0 s_0 s0是the starting state of the trajectory。
上面的形式还可以继续改写为:
注意:- 当n趋近于无穷的时候,starting state s 0 s_0 s0已经不重要了
- 这两个关于 r ˉ π \bar{r}_\pi rˉπ的等式是相等的。
对上面两个metrics强调几点:
- 这些metrics都是策略
π
\pi
π的函数
- 因为策略 π \pi π是由 θ \theta θ进行参数化的,因此这些metric是 θ \theta θ的函数
- 换句话说,不同的 θ \theta θ可以生成不同的metric values
- 因此,我们可以搜索最优的 θ \theta θ进而最大化这些metrics
- 这些metrics是具有复杂性的,分为两种情况,第一种是
discounted case
, 其中 γ ∈ [ 0 , 1 ) \gamma \in [0,1) γ∈[0,1);另一种情况是undiscounted case
,其中 γ = 1 \gamma=1 γ=1。- 这里我们仅仅考虑the discounted case。
- 直观上,
r
ˉ
π
\bar{r}_\pi
rˉπ是short-sighted因为它很少考虑the immediate rewards,而
v
ˉ
π
\bar{v}_\pi
vˉπ考虑the total reward overall steps。
- 然而,这两个metrics是等价的,具体地,在discounted case,当 γ < 1 \gamma <1 γ<1,有 r ˉ π = ( 1 − γ ) v ˉ π \bar{r}_\pi=(1-\gamma)\bar{v}_\pi rˉπ=(1−γ)vˉπ
做个练习:
回答:首先,分析和理解这样一个metric。
- 它从 S 0 ∼ d S_0\sim d S0∼d开始,然后 A 0 , R 1 , S 1 , A 1 , R 2 , S 2 , . . . . . A_0, R_1, S_1, A_1, R_2, S_2,..... A0,R1,S1,A1,R2,S2,.....
-
A
t
∼
π
(
S
t
)
A_t\sim \pi (S_t)
At∼π(St)并且
R
t
+
1
,
S
t
+
1
∼
p
(
R
t
+
1
∣
S
t
,
A
t
)
,
p
(
S
t
+
1
∣
S
t
,
A
t
)
R_{t+1},S_{t+1}\sim p(R_{t+1}|S_t, A_t), p(S_{t+1}|S_t, A_t)
Rt+1,St+1∼p(Rt+1∣St,At),p(St+1∣St,At)
然后,我们知道这个metric和average value相同,因为
Gradients of metrics
给定一个metric,然后
- 推导它的梯度
- 然后,应用gradient-based methods去优化这个metric。
gradient的计算是policy gradient methods中最复杂的计算部分!
- 首先,我们需要区分不同的metrics v ˉ π , r ˉ π , v ˉ π 0 \bar{v}_\pi, \bar{r}_\pi, \bar{v}_\pi^0 vˉπ,rˉπ,vˉπ0
- 第二,我们需要区分the discounted和undiscounted cases
gradients的计算结果: ∇ θ J ( θ ) = ∑ s ∈ S η ( s ) ∑ a ∈ A ∇ θ π ( a ∣ s , θ ) q π ( s , a ) \nabla _\theta J(\theta )=\sum _{s\in \mathcal{S} }\eta (s)\sum _{a\in \mathcal{A} }\nabla _\theta \pi(a|s, \theta )q_\pi(s,a) ∇θJ(θ)=s∈S∑η(s)a∈A∑∇θπ(a∣s,θ)qπ(s,a)其中
- J ( θ ) J(\theta ) J(θ)可以是 v ˉ π , r ˉ π , v ˉ π 0 \bar{v}_\pi, \bar{r}_\pi, \bar{v}_\pi^0 vˉπ,rˉπ,vˉπ0
- = = == ==可以表示严格相等,近似或者成比例等于
- η \eta η是一个在states下的分布或者权重
怎么得到这个式子呢,一些specific results:
对于上面给出的gradient进行分析。gradient可以写成一个这样紧凑且有用的形式:
其中
S
∼
η
S\sim \eta
S∼η且
A
∼
π
(
A
∣
S
,
θ
)
A\sim \pi(A|S, \theta)
A∼π(A∣S,θ)。
为什么这样的表达式是useful?因为我们可以使用采样去近似这个梯度! ∇ θ J ≈ ∇ θ ln π ( a ∣ s , θ ) q π ( s , a ) \nabla _\theta J\approx \nabla _\theta \ln \pi (a|s, \theta )q_\pi (s,a) ∇θJ≈∇θlnπ(a∣s,θ)qπ(s,a)
如何得到这样的式子?上面式子中的
ln
π
\ln \pi
lnπ中的ln是自然对数。容易得到:
∇
θ
ln
π
(
a
∣
s
,
θ
)
=
∇
θ
π
(
a
∣
s
,
θ
)
π
(
a
∣
s
,
θ
)
\nabla _\theta \ln \pi(a|s,\theta)=\frac{\nabla_ \theta \pi (a|s,\theta)}{\pi(a|s, \theta)}
∇θlnπ(a∣s,θ)=π(a∣s,θ)∇θπ(a∣s,θ)因此
∇
θ
π
(
a
∣
s
,
θ
)
=
π
(
a
∣
s
,
θ
)
∇
θ
ln
π
(
a
∣
s
,
θ
)
\nabla _\theta \pi(a|s,\theta)=\pi(a|s, \theta) \nabla_ \theta \ln\pi (a|s,\theta)
∇θπ(a∣s,θ)=π(a∣s,θ)∇θlnπ(a∣s,θ)然后,有
一些补充说明:因为我们需要计算 ln π ( a ∣ s , θ ) \ln \pi(a|s,\theta) lnπ(a∣s,θ),我们必须确保对于所有 s , a , θ s,a,\theta s,a,θ, π ( a ∣ s , θ ) > 0 \pi(a|s, \theta)>0 π(a∣s,θ)>0
- 通过使用softmax function来满足这一要求,它能将 ( − ∞ . + ∞ ) (-\infty. +\infty) (−∞.+∞)的向量实体归一化到 ( 0 , 1 ) (0,1) (0,1)
- 例如,对于任意向量 x = [ x 1 , . . . , x n ] T x=[x_1,...,x_n]^T x=[x1,...,xn]T, z i = e x i ∑ j = 1 n e x j z_i=\frac{e^{x_i}}{\sum_{j=1}^n e^{x_j}} zi=∑j=1nexjexi其中 z i ∈ ( 0 , 1 ) z_i\in (0,1) zi∈(0,1),并且 ∑ i = 1 n z i = 1 \sum_{i=1}^n z_i=1 ∑i=1nzi=1。
- 然后,有了softmax函数,就可以写出policy function,如下: π ( a ∣ s , θ ) = e h ( s , a , θ ) ∑ a ′ ∈ A e h ( s , a ′ , θ ) \pi(a|s,\theta)=\frac{e^{h(s,a,\theta)}} {\sum_{a' \in \mathcal{A}} e^{h(s,a',\theta)}} π(a∣s,θ)=∑a′∈Aeh(s,a′,θ)eh(s,a,θ)其中 h ( s , a , θ ) h(s,a,\theta) h(s,a,θ)是另一个函数
需要强调的几点:
Gradient-ascent algorithm (REINFORCE)
现在,给出第一个policy gradient algorithm以发现最优策略!
- gradient-ascent算法最大化
J
(
θ
)
J(\theta)
J(θ):
- 因为上面式子有一个E,涉及分布情况,是不能用的,所以使用一个stochastic梯度代替真实的梯度:
实际上,这里的式子也是不能用的,因为这里有一个 q π q_\pi qπ,是策略 π \pi π所对应的真实的action value。那怎么办呢? - 进一步地,因为
q
π
q_\pi
qπ是不知道的,所以用一个方法来近似或对
q
π
q_\pi
qπ进行采样,把
q
π
q_\pi
qπ换成
q
t
q_t
qt:
这里有不同的方法去近似 q π ( s t , a t ) q_\pi(s_t, a_t) qπ(st,at)- 第一种方法,基于Monte-Carlo方法:REINFORCE
- 其他方法,例如TD方法,这就引出了Actor-Critic方法
补充几个非常重要的说明:
- 如何采样?
- 如何采样
S
S
S呢?
- S ∼ d S\sim d S∼d,其中the distribution d d d是一个基于 π \pi π的long-run behavior
- 如何采样
A
A
A呢?
- A ∼ π ( A ∣ S , θ ) A\sim \pi(A|S, \theta) A∼π(A∣S,θ),因此在 s t s_t st,应该根据当前的 π ( θ t ) \pi(\theta_t) π(θt), 采样 a t a_t at
- 因此,这个policy gradient method是on-policy。
- 如何采样
S
S
S呢?
- 怎么去理解这个算法?
因为 ∇ θ ln π ( a t ∣ s t , θ t ) = ∇ θ π ( a t ∣ s t , θ t ) π ( a t ∣ s t , θ t ) \nabla _\theta \ln \pi(a_t|s_t,\theta_t)=\frac{\nabla_ \theta \pi (a_t|s_t,\theta_t)}{\pi(a_t|s_t, \theta_t)} ∇θlnπ(at∣st,θt)=π(at∣st,θt)∇θπ(at∣st,θt)算法重写为:
因此,算法的重要表达形式为: θ t + 1 = θ t + α β t ∇ θ π ( a t ∣ s t , θ t ) \theta_{t+1}=\theta_t+\alpha \beta_t \nabla_\theta \pi(a_t|s_t, \theta_t) θt+1=θt+αβt∇θπ(at∣st,θt)
这个式子是一个最大化 π ( a t ∣ s t , θ ) \pi(a_t|s_t,\theta) π(at∣st,θ)的梯度上升算法:
直观上:当 α β t \alpha\beta_t αβt是足够小的时候- 如果 β t > 0 \beta_t >0 βt>0,选择 ( s t , a t ) (s_t,a_t) (st,at)的概率在增加: π ( a t ∣ s t , θ t + 1 ) > π ( a t ∣ s t , θ t ) \pi(a_t|s_t,\theta_{t+1})>\pi(a_t|s_t, \theta_t) π(at∣st,θt+1)>π(at∣st,θt) β t \beta_t βt越大,增加就越多。
- 如果
β
t
<
0
\beta_t <0
βt<0, 那么
π
(
a
t
∣
s
t
,
θ
t
+
1
)
<
π
(
a
t
∣
s
t
,
θ
t
)
\pi(a_t|s_t,\theta_{t+1})<\pi(a_t|s_t, \theta_t)
π(at∣st,θt+1)<π(at∣st,θt)
数学上,当 θ t + 1 − θ t \theta_{t+1}-\theta_t θt+1−θt足够小的时候,有
当 θ t + 1 − θ t \theta_{t+1}-\theta_t θt+1−θt趋近于0的时候,近似符号就变为等号,当它们之间的差别越大的时候,这种近似就变的越来越不精确。将上面的梯度上升算法代入,得到:
回到刚才的结论,也就是当
β
t
\beta_t
βt为正或者为负的时候会出现一些结果:
这里的
β
t
\beta_t
βt能够很好地平衡exploration和exploitation。
- 首先,
β
t
\beta_t
βt的分子是
q
t
(
s
t
,
a
t
)
q_t(s_t,a_t)
qt(st,at),因此它正比于
q
t
(
s
t
,
a
t
)
q_t(s_t,a_t)
qt(st,at)
- 如果 q t ( s t , a t ) q_t(s_t,a_t) qt(st,at)较大,则 β t \beta_t βt也是较大的
- 因此,该算法倾向于enhance actions with greater values。
- 第二,
β
t
\beta_t
βt是反比于
π
(
a
t
∣
s
t
,
θ
t
)
\pi(a_t|s_t, \theta_t)
π(at∣st,θt)
- 如果 π ( a t ∣ s t , θ t ) \pi(a_t|s_t, \theta_t) π(at∣st,θt)较小,则 β t \beta_t βt也是较小的
- 因此,该算法试图explore actions that have low probabilities。
REINFORCE algorithm的来源
回到刚才的算法上,使用
q
t
q_t
qt近似
q
π
q_\pi
qπ:
- 如果,通过Monte Carlo估计的方法近似 q π ( s t , a t ) q_\pi(s_t, a_t) qπ(st,at),这个算法有一个特定的名称,即REINFORCE.
- REINFORCE是最早和最简单的policy gradient算法。
- 许多其他的policy gradient 算法,例如actor-critic方法,可以从REINFORCE扩展中得出。
REINFORCE伪代码:
内容来源
- 《强化学习的数学原理》西湖大学工学院赵世钰教授 主讲
- 《动手学强化学习》 俞勇 著