Skip to content

Commit b5c1bb8

Browse files
committed
9-On-policy-Prediction-with-Approximation
1 parent 2b52c25 commit b5c1bb8

2 files changed

+934
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
> **前言:** 本次笔记对《强化学习(第二版)》第九章进行概括性描述。
2+
3+
*以下概括都是基于我个人的理解,可能有误,欢迎交流:piperliu@qq.com*
4+
5+
# 正文
6+
7+
### 引言
8+
9+
前八章学习的“表格型方法”有一个问题:没法表示任意大的状态空间,比如连续状态。
10+
11+
并且,在连续状态中,我们相信描述状态的数值与价值间存在数量关系,这意味着我们可以用$v(s,w)$来描述$v$,而并非要建立$s \rightarrow v$的表格。
12+
13+
其中,$w$是向量(叫做`权值向量`),我们从已知状态归纳所求状态的行为属于`泛化`,通常使用`函数逼近``监督学习`范畴)。
14+
15+
### 价值函数逼近
16+
17+
显然,我们想要“基于函数逼近的同轨策略预测”,就是要更新$w$。
18+
19+
但是,强化学习与监督学习不同的一点是,强化学习强调**在线学习&与环境交互**
20+
21+
这意味着我们还需要算法可以处理非平稳状况。
22+
23+
### 预测目标($\overline{VE}$)
24+
25+
表格型学习中,在每个状态下学习价值函数是`解耦`的:即一个状态更新不会影响其他状态。但是在函数逼近中未必。
26+
27+
我们使用`均方价值误差`作为目标函数。强化学习的终极目标是寻找更好的策略,因此使用`均方价值误差`作为目标函数未必是最好的,但是目前看来有用。
28+
29+
$$\overline{VE} (w) = \sum_{s \in S} \mu(s) [v_\pi (s) - \hat{v} (s,w)]^2$$
30+
31+
其中$\mu(s)$表示分布。这很 make sense 。
32+
33+
### 随机梯度和半梯度方法
34+
35+
`梯度下降`很基础很直观,这里不做介绍。
36+
37+
随机梯度下降英文:stochastic gradient-descent, SGD。之所以叫“随机”,因为其更新仅仅依赖一个“随机”的样本完成。
38+
39+
其更新公式为:
40+
41+
$$w \leftarrow w + \alpha [G_t - \hat{v}(S_t, w) ]\nabla \hat{v} (S_t,w)$$
42+
43+
这个公式很核心。书9.3节中“梯度蒙特卡洛”伪代码中使用了上式。依此估计的价值是无偏的。
44+
45+
**但是,“半梯度”是有偏的。**
46+
47+
在9.3节“半梯度TD(0)”中使用了如下的更新公式:
48+
49+
$$w \leftarrow w + \alpha [R + \gamma \hat{v}(S', w) - \hat{v}(S_t, w) ]\nabla \hat{v} (S_t,w)$$
50+
51+
为什么叫半梯度:
52+
- 非半梯度中,更新依赖于$\hat{v}(S', w)$,其中含有$w$,并不只是真正的梯度下降;
53+
- 估计是有偏的。
54+
55+
但是,半梯度的优点:
56+
- 速度快;
57+
- 可以在线并持续地学习,无需等待幕结束;
58+
- 线性情况中,依旧可以稳健的收敛。**而线性情况及其常见。**
59+
60+
### 线性方法
61+
62+
线性方法中,$\hat{v}(s,w) = w^T x(s)=\sum_{i=1}^d w_i x_i (s)$,向量$x (s)$称为特征向量。
63+
64+
在线性TD(0)中,我们可以证明其预测时收敛的,并且将收敛到`TD不动点`
65+
66+
$$w_{TD} = A^{-1} b$$
67+
68+
$$A = \mathbb{E} [x_t (x_t - \gamma x_{t+1})^T] \in \mathbb{R}^d \times \mathbb{R}^d$$
69+
70+
$$b=\mathbb{E} [R_{t+1}x_t] \in \mathbb{R}^b$$
71+
72+
73+
这对于后面的“最小二乘”很重要。
74+
75+
**更有趣的是:第I部分表格型方法实际上是线性函数逼近的一个特例,在这种情况下,$\nabla \hat{v} (S_t,w)=1$,即特征向量是$x(s) = 1$。**
76+
77+
更进一步,表格型方法中$w(S_t)$就是$\hat{v} (S_t,w)$本身。
78+
79+
### 线性方法的特征构造
80+
81+
这里有很多有趣的操作,比如`多项式基``傅立叶基``粗编码``瓦片编码`(一种粗编码的实例)等。
82+
83+
在我看来,前两者就是“特征工程”,使用线性计算的方法考虑状态间的非线性(交互)特性。
84+
85+
后两者类似一种聚合,但是建立了多个聚合的“标准”,使得一个状态在不同的瓦片中有可能不同的“号码”。
86+
87+
在瓦片的实现中,可以使用哈希编码节省时空。但是书上没有具体实例。
88+
89+
此外,还有`径向基函数`
90+
91+
其对特征的处理类似高斯分布,使用了`范数`/`距离度量`的概念,但是范数未必是距离的度量,可以设定别的规则。
92+
93+
### 手动选择步长参数
94+
95+
书上建议将 线性SGD 步长设置为:$\alpha = (\tau \mathbb{E}[x^T x])^{-1}$
96+
97+
### 非线性函数逼近:人工神经网络
98+
99+
人工神经网络在DL中很常用,书上仅做了描述性介绍。
100+
101+
这里提几个名词:
102+
- 深度置信网络;
103+
- 批量块归一化;
104+
- 深度残差学习。
105+
106+
### 最小二乘时序差分
107+
108+
之前提到了,使用不动点的计算在数学上很有效(数学上证明是合理的)。且,其对数据的利用是充分的。
109+
110+
最小二乘时序差分对 A、b公式进行了变换,令A多了一个项$\epsilon I$以保证其永远可逆。
111+
112+
这样,就可以将一个统计性公式转换成可在线更新的迭代式了。
113+
114+
### 基于记忆的函数逼近
115+
116+
在这里,讨论了`拖延学习 lazy learning`,即不立即更新并使用参数;当我们需要预测某个状态时,我们根据已有的数据(记忆中的状态),找出与其相关的,并计算估计。
117+
118+
常用的例子有:`最近邻居法``加权平均法`等。
119+
120+
这可以有效地进行局部学习,但是查询速度称为一个问题。因此可以考虑`特制硬件``并行计算``数据结构`等方案以解决查询速度问题。
121+
122+
### 基于核函数的函数逼近
123+
124+
之前`径向基函数`中有提到距离这个概念。`核函数`则是决定`距离`这个函数如何映射的。
125+
126+
$D$是一组样本,$g(s')$表示状态$s'$的目标结果,$\hat{v}(s,D) = \sum_{s' \in D}k(s,s')g(s')$这个公式可以看出,核函数决定了权重(或者是否计算,因为核函数为了保证局部计算,将不相干状态间映射为0)。
127+
128+
### 深入了解同轨策略学习:“兴趣”与“强调”
129+
130+
思想是不变的,还是为了保证学习的精准性,即利用到“局部学习”这个概念。
131+
132+
也就是说,不应把所有状态平等地看待,因此在更新公式中增加了`强调值``兴趣值`,并且二者也进行递归。
133+
134+
2020-3-9 00:10:21
135+
PiperLIu

0 commit comments

Comments
 (0)