第八节——策略梯度下降
1.策略梯度的相关概念
策略的函数表示
π ( a ∣ s , θ ) \pi(a|s,\theta) π(a∣s,θ)
函数代替表格方法的好处:
当状态空间很大的时候,表格方法不能穷尽的表示所有状态,会造成计算效率低下。
表格形式和函数形式的区别:
- 定义最优策略的区别
- 表格法: π ∗ : V π ( S ) ≤ V π ∗ ( S ) \pi^*:V_{\pi}(S) \le V_{\pi^*}(S) π∗:Vπ(S)≤Vπ∗(S)
- 函数法:定义一个标量目标函数,再优化这个函数
- 判断一个动作发生的可能
- 表格法:查表
- 函数法:通过函数计算
- 更新策略的不同
- 表格法:直接在表格里改
- 函数法:通过更新函数中的参数 θ \theta θ
策略梯度定义
-
取 J ( θ ) J(\theta) J(θ)为目标函数
-
采用梯度下降来优化算法
θ t + 1 = θ t + α ∇ θ J ( θ t ) \theta_{t+1}=\theta_{t}+\alpha \nabla_{\theta}J(\theta_t) θt+1=θt+α∇θJ(θt)
2.状态平均值average state value
参数方法与向量方法表示
v
ˉ
π
=
∑
s
∈
S
d
(
s
)
v
π
(
s
)
=
d
T
v
π
\bar{v}_{\pi}=\sum _{s \in S}d(s)v_{\pi}(s)=d^Tv_{\pi}
vˉπ=s∈S∑d(s)vπ(s)=dTvπ
-
v ˉ π \bar{v}_{\pi} vˉπ是state value的加权平均
-
d ( s ) ≥ 0 d(s) \ge 0 d(s)≥0是权重
-
∑ s ∈ S d ( s ) = 1 \sum_{s\in S}d(s) = 1 ∑s∈Sd(s)=1表示d(s)为状态s被选中的概率,此时目标函数可写为
v ˉ π = E [ v π ( S ) ] \bar{v}_{\pi}=\mathbb{E}[v_{\pi}(S)] vˉπ=E[vπ(S)]
概率分布d的选取
- d独立于策略
π
\pi
π
- 认为所有状态均匀分布,即认为每一个状态都是同等重要的
- 可能特别关心某个状态
- d依赖于策略
π
\pi
π
- 此时d为stationary distribution
- 访问多的状态,权重 d π ( s ) d_\pi(s) dπ(s)会大
- 反之,则小
- 此时d为stationary distribution
3.平均单步奖励值average one-step reward
第一种表现形式:
r
ˉ
π
≐
∑
s
∈
S
d
π
(
s
)
r
π
(
s
)
=
E
[
r
π
(
S
)
]
r
π
(
s
)
≐
∑
a
∈
A
π
(
a
∣
s
)
r
(
s
,
a
)
\begin{align} \bar{r}_{\pi} &\doteq \sum_{s \in S}d_{\pi}(s)r_{\pi}(s)=\mathbb{E}[r_{\pi}(S)] \\ r_{\pi}(s) &\doteq \sum_{a \in A}\pi(a|s)r(s,a) \end{align}
rˉπrπ(s)≐s∈S∑dπ(s)rπ(s)=E[rπ(S)]≐a∈A∑π(a∣s)r(s,a)
其中,
- r ( s , a ) r(s,a) r(s,a)是当前的奖励值
- d π d_{\pi} dπ是stationary distribution
第二种表现形式:
有一个策略,根据该策略形成了一个轨迹,并沿着该轨迹得到很多奖励
(
R
t
+
1
,
R
t
+
2
,
.
.
.
.
.
)
(R_{t+1},R_{t+2,.....})
(Rt+1,Rt+2,.....),可以表示为
lim
n
→
∞
1
n
[
∑
k
=
1
n
R
t
+
k
∣
S
=
s
0
]
=
lim
n
→
∞
1
n
[
∑
k
=
1
n
R
t
+
k
]
\lim_{n\to \infty} \frac{1}{n}[\sum_{k=1}^{n}R_{t+k}|S=s_0]=\lim_{n\to \infty} \frac{1}{n}[\sum_{k=1}^{n}R_{t+k}]
n→∞limn1[k=1∑nRt+k∣S=s0]=n→∞limn1[k=1∑nRt+k]
以上式子表示,从一个状态出发,走无穷多步的平均,走了无穷多步其实和初始状态没有什么关系了
4.目标函数的梯度
∇ θ J ( θ ) = ∑ s ∈ S η ( s ) ∑ a ∈ A ∇ θ π ( a ∣ s , θ ) q π ( s , a ) \nabla_{\theta}J(\theta)=\sum_{s \in S}\eta(s)\sum_{a \in 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 η在不同情况下会呈现出不同的分布
以上式子还可以写成以下,这个是真实的梯度
∇
θ
J
(
θ
)
=
E
[
∇
θ
ln
π
(
A
∣
S
,
θ
)
q
π
(
S
,
A
)
]
\nabla_{\theta}J(\theta)=\mathbb{E}[\nabla_{\theta} \ln \pi(A|S,\theta)q_{\pi}(S,A)]
∇θJ(θ)=E[∇θlnπ(A∣S,θ)qπ(S,A)]
其中,
- 由于对数函数的性质,
π
(
A
∣
S
,
θ
)
>
0
\pi(A|S,\theta)>0
π(A∣S,θ)>0
- 为了实现以上性质,使用softmax函数将其归一化
- 使用神经网络来实现
- 该式是随机且具有探索性的
使用随机梯度代替真实梯度
∇
θ
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)
5.梯度上升算法
定义
-
梯度上升的算法做的事情是最大化 J ( θ ) J(\theta) J(θ)
θ t + 1 = θ t + α ∇ θ J ( θ ) = θ t + α E [ ∇ θ ln π ( A ∣ S , θ ) q π ( S , A ) ] \begin{align} \theta_{t+1} &=\theta_{t}+\alpha \nabla_{\theta}J(\theta) \\ &=\theta_{t}+\alpha \mathbb{E}[\nabla_{\theta}\ln\pi(A|S,\theta)q_{\pi}(S,A)] \end{align} θt+1=θt+α∇θJ(θ)=θt+αE[∇θlnπ(A∣S,θ)qπ(S,A)] -
由于以上是真实梯度,无法得到,用随机梯度代替,故有以下式子
θ t + 1 = θ t + α ∇ θ ln π ( a t ∣ s t , θ t ) q π ( s t , a t ) \theta_{t+1} =\theta_{t}+\alpha\nabla_{\theta}\ln\pi(a_t|s_t,\theta_t)q_{\pi}(s_t,a_t) θt+1=θt+α∇θlnπ(at∣st,θt)qπ(st,at)- 对于无法计算的
q
π
(
s
t
,
a
t
)
q_{\pi}(s_t, a_t)
qπ(st,at)
- 使用蒙特卡洛方法,得到一个episode,用这个episode里的 q t ( s , a ) q_t(s,a) qt(s,a)来估计 q π ( s t , a t ) q_{\pi}(s_t, a_t) qπ(st,at)
- 使用TD等方法
- 对于无法计算的
q
π
(
s
t
,
a
t
)
q_{\pi}(s_t, a_t)
qπ(st,at)
对于采样问题
- 对于S来说,其分布满足在策略 π \pi π下的long run behavior
- 对于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
- 故该策略是on-policy算法
理解该算法
首先有
∇
θ
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
+
α
∇
θ
ln
π
(
a
t
∣
s
t
,
θ
t
)
q
π
(
s
t
,
a
t
)
=
θ
t
+
α
(
q
t
(
s
t
,
a
t
)
π
(
a
t
∣
s
t
,
θ
t
)
)
⏟
β
t
∇
θ
π
(
a
t
∣
s
t
,
θ
t
)
\begin{align} \theta_{t+1} &=\theta_{t}+\alpha\nabla_{\theta}\ln\pi(a_t|s_t,\theta_t)q_{\pi}(s_t,a_t) \\ &= \theta_{t}+\alpha \underbrace{(\frac{q_t(s_t,a_t)}{\pi(a_t|s_t,\theta_t)})}_{\beta_t} \nabla_{\theta}\pi(a_t|s_t,\theta_t) \end{align}
θt+1=θt+α∇θlnπ(at∣st,θt)qπ(st,at)=θt+αβt
(π(at∣st,θt)qt(st,at))∇θπ(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)
- 当 β t > 0 \beta_t > 0 βt>0, π ( a t + 1 ∣ s t , θ t + 1 ) > π ( a t ∣ s t , θ t ) \pi(a_{t+1}|s_t,\theta_{t+1}) > \pi(a_t|s_t,\theta_t) π(at+1∣st,θt+1)>π(at∣st,θt)
- 当 β t < 0 \beta_t < 0 βt<0, π ( a t + 1 ∣ s t , θ t + 1 ) < π ( a t ∣ s t , θ t ) \pi(a_{t+1}|s_t,\theta_{t+1}) < \pi(a_t|s_t,\theta_t) π(at+1∣st,θt+1)<π(at∣st,θt)
故 β t \beta_t βt可以很好的平衡算法的探索性和利用性
REINFORCE算法
θ
t
+
1
=
θ
t
+
α
∇
θ
ln
π
(
a
t
∣
s
t
,
θ
t
)
q
t
(
s
t
,
a
t
)
\theta_{t+1} =\theta_{t}+\alpha\nabla_{\theta}\ln\pi(a_t|s_t,\theta_t)q_{t}(s_t,a_t)
θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at)
即用
q
t
(
s
t
,
a
t
)
近似
q
π
(
s
t
,
a
t
)
q_{t}(s_t,a_t)近似q_{\pi}(s_t,a_t)
qt(st,at)近似qπ(st,at)