目录
传统方法中存在以下这些问题:
(1)状态/动作空间是海量甚至是无限的,无法也没必要精确计算和存储所有状态/动作估值。
(2)无法对未访问过的状态进行估值。
(3)海量状态无法用有限的表格来存储,需要重新设计新的价值函数。 v ^ ( s , w ) \hat{v}(s,w) v^(s,w)
对于(1),可以对状态/动作空间进行 离散化。该方法在状态空间有限可控时使用。对于(2),可以构建参数化的函数估计。若新状态与曾经访问过的状态类似,则使用该状态进行归纳,即泛化(approximation)。对于(3),找到一个通用的方法,表示为
v ^ ( s , w ) ≈ v π ( s ) where w is a weight vector, w = ( w 1 , w 2 , . . . , w n ) T \hat{v}(s,w)\approx v_\pi(s)\text{ where }w\text{ is a weight vector},w=(w_1,w_2,...,w_n)^T v^(s,w)≈vπ(s) where w is a weight vector,w=(w1,w2,...,wn)T
Value - function逼近
已知 MC,TD,DP都是基于一个个回溯值进行价值函数的更新的。我们可以像机器学习学习一样,将每一次这样的更新,作为 i n p u t − o u t p u t input-output input−output样本进行训练,表示为 S → u S\rightarrow u S→u,那么以上算法的更新基于这种思想可以分别表示为:
Monte Carlo :
S
t
→
G
t
S_t\rightarrow G_t
St→Gt。
TD Learning :
S
t
→
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
t
)
S_t\rightarrow R_{t+1}+\gamma \hat{v}(S_{t+1},w_t)
St→Rt+1+γv^(St+1,wt)
DP :
s
→
E
π
[
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
t
)
∣
S
t
=
s
]
s\rightarrow \mathbb{E}_\pi[R_{t+1}+\gamma\hat{v}(S_{t+1},w_t)|S_t=s]
s→Eπ[Rt+1+γv^(St+1,wt)∣St=s]
这种方法类似于有监督学习(神经网络、决策树、多元回归)的静态训练操作,但是这要求Label需要提前知道,但在强化学习的场景中,许多训练数据是通过与环境交互动态获取的,此时就需要选择合适的有监督学习方法。
预测目标 ( V E ‾ ) (\overline{VE}) (VE)
V
E
‾
\overline{VE}
VE可以理解为机器学习领域的损失函数(Loss function)。为了保证目标函数在理论上无偏,可以使用期望的形式得到如下预测函数(Mean Squared Value Error, MSVE)
V
E
‾
=
∑
s
∈
S
μ
(
s
)
[
v
π
(
s
)
−
v
^
(
s
,
w
)
]
2
\overline{VE}=\displaystyle \sum_{s\in S}\mu(s)[v_\pi(s)-\hat{v}(s,w)]^2
VE=s∈S∑μ(s)[vπ(s)−v^(s,w)]2
其中
μ
(
s
)
≥
0
,
∑
s
μ
(
s
)
=
1
\mu(s)\geq0,\sum_s\mu(s)=1
μ(s)≥0,∑sμ(s)=1,
μ
(
s
)
\mu(s)
μ(s)是状态分布,可以理解为该状态能被采样到的概率。在on-policy训练中称它为on-policy分布。
对于
V
E
‾
\overline{VE}
VE,最理想的目标是对于所有可能的
w
w
w找到一个全局最优的权值向量
w
∗
w^*
w∗,满足
V
E
‾
(
w
∗
)
≤
V
E
‾
(
w
)
\overline{VE}(w^*)\leq\overline{VE}(w)
VE(w∗)≤VE(w)。
SGD和semi-SGD
随机梯度下降(stochastic gradient-descent,SGD)的方法就是对于每一个样本,将权值向量朝着能够减少Loss的方向移动。
w
t
+
1
=
w
t
−
1
2
α
∇
[
v
π
(
S
t
)
−
v
^
(
S
t
,
w
t
)
]
2
=
w
t
+
α
[
v
π
(
S
t
)
−
v
^
(
S
t
,
w
t
)
]
∇
v
^
(
S
t
,
w
t
)
\begin{aligned} w_{t+1}&=w_t-\frac{1}{2}\alpha\nabla[v_\pi(S_t)-\hat{v}(S_t,w_t)]^2\\ &=w_t+\alpha[v_\pi(S_t)-\hat{v}(S_t,w_t)]\nabla\hat{v}(S_t,w_t) \end{aligned}
wt+1=wt−21α∇[vπ(St)−v^(St,wt)]2=wt+α[vπ(St)−v^(St,wt)]∇v^(St,wt)
w
t
w_t
wt定义为每个时刻的权重向量,
t
t
t为一系列离散时刻。
α
\alpha
α是一个正的步长参数。对于任何一个关于向量
w
w
w的标量函数
f
(
w
)
f(w)
f(w),
∇
f
(
w
)
\nabla f(w)
∇f(w)表示一个列向量,其每一个分量是该函数对输入向量对应分量的偏导数。
∇
f
(
w
)
=
(
d
f
(
w
)
d
w
1
,
d
f
(
w
)
d
w
2
,
.
.
.
,
d
f
(
w
)
d
w
d
)
T
\nabla f(w)=(\frac{df(w)}{dw_1},\frac{df(w)}{dw_2},...,\frac{df(w)}{dw_d})^T
∇f(w)=(dw1df(w),dw2df(w),...,dwddf(w))T
这个导数向量是
f
f
f关于
w
w
w的梯度。
由于真实价值
v
π
(
S
t
)
v_\pi(S_t)
vπ(St)未知,所以可以使用MC中的
G
t
G_t
Gt作为无偏估计,得到MC-SGD更新:
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)
对应伪代码如下:
Semi-SGD学习更快,且由于使用自举法(TD)估计真实值,因此比SGD更好地支持持续性和在线学习而无需等到episode结束。但是它对真实值的估计是有偏的,稳健性不如SGD。使用on-step TD算法作为真实值
v
π
(
S
t
)
v_\pi(S_t)
vπ(St)的估计,即令
v
π
(
S
t
)
≈
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
)
v_\pi(S_t)\approx R_{t+1}+\gamma\hat{v}(S_{t+1},w)
vπ(St)≈Rt+1+γv^(St+1,w)
代入公式得:
w
t
+
1
=
w
t
−
1
2
α
∇
[
v
π
(
S
t
)
−
v
^
(
S
t
,
w
t
)
]
2
=
w
t
−
1
2
α
∇
[
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
)
−
v
^
(
S
t
,
w
t
)
]
2
=
w
t
−
α
[
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
)
−
v
^
(
S
t
,
w
t
)
]
[
∇
v
^
(
S
t
,
w
t
)
−
γ
∇
v
^
(
S
t
+
1
,
w
)
]
≈
w
t
−
α
[
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
)
−
v
^
(
S
t
,
w
t
)
]
∇
v
^
(
S
t
,
w
t
)
\begin{aligned} w_{t+1}&=w_t-\frac{1}{2}\alpha\nabla[v_\pi(S_t)-\hat{v}(S_t,w_t)]^2\\ &=w_t-\frac{1}{2}\alpha\nabla[R_{t+1}+\gamma\hat{v}(S_{t+1},w)-\hat{v}(S_t,w_t)]^2\\ &=w_t-\alpha[R_{t+1}+\gamma\hat{v}(S_{t+1},w)-\hat{v}(S_t,w_t)][\nabla\hat{v}(S_t,w_t)-\gamma\nabla\hat{v}(S_{t+1},w)]\\ &\approx w_t-\alpha[R_{t+1}+\gamma\hat{v}(S_{t+1},w)-\hat{v}(S_t,w_t)]\nabla\hat{v}(S_t,w_t) \end{aligned}
wt+1=wt−21α∇[vπ(St)−v^(St,wt)]2=wt−21α∇[Rt+1+γv^(St+1,w)−v^(St,wt)]2=wt−α[Rt+1+γv^(St+1,w)−v^(St,wt)][∇v^(St,wt)−γ∇v^(St+1,w)]≈wt−α[Rt+1+γv^(St+1,w)−v^(St,wt)]∇v^(St,wt)
由于上式中的
γ
∇
v
^
(
S
t
+
1
,
w
)
]
\gamma\nabla\hat{v}(S_{t+1},w)]
γ∇v^(St+1,w)]被省略了,所以这个方法称为半梯度方法(Semi-SGD),由于真实值的估计由BootStrapping方法得到,因此Semi-SGD真实值
v
π
(
S
t
)
v_\pi(S_t)
vπ(St)的估计是有偏的。
线性方法
Approximation的一种很重要的情况是近似函数
v
^
(
∗
,
w
)
\hat{v}(*,w)
v^(∗,w)是权值向量
w
w
w的线性函数。对于每个状态s,都存在一个和
w
w
w同维度的实向量
x
(
s
)
=
(
x
1
(
s
)
,
x
2
(
s
)
,
.
.
.
,
x
d
(
s
)
)
T
x(s)=(x_1(s),x_2(s),...,x_d(s))^T
x(s)=(x1(s),x2(s),...,xd(s))T,使得线性近似的状态价值函数可以写作
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)
向量
x
(
s
)
x(s)
x(s)表示s的特征向量。
x
(
s
)
x(s)
x(s)的每一个分量是一个函数
x
i
:
S
→
R
x_i:S\rightarrow\mathbb{R}
xi:S→R。
s
s
s对应的函数值称作
s
s
s的特征。对于线性函数来说,特征被称作基函数,因为它们构成了可能的近似函数集合的线性基。此时,近似价值函数关于
w
w
w的梯度是
∇
v
^
(
s
,
w
)
=
x
(
s
)
\nabla\hat{v}(s,w)=x(s)
∇v^(s,w)=x(s)
则SGD的更新在线性情况下可以简化为
w
t
+
1
=
w
t
+
α
[
U
t
−
v
^
(
S
t
,
w
t
)
]
x
(
S
t
)
w_{t+1}=w_t+\alpha[U_t-\hat{v}(S_t,w_t)]x(S_t)
wt+1=wt+α[Ut−v^(St,wt)]x(St)
对于MC-SGD,
U
t
=
G
t
U_t=G_t
Ut=Gt,当
α
\alpha
α不断减小时,可收敛到全局最优解。对于One-step-TD-semi-SGD,
U
t
=
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
)
U_t=R_{t+1}+\gamma\hat{v}(S_{t+1},w)
Ut=Rt+1+γv^(St+1,w),可收敛到局部最优解。
对One-step-TD-semi-SGD进行推广,可得到n-step-TD-semi-SGD。伪代码如下:
线性方法的特征构造
状态特征的选取会影响线性方法在数据和计算方面是否高效,同时这也意味着要将一个任务的先验知识加入到强化学习的系统中。特征应该代表状态空间中最通用的信息,比如如果要对几何对象进行评估,那么就需要选取形状、颜色、大小或功能等。又比如,如果我们对一个移动机器人进行评估,那么它的状态特征应该包括位置、电池总量、最近的声呐读数等等。
多项式基(Polynomial Basis)
假设一个强化问题的状态空间是二维的,单个状态
s
s
s对应的两个数字分别是:
s
1
∈
R
s_1\in\mathbb{R}
s1∈R和
s
2
∈
R
s_2\in\mathbb{R}
s2∈R。可以直接使用
s
s
s的两个维度作为特征,即
x
(
s
)
=
(
s
1
,
s
2
)
T
x(s)=(s_1,s_2)^T
x(s)=(s1,s2)T,但是这无法表示两个维度之间的相互关系。此外,如果
s
1
,
s
2
s_1,s_2
s1,s2都为0,那么近似价值也一定为零。这些局限性可以通过把
s
s
s表征为四维的特征向量
x
(
s
)
=
(
1
,
s
1
,
s
2
,
s
1
s
2
)
T
x(s)=(1,s_1,s_2,s_1s_2)^T
x(s)=(1,s1,s2,s1s2)T来解决,1用来表示常数项,
s
1
s
2
s_1s_2
s1s2表示两个维度的相互作用。也可以选择更高维度的特征,如
x
(
s
)
=
(
1
,
s
1
,
s
2
,
s
1
s
2
,
s
1
2
,
s
2
2
,
s
1
s
2
2
,
s
1
2
s
2
,
s
1
2
s
2
2
)
T
x(s)=(1,s_1,s_2,s_1s_2,s_1^2,s_2^2,s_1s_2^2,s_1^2s_2,s_1^2s_2^2)^T
x(s)=(1,s1,s2,s1s2,s12,s22,s1s22,s12s2,s12s22)T来表示更复杂的相互作用。
多项式基方法的通用数学表达:
x
i
(
s
)
=
∏
j
=
1
d
s
j
c
i
,
j
where
s
=
(
s
1
,
s
2
,
.
.
.
,
s
d
)
T
x_i(s)=\prod_{j=1}^ds_j^{c_{i,j}}\text{ where }s=(s_1,s_2,...,s_d)^T
xi(s)=j=1∏dsjci,j where s=(s1,s2,...,sd)T
多项式基不适合用于在线的强化学习任务,多用于插值和回归问题。由于n阶多项式基的特征数会随状态空间维数呈指数增长,所以性能不及傅里叶基。
傅里叶基
只要有足够的傅里叶基函数,就能足够精确逼近任意函数,即使待逼近函数未知,效果也比多项式等方法好。
傅里叶基的优势是:
(1)可以通过设置
c
i
c^i
ci向量来描述不同状态之间的相互作用。
(2)近似滤波高频噪声。
(3)可以表示状态的全局特性。
劣势是:
(1)无法表征局部特性。
(2)不适合处理非连续问题
(3)n阶傅里叶基特征数会随着状态空间维数呈指数增长,要么限定,要么选取特征子集。
一维状态n阶傅里叶cos基
一维n阶傅里叶cos基由以下n+1个特征组成:
x
i
(
s
)
=
c
o
s
(
i
π
s
)
,
s
∈
[
0
,
1
]
x_i(s)=cos(i\pi s),s\in[0,1]
xi(s)=cos(iπs),s∈[0,1]
其中
i
=
1
,
.
.
.
,
n
i=1,...,n
i=1,...,n,
x
0
x_0
x0是一个常数函数。所谓一维,指的是状态s的维度,n阶指的是
x
x
x的维度。下图是一维傅里叶余弦基特征
x
i
x_i
xi,
i
=
1
,
2
,
3
,
4
i=1,2,3,4
i=1,2,3,4,用于近似区间为
[
0
,
1
]
[0,1]
[0,1]的函数。
具体如何逼近、值函数
v
^
(
S
i
,
w
)
\hat{v}(S_i,w)
v^(Si,w)如何计算以及权重
w
w
w的更新过程如下图所示。
k维状态n阶傅里叶基
将一维状态推广到k维状态的傅里叶余弦级数近似,即每个状态
s
s
s对应一个
k
k
k维向量,
k
=
(
s
1
,
s
2
,
.
.
.
,
s
k
)
T
k=(s_1,s_2,...,s_k)^T
k=(s1,s2,...,sk)T,
s
i
∈
[
0
,
1
]
s_i\in[0,1]
si∈[0,1]
。n阶傅里叶余弦基的第
i
i
i个特征可以写作
x
i
(
s
)
=
c
o
s
(
π
s
T
c
i
)
,
c
i
=
(
c
1
i
,
.
.
.
,
c
k
i
)
x_i(s)=cos(\pi s^Tc^i),c^i=(c_1^i,...,c_k^i)
xi(s)=cos(πsTci),ci=(c1i,...,cki)
其中
{
i
=
1
,
2
,
.
.
.
,
(
n
+
1
)
k
c
i
=
(
c
1
i
,
.
.
.
,
c
k
i
)
c
j
i
∈
(
0
,
.
.
.
,
n
)
,
frequency
j
=
1
,
2
,
.
.
.
,
k
\begin{cases} i=1,2,...,(n+1)^k\\ c^i=(c_1^i,...,c_k^i)\\ c_j^i\in(0,...,n),\text{frequency}\\ j=1,2,...,k\\ \end{cases}
⎩
⎨
⎧i=1,2,...,(n+1)kci=(c1i,...,cki)cji∈(0,...,n),frequencyj=1,2,...,k
6个二维傅里叶余弦特征实例,
s
1
s_1
s1是水平轴
以下是傅里叶基与多项式基在1000状态随机游走问题上的结果。这里显示的是梯度MC算法使用5,10,20阶傅里叶基和多项式基的学习曲线。步长参数对于每种情况大致都是最优的:多项式基
α
=
0.0001
\alpha=0.0001
α=0.0001,傅里叶基
α
=
0.00005
\alpha=0.00005
α=0.00005.,性能评价指标(y轴)是均方根价值误差。
粗编码
如下图所示:
假设在二维状态空间中,每个圆都可以看做是一个特征,则
s
s
s被三个特征覆盖,即
x
i
(
s
)
=
x
j
(
s
)
=
x
k
(
s
)
=
1
x_i(s)=x_j(s)=x_k(s)=1
xi(s)=xj(s)=xk(s)=1,而相邻的状态
s
′
s'
s′被两个特征覆盖,即
x
z
(
s
′
)
=
x
k
(
s
′
)
=
1
x_z(s')=x_k(s')=1
xz(s′)=xk(s′)=1。此时可知
s
s
s和
s
′
s'
s′在
x
k
x_k
xk上重叠,一旦
v
(
s
)
v(s)
v(s)被更新,对应
w
i
,
w
j
,
w
k
w_i,w_j,w_k
wi,wj,wk均被更新,而
v
(
s
′
)
v(s')
v(s′)的组成部分含有
w
k
w_k
wk,因此也被间接更新。
特征
x
(
s
)
x(s)
x(s)时受两个因素影响。
effect of features
{
Size(eg.Narrow,Medium,Broad
Shape
(
e
g
.
C
i
r
c
l
e
,
S
q
u
a
r
e
,
G
r
i
d
)
\text{effect of features} \begin{cases} \text{Size(eg.Narrow,Medium,Broad}\\ \text{Shape}(eg.Circle,Square,Grid) \end{cases}
effect of features{Size(eg.Narrow,Medium,BroadShape(eg.Circle,Square,Grid)
实验证明,在features的Shape相同,维度相同,密度相同的情况下:
(1)Size较小的在少量样本的情况下性能比较差,容易出现多个陡峰。
(2)Size较大的在少量样本的情况下性能稳定。
(3)不论Size多大,在大样本下,性能都比较好。
如下图所示:
瓦片编码
瓦片编码(Tile Coding)适用于多维连续状态空间的场合,是粗编码的网络实现版本,具有灵活并且计算高效的特性。对于现代的时序数字计算机来说,它是最为实用的特征表达形式。如下图所示:
(1)假设有一个连续的二维状态空间,构造一个比它更大的网格,称为Tiling(蓝色),保证Tiling完整覆盖状态空间。
(2)设定偏移量,将蓝色Tiling根据不同偏移量进行偏移,形成多个新的Tiling(橙色,红色,绿色),这个过程要保证不同位置的Tiling有重叠(粗编码性质)。偏移后的Tiling依然完整覆盖整个状态空间。
(3)每个Tiling划分出多个自定义形状的小网格,每个小网格(Tile)代表一个feature,覆盖了白点的Tile称为active feature,值为1,未覆盖到的值为0。active feature的数量=Tiling的数量,权重
w
w
w的维度=
x
(
s
)
x(s)
x(s)的维度=Tiling的数量乘以每个Tiling中Tile的数量(4*16=64)
下图展示的是1000状态随机游走例子中,MC-SGD分别使用单覆盖和多重覆盖的学习曲线。Tile的宽度为100,偏移量为4。
实验结果表明,多个Tiling比单个Tiling效果好,影响性能的主要因素就是特征维度。
如果某个状态与被训练的那个状态处于相同的瓦片之内,它就会收到被训练状态的泛化影响,这种影响的强度与该状态和被训练状态共同隶属的瓦片数量成比例。甚至如何选择覆盖之间的偏移都会影响泛化能力。影响瓦片编码的泛化因素是:
(1)Tiling的堆叠位置。
(2)每个Tile的形状。
如上图所示,图中展示了8个覆盖的情况下,被训练状态向附近的状态进行泛化的强度,黑色的小加号表示被训练的状态。如果覆盖是均匀偏移的(上方),则会产生对角线形状的畸变和显著的泛化影响波动;而使用非对称偏移的划分,泛化就会更均匀,更接近球形。
此外,覆盖的个数和瓦片的形状一起决定了这个渐近近似的分辨率或细度,如下图,中间所示的条形瓦片,会促进这个方向上的泛化,并且其中的覆盖在左侧更紧密,这会增进在水平轴上值比较小时的区分程度。右边所示的对角条形覆盖会促进在一个对角线方向上的泛化。
径向基函数
径向基函数(radial basis function,RBF)是粗编码在连续特征中的自然推广,每个特征可以是[0,1]中的任何值,这个值反映了这个特征出现的概率。
构造方式:典型的径向基函数特征
x
i
x_i
xi,有如下高斯函数,特征值取决于状态
s
s
s和特征的中心状态
c
i
c_i
ci的距离,并与特征宽度
σ
\sigma
σ相关
x
i
(
s
)
=
e
x
p
(
−
∣
∣
s
−
c
i
∣
∣
2
2
σ
i
2
)
x_i(s)=exp(-\frac{||s-c_i||^2}{2\sigma_i^2})
xi(s)=exp(−2σi2∣∣s−ci∣∣2)
RBF相对于二值特征的主要有点在于它们可以生成光滑且可微的近似函数。但是它计算复杂度过高,需要大量手动调参,在高维状态下
(
k
>
2
)
(k>2)
(k>2)性能呈指数下降,很不实用。
手动选择步长参数
对于表格型问题,我们可以理解
α
=
1
\alpha=1
α=1为在一次经验就能收敛到目标均值,
α
=
1
10
\alpha=\frac{1}{10}
α=101则是大约需要10次就收敛到目标均值,那么如果你需要进行
τ
\tau
τ次经验,则将步长大概设置为
1
τ
\frac{1}{\tau}
τ1便可。
对于一般的函数逼近,没有一个清晰的“状态经验数量”概念,因为每一个状态都可能与其他状态存在某种程度上的相似性或不相似性。但是在线性函数逼近的情况下,有一个类似的规则可以给出这个步长,假设你希望从基本上相同的特征向量的
τ
\tau
τ次经验来学习,一个好的粗略经验法则是将线性SGD的步长参数设置为:
α
=
(
τ
E
[
x
T
x
]
)
−
1
\alpha=(\tau\mathbb{E}[x^Tx])^{-1}
α=(τE[xTx])−1
这里
x
x
x是从SGD的输入向量的分布中选取的一个随机特征向量。这种方法在特征向量的长度变化不大时特别有效。理想情况下,
x
T
x
x^Tx
xTx为常数。
非线性函数逼近:人工神经网络
略
最小二乘时序差分
已知使用线性函数逼近的
T
D
(
0
)
TD(0)
TD(0)可以渐进地收敛到TD的不动点
w
T
D
=
A
−
1
b
w_{TD}=A^{-1}b
wTD=A−1b
这里
A
=
[
x
t
(
x
t
−
γ
x
t
+
1
)
T
]
A=\mathbb[x_t(x_t-\gamma x_{t+1})^T]
A=[xt(xt−γxt+1)T]以及
b
=
E
[
R
t
+
1
x
t
]
b=\mathbb{E}[R_{t+1}x_t]
b=E[Rt+1xt],原本这两个量是通过迭代计算出来的,但是还有另一种方法,最小二乘时序差分(Least-Squares TD,简称LSTD)算法,就是求得
A
A
A和
b
b
b的估计,然后直接计算
T
D
TD
TD不动点。
它首先估计
A
^
t
=
∑
k
=
0
t
−
1
x
k
(
x
k
−
γ
x
k
+
1
)
T
+
ϵ
I
and
b
^
t
=
∑
k
=
0
t
−
1
R
t
+
1
x
k
\hat{A}_t=\displaystyle\sum_{k=0}^{t-1}x_k(x_k-\gamma x_{k+1})^T+\epsilon I\text{ and }\hat{b}_t=\displaystyle\sum_{k=0}^{t-1}R_{t+1}x_k
A^t=k=0∑t−1xk(xk−γxk+1)T+ϵI and b^t=k=0∑t−1Rt+1xk
这里的
I
I
I是单位矩阵,当比较小的
ϵ
>
0
\epsilon>0
ϵ>0时,
ϵ
I
\epsilon I
ϵI可以保证
A
^
t
\hat{A}_t
A^t总是可逆的。如下面公式所示
w
t
=
A
^
t
−
1
b
^
t
w_t=\hat{A}_t^{-1}\hat{b}_t
wt=A^t−1b^t
它是线性TD(0)算法的数据效率最高的一种形式,但是计算复杂度也更高,为
O
(
d
2
)
O(d^2)
O(d2),而半梯度TD(0)要求的内存和每步的计算复杂度只有
O
(
d
)
O(d)
O(d)。
基于记忆的函数逼近
参数方法和非参数方法
参数方法指的是优化的模型是一个含参数的函数,求解出了参数就得到了最优模型。预测的输入根据学习的参数得到输出。而非参方法没有明确的参数。预测的基本思想就是相似的输入具有相似的输出。一般都是根据预测点附近的样本来推测未知状态的值。
线性方法是典型的参数方法。通过每个训练样本,较少误差,更新后一般这个样本的被丢弃了,当需要一个新的状态的值时,就用最新学习的参数来计算输出。
基于记忆的函数逼近
基于记忆的函数近似方法前期将训练样本存储起来,并不做任何处理(不像参数方法,有了样本就会执行梯度下降),当需要预测新的状态值时,再从“记忆”(memory,其实是内存)中拿出一部分样本并用来计算出一个估计值。也就是说本来在参数方法中对于训练样本的处理(梯度下降)在基于记忆的方法中并没有,而是到了预测的时候才做一些处理。所以这种方法被叫做lazy learning(懒惰学习或消极学习)。
基于记忆的函数近似方法是非参方法的一个典型例子。由于非参方法没有明确的模型形式和参数,所以它不受限于函数的类型。非参的输出取决于训练样本自身。
近邻方法
基于记忆的方法使用训练样本来估计预测值。那么就涉及两个问题
(1)如何选择训练样本。
(2)如何使用选择的训练样本来估计未知状态的值。
依赖这两个条件会得到不同的方法。所谓局部学习方法就是基于一定的距离、准则找到距离未知状态最近的一个样本或者若干样本,距离越近就说这些样本和未知状态越相关,我们可以用这些样本来估计未知状态的值。
最近邻方法(nearest neighbor)
所谓最近邻方法就是以最近的样本点值作为未知状态的输出。比如对于状态 s s s来说,在样本集中与其最近的状态是 s ′ s' s′,它的值为 g g g,那么 s s s的近似值就为 g g g。稍微复杂一点的方法是加权均值法(weighted average),它返回一个最近邻样本的集合,兵役他们值的加权和作为未知状态的值。
基于核函数的函数逼近
略
深入了解on-policy学习:“兴趣”与“强调”
略