前言
资格迹是强化学习的基本方法之一,几乎所有用时序差分的算法都可以与资格迹结合起来,从而可以获得一个更加有效且具一般性的方法。
已知强化学习的本质是找最优策略 π ∗ \pi_* π∗,最优策略 π ∗ \pi_* π∗等价于最优动作 π ∗ ( s ) \pi_*(s) π∗(s),最优动作 π ∗ ( s ) \pi_*(s) π∗(s)可以由最优状态价值 v ∗ ( s ) v_*(s) v∗(s)(或者最优行动价值 q ∗ ( s , a ) q_*(s,a) q∗(s,a))决定。在基于Approximation的方法中,求解 v ∗ ( s ) v_*(s) v∗(s)或者是 q ∗ ( s , a ) q_*(s,a) q∗(s,a)表示为近似预测函数 v ^ ( s , w ) \hat{v}(s,w) v^(s,w)或者 q ^ ( s , a , w ) \hat{q}(s,a,w) q^(s,a,w)。
已知线性近似的状态价值函数可以写作权重向量
w
w
w和状态向量
x
(
s
)
x(s)
x(s)的内积。
v
^
(
s
,
w
)
=
w
T
x
(
s
)
=
∑
i
=
1
d
w
i
x
i
(
s
)
\hat{v}(s,w)=w^Tx(s)=\displaystyle\sum_{i=1}^dw_ix_i(s)
v^(s,w)=wTx(s)=i=1∑dwixi(s)
根据MC算法的随机梯度下降(stochastic gradient-descent,SGD)方法求解权重
w
w
w
w
t
+
1
=
w
t
+
α
[
G
t
−
v
^
(
S
t
,
w
t
)
]
∇
v
^
(
S
t
,
w
t
)
w_{t+1}=w_t+\alpha[G_t-\hat{v}(S_t,w_t)]\nabla\hat{v}(S_t,w_t)
wt+1=wt+α[Gt−v^(St,wt)]∇v^(St,wt)在求
w
w
w的过程中,
α
\alpha
α,
G
t
G_t
Gt,
∇
v
^
(
S
t
,
w
t
)
\nabla\hat{v}(S_t,w_t)
∇v^(St,wt)都有自己的优化方法。
·
α
\alpha
α是步长,如果
G
t
−
v
^
(
S
t
,
w
t
)
G_t-\hat{v}(S_t,w_t)
Gt−v^(St,wt)太大,则其
α
\alpha
α要变小。
·
G
t
G_t
Gt的计算可以通过
λ
\lambda
λ-return方法。
·
v
^
(
S
t
,
w
t
)
\hat{v}(S_t,w_t)
v^(St,wt)可以用资格迹来优化,资格迹就是优化后的函数微分。
λ \lambda λ - return
λ
\lambda
λ - return提供了一个新的方式来估算
G
t
G_t
Gt,新的估计定义为
G
t
λ
G_t^{\lambda}
Gtλ。
前面我们定义了n步回报
G
t
:
t
+
n
=
R
t
+
1
+
γ
R
t
+
1
.
.
.
+
γ
n
−
1
R
t
+
n
+
γ
n
V
t
+
n
−
1
(
S
t
+
n
)
G_{t:t+n}=R_{t+1}+\gamma R_{t+1}...+\gamma^{n-1}R_{t+n}+\gamma^nV_{t+n-1}(S_{t+n})
Gt:t+n=Rt+1+γRt+1...+γn−1Rt+n+γnVt+n−1(St+n)其中
n
≥
1
,
0
≤
t
<
T
−
n
n\geq1,0\leq t<T-n
n≥1,0≤t<T−n。对于任意参数化的函数逼近,可以将其一般化为:
G
t
:
t
+
n
=
R
t
+
1
+
γ
R
t
+
1
.
.
.
+
γ
n
−
1
R
t
+
n
+
γ
n
V
t
+
n
−
1
(
S
t
+
n
,
w
t
+
n
−
1
)
,
0
≤
t
≤
T
−
n
G_{t:t+n}=R_{t+1}+\gamma R_{t+1}...+\gamma^{n-1}R_{t+n}+\gamma^nV_{t+n-1}(S_{t+n},w_{t+n-1}),0\leq t\leq T-n
Gt:t+n=Rt+1+γRt+1...+γn−1Rt+n+γnVt+n−1(St+n,wt+n−1),0≤t≤T−n此时
G
t
λ
G_t^\lambda
Gtλ为后面所有
G
t
:
t
+
n
G_{t:t+n}
Gt:t+n的加权平均值。
{
G
t
λ
=
(
1
−
λ
)
∑
n
=
1
∞
λ
n
−
1
G
t
:
t
+
n
,
c
o
n
t
i
n
u
i
n
g
t
a
s
k
s
G
t
λ
=
(
1
−
λ
)
∑
n
=
1
T
−
t
−
1
λ
n
−
1
G
t
:
t
+
n
+
λ
T
−
t
−
1
G
t
,
e
p
i
s
o
d
i
c
t
a
s
k
s
\begin{cases} G_t^\lambda=(1-\lambda)\displaystyle\sum_{n=1}^\infty\lambda^{n-1}G_{t:t+n},continuing\text{ }tasks\\ \\ G_t^\lambda=(1-\lambda)\displaystyle\sum_{n=1}^{T-t-1}\lambda^{n-1}G_{t:t+n}+\lambda^{T-t-1}G_t,episodic \text{ }tasks \end{cases}
⎩
⎨
⎧Gtλ=(1−λ)n=1∑∞λn−1Gt:t+n,continuing tasksGtλ=(1−λ)n=1∑T−t−1λn−1Gt:t+n+λT−t−1Gt,episodic tasks其中
{
λ
∈
[
0
,
1
]
(
1
−
λ
)
∑
n
=
1
∞
λ
n
−
1
=
1
(
1
−
λ
)
∑
n
=
1
T
−
t
−
1
λ
n
−
1
+
λ
T
−
t
−
1
=
1
\begin{cases} \lambda\in[0,1]\\ \\ (1-\lambda)\displaystyle\sum_{n=1}^\infty\lambda^{n-1}=1\\ \\ (1-\lambda)\displaystyle\sum_{n=1}^{T-t-1}\lambda^{n-1}+\lambda^{T-t-1}=1 \end{cases}
⎩
⎨
⎧λ∈[0,1](1−λ)n=1∑∞λn−1=1(1−λ)n=1∑T−t−1λn−1+λT−t−1=1如果
λ
=
1
\lambda=1
λ=1,则
λ
\lambda
λ - return的更新算法就是MC算法,如果
λ
=
0
\lambda=0
λ=0,
λ
\lambda
λ - return即为
G
t
:
t
+
1
G_{t:t+1}
Gt:t+1,即单步回报,就是单步时序差分算法。
此时可以定义基于 λ \lambda λ - return的学习算法,即off-line λ \lambda λ - return算法。作为一个off - line算法,在一个episode中间不会改变权值向量。在整个episode结束后,才会进行整个序列的离线更新。根据semi - SGD准则,使用 λ \lambda λ - return, G t λ G_t^\lambda Gtλ作为目标。 w t + 1 = ˙ w t + α [ G t λ − v ^ ( S t , w t ) ] ∇ v ^ ( S t , w t ) w_{t+1}\dot{=}w_t+\alpha[G_t^\lambda-\hat{v}(S_t,w_t)]\nabla\hat{v}(S_t,w_t) wt+1=˙wt+α[Gtλ−v^(St,wt)]∇v^(St,wt)其中 t = 0 , . . . , T − 1 t=0,...,T-1 t=0,...,T−1。
TD( λ \lambda λ)
TD(
λ
\lambda
λ)通过三种方式改进了 off - line
λ
\lambda
λ - return算法。
(1)算法在一个episode序列内每一步都会更新权重向量,而不是等到episode结束。
(2)算法的计算平均分配在整个时间轴上,而不仅仅是episode的结尾。
(3)不仅仅适用于episodic问题,也适用与continuing问题。
对于(1),其实是on-line化,也就是边采样,变更新
w
w
w,所以要使用能执行on - line算法的 TD error,首先目标
U
t
U_t
Ut为:
U
t
=
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
t
)
U_t=R_{t+1}+\gamma\hat{v}(S_{t+1},w_t)
Ut=Rt+1+γv^(St+1,wt)对应的TD error为:
δ
t
=
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
t
)
−
v
^
(
S
t
,
w
t
)
\delta_t=R_{t+1}+\gamma\hat{v}(S_{t+1},w_t)-\hat{v}(S_t,w_t)
δt=Rt+1+γv^(St+1,wt)−v^(St,wt)对于(2),即可增量计算,通过资格迹
z
t
∈
R
d
z_t\in\mathbb{R}^d
zt∈Rd在采样的同时,记录当前时刻的
∇
v
^
(
S
t
,
w
t
)
\nabla\hat{v}(S_t,w_t)
∇v^(St,wt),并通过折扣因子
γ
\gamma
γ和迹衰减参数
λ
\lambda
λ对求和项中的历史值函数梯度
∇
v
^
(
S
t
−
k
,
w
t
−
k
)
\nabla\hat{v}(S_{t-k},w_{t-k})
∇v^(St−k,wt−k)进行衰减实现。
对于(3),Continuing化,使用Approximation方法构造近似值函数 v ^ ( S , w ) \hat{v}(S,w) v^(S,w)。
在TD(
λ
\lambda
λ)中,off-line
λ
\lambda
λ - return的
G
t
λ
G_t^\lambda
Gtλ被替换为支持在线学习的
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
t
)
R_{t+1}+\gamma\hat{v}(S_{t+1},w_t)
Rt+1+γv^(St+1,wt),但是这个操作让算法失去了可调节前向视角(forward view)远近的衰减参数
λ
\lambda
λ,退化成了one - step TD learning。为了解决这个问题,可以将
λ
\lambda
λ用于优化
∇
v
^
(
S
t
,
w
t
)
\nabla\hat{v}(S_t,w_t)
∇v^(St,wt)。已知在这之前,权重的更新公式如下:
w
t
+
1
=
˙
w
t
+
α
δ
t
∇
v
^
(
S
t
,
w
t
)
w_{t+1}\dot{=}w_t+\alpha\delta_t\nabla\hat{v}(S_t,w_t)
wt+1=˙wt+αδt∇v^(St,wt)要想重新加入迹衰减参数
λ
\lambda
λ,就需要梯度更新迭代式。由于
∇
v
^
(
S
t
,
w
t
)
\nabla\hat{v}(S_t,w_t)
∇v^(St,wt)和
w
w
w维度相同,因此可以设定一个新的可表征历史梯度的,并且也与
w
w
w同维度的向量
z
t
∈
R
d
z_t\in\mathbb{R}^d
zt∈Rd,其递推式如下:
{
z
−
1
=
˙
0
z
t
=
˙
γ
λ
z
t
−
1
+
∇
v
^
(
S
t
,
w
t
)
,
0
≤
t
≤
T
\begin{cases} z_{-1}\dot{=}0\\ z_t\dot{=}\gamma\lambda z_{t-1}+\nabla\hat{v}(S_t,w_t),0\leq t\leq T \end{cases}
{z−1=˙0zt=˙γλzt−1+∇v^(St,wt),0≤t≤T其中,
γ
\gamma
γ是折扣系数,而
λ
\lambda
λ为衰减率参数。那
z
t
z_t
zt是什么?
展开
z
t
z_t
zt来看
z
t
=
1
∗
∇
v
^
(
S
t
,
w
t
)
+
(
γ
λ
)
∗
∇
v
^
(
S
t
−
1
,
w
t
−
1
)
+
(
γ
λ
)
2
∗
∇
v
^
(
S
t
−
2
,
w
t
−
2
)
+
.
.
.
+
(
γ
λ
)
t
−
1
∗
∇
v
^
(
S
1
,
w
1
)
z_t=1*\nabla\hat{v}(S_t,w_t)+(\gamma\lambda)*\nabla\hat{v}(S_{t-1},w_{t-1})+(\gamma\lambda)^2*\nabla\hat{v}(S_{t-2},w_{t-2})+...+(\gamma\lambda)^{t-1}*\nabla\hat{v}(S_1,w_1)
zt=1∗∇v^(St,wt)+(γλ)∗∇v^(St−1,wt−1)+(γλ)2∗∇v^(St−2,wt−2)+...+(γλ)t−1∗∇v^(S1,w1)由此,
z
t
z_t
zt可以看作是(
γ
λ
\gamma\lambda
γλ)的
t
−
1
t-1
t−1阶多项式,即累计折扣值函数梯度,它不断记录当前时刻的值函数梯度,并且通过折扣淡化历史值函数梯度。
TD(
λ
\lambda
λ)的更新公式
w
t
+
1
=
˙
w
t
+
α
δ
t
z
t
w_{t+1}\dot{=}w_t+\alpha\delta_tz_t
wt+1=˙wt+αδtzt资格迹
z
t
z_t
zt中Trace的含义是,追踪并记录历史值函数梯度。而Eligibility的含义是,权重向量
w
w
w中的每个分量有多少资格接受对应的更新。
迹衰减参数和(
γ
λ
\gamma\lambda
γλ)的意义:
(1)对历史值函数梯度进行折扣,从而达到梯度短期记忆。
(2)通过值域
[
0
,
1
]
[0,1]
[0,1]来调节记忆量。