[UCAS强化学习]4·无模型预测
1 简介
上节课我们学习了使用动态规划求解一个已知的 MDP——我们学习了迭代策略评估来评价某个给定策略(称作预测问题),以及策略迭代和价值迭代来寻找最优策略(称作控制问题)。这些动态规划方法的共同点是,它们都要求“模型”或“环境”,也就是
我们将学习 3 种无模型预测方法:蒙特卡洛学习,时间差分学习和 TD(λ).
2 蒙特卡洛学习
蒙特卡洛 (Monte-Carlo, MC) 方法是一类用采样近似期望的方法。在强化学习的背景下,这意味着我们通过采样一系列轨迹 (episodes) 进行学习,而不需要知道转移概率矩阵
给定策略
2.1 首次访问的 MC 策略评估
由于一条轨迹可能会反复回到同一个状态,所以我们有两种计数策略。首次访问的 MC 策略评估只考虑第一次访问状态
- 采样一条轨迹,找到第一次访问状态
的时刻 - 重复上述过程若干次
- 计算
,根据大数定律,当 时,
注:由于第 2 步涉及到了计算
2.2 每次访问的 MC 策略评估
另一种计数策略是把每一次访问都纳入考量,具体来说,
- 采样一条轨迹
- 对于该轨迹中每次访问状态
的时刻 ,执行: - 重复上述过程若干次
- 计算
,当 时,
2.3 增量式 MC 更新
对一组不断产生新数据的序列
将其用在 MC 方法中,我们称之为增量式 MC 更新:
- 采样一条轨迹
- 对于每一个状态
及其回报 ,计算: - 重复上述过程
如果我们把系数
3 时间差分学习
3.1 TD
时间差分 (Time Difference, TD) 也是通过采样来学习的,但与 MC 不同的是,TD 不需要采样完整的、最后终止的轨迹,它借助了自举法 (bootstrapping) 去估计未来的回报。
TD 算法可以表述为:
采样一条轨迹
使用估计回报在线更新价值函数:
其中 称为 TD 目标, 称作 TD 误差.重复上述过程
可以看见,与增量式 MC 更新相对比,TD 用一个带有估计性质的
我们可以举一个例子说明在线更新的好处。考虑一个开车的场景,在某一条轨迹中,我们与对面驶来的车擦肩而过——差点就车祸但是没有车祸。如果使用 MC 方法,我们不会得到任何负面的反馈,因为车祸毕竟没有发生,但使用 TD 方法,我们将期望车祸很有可能发生,因而会立刻更新价值函数,而不是一定要等到挂掉之后才能更新。
3.2 偏差/方差权衡
根据定义,回报
另一方面,TD 目标却比回报
总而言之:
- MC 高方差,零偏置
- 好的收敛性
- 对初始值不敏感
- 简单,易于理解
- TD 低方差,有偏置
- 通常效率更高
- TD(0) 能够收敛到
- 对初始值更敏感
例子:随机游走
为了直观对比 MC 和 TD 的收敛速度,我们考虑下面这个随机游走的例子。
从 C 点开始随机游走,如果终止在右边获得 1 的奖励,终止在左边获得 0 的奖励。
假设我们把所有状态的价值函数都初始化为 0.5,随着采样数量的增加,价值函数确实逐渐逼近真实值:
不同的方法(MC v.s. TD)、不同的步长
3.3 批量 MC 和 TD
如果我们无法不断地采样,手上只有一批有限数量的样本,那么根据这批样本做 MC 或 TD,能收敛到正确结果吗?
举一个简单的例子,假设 MDP 只有两个状态 A 和 B,无折扣,手上有 8 条轨迹:
- A, 0, B, 0
- B, 1
- B, 1
- B, 1
- B, 1
- B, 1
- B, 1
- B, 0
使用 MC 方法,我们将得到
可以看到,本质上来说:
因为 TD 首先建立 MDP 模型,它更能够去利用马尔可夫性质,所以在马尔可夫环境下更有效;而 MC 不能利用马尔可夫性质,所以在非马尔可夫环境下同样有效。
3.4 小结
现在我们将 DP, MC 和 TD 解 MDP 总结一下:
- DP 建立在我们已知整个 MDP 的基础上,我们也只向前走一步,但是严格按照概率对所有的可能进行精确计算
- MC 会采出一条到达终止状态的轨迹,然后更新沿途经过的状态
- TD 每次更新只需向前走一步,用下一步的价值函数更新当前状态
按照是否依靠采样近似(也即是否基于模型),可以将 MC 和 TD 划分为一类,DP 划分为一类;按照是否自举,可以将 DP 和 TD 划分为一类,MC 划分为一类。因此我们可以画一个 2D 的分类图:
很容易注意到,有一个角落是没有讲过的——既不采样,也不自举,这其实对应着最暴力的穷尽搜索。但是我们还应注意到,在是否自举之间,其实存在灰色地带——我们可以往前多走几步,但是又不走到头,这就引出了 n-step TD.
4 TD(λ)
4.1 n-step TD
上一节的最后已经解释了 n-step TD 的基本思想:
反映在公式中,即是:
那么,仿照 TD 的更新,n-step TD 的更新方式为:
4.2 前向 TD(λ)
我们对所有 n 值按照几何级数做平均,称之为 λ-回报:
当然,最后终止的那一步不再是几何级数,而是
为了计算
4.3 后向 TD(λ)
前向 TD(λ) 需要采样完整轨迹,因而只能做离线学习,有没有办法将其改进为在线学习呢?考虑在线学习时,当前状态会对后续的状态产生贡献(即加上奖励),但是对哪些状态产生贡献现在并不知道,所以我们可以引入一个变量将这个贡献暂存起来,等访问到后续状态后再更新,这就是后向 TD(λ).
首先引入资格迹 (eligibility traces)的概念。我们对每一个状态
利用资格迹,我们在每个时刻对所有状态
可以证明,前向 TD(λ) 与后向 TD(λ) 是完全等价的。
总而言之,前向 TD(λ) 提供理论依据,后向 TD(λ) 给出算法实现,实际应用中一般采用在线学习的后向 TD(λ) 方法。