时间差分方法简介
时间差分方法(Temporal-Difference,TD)是强化学习中最为「核心」的想法。
结合了 DP 和 MC 的优点:
- MC:从「历史经验」中学习
- DP:使用后继状态的值函数更新当前状态的值函数
属于无模型方法:
- 未知
,需要智能体与环境进行交互,样本备份,需要充分的探索
同时利用了「采样」和「贝尔曼方程」
可以从不完整的片段中学习(通过「自举法」)
- 可同时应用于片段性任务和连续性任务
- 「通过估计来更新估计」
「自举法」 (bootstrapping) 又名拔靴法、自助法。通过对样本进行「重采样」得到的估计总体的方法。 重采样:对样本里的数据再采样一次。 强化学习的 MC 中,一条轨迹是一个样本。TD 中,把一条轨迹采样成小片段,再对片段进行采样,所以属于自举法。
时间差分评价
「目的」:给定策略 ,求其对应的值函数
对比之前的蒙特卡洛算法。
增量蒙特卡洛算法
用实际回报值去更新值函数
![]()
时间差分评价算法
时间差分算法 (Temporal-difference, TD)中,「使用估计的回报值 去更新值函数
(TD(0))」
其中:
称为 TD 目标
称为 TD 误差
在0~1之间
时间差分策略评价算法
策略评价算法对比: TD 和 DP
DP 中,利用了贝尔曼方程去解强化学习问题。由于**环境模型已知,**当前状态的下一个状态全部已知,「直接求期望即可」。
而 TD 中,也利用了贝尔曼方程,但做了以下改动:
- 全宽备份
样本备份: 并去掉了期望符号
- 增加了学习率
为什么增加学习率? 因为TD目标值
是采样得到的,不是精确的。此处的学习率表示“大致往样本的方向更新一小步”
大量采样,收敛后,时间差分评价算法满足贝尔曼方程:
整体看来,在时间差分评价算法中,是利用「TD目标」(估计出来的值函数)和「当前值函数」的差来指导学习,所以称作时间差分。
策略评价算法对比: TD 和 MC
在 MC 中,考虑的是整条轨迹,利用整条轨迹来估计值函数V(s)。
- TD 在每一步之后都能在线学习; MC 必须等待回报值得到之后才能学习
- TD 利用了马尔科夫性; MC 没有利用马尔科夫性
- MC 有高方差,零偏差; TD 有低方差,和一些偏差
TD 和 MC 的优缺点
MC 有高方差,零偏差
- 收敛性较好 (即使采用函数逼近)
- 对初始值不太敏感
- 简单, 容易理解和使用
- 随着样本数量的增加,「方差逐渐减少, 趋近于 0」
TD 有低方差,和一些偏差
- 通常比 MC 效率更高
- 表格法下 TD(0) 收敛到
(函数逼近时不一定)
- 对初始值更敏感(由于用了贝尔曼方程,初始值会影响之后的迭代)
- 随着样本数量的增加,「偏差逐渐减少,趋近于 0」
TD 利用了马尔可夫性
- 一般来说 TD 在马尔可夫环境中更有效
MC 没有利用马尔可夫性
- 一般对非马尔可夫环境更有效
其他对比维度
自举和采样
「自举」: 使用随机变量的估计去更新
- MC 没有自举
- DP 和 TD 都有自举
「采样」: 通过样本估计期望。这里是通过采样的样本来估计值函数。
- MC 和 TD 用到了采样(环境模型未知,需要对环境交互进行采样,从而估计值函数)
- DP 不采样(状态转移概率、奖励已知,直接计算值函数)
备份深度
ML 和 RL 中的偏差/方差权衡
ML 中的偏差和方差的trade-off
在监督学习中,偏差/方差有另外的理解——「欠拟合」和「过拟合」
- 偏差大 (欠拟合): 预测值和样本之间的差
- 方差大 (过拟合): 样本值之间的方差, 学出的模型泛化能力差
方差大意味着样本的置信度较差
机器学习方法都会在偏差和方差之间做 trade-off
RL 中的偏差和方差的trade-off
- 回报值
是值函数
的无偏估计
- 真实的 TD 目标值
是值函数
的无偏估计
- 使用的 TD 目标值
是值函数
的有偏估计
- TD 目标值的方差要远小于回报值(蒙特卡洛)
- 回报值依赖于很多随机变量
,每一步都会引入一定的方差,所以方差很大
- TD 目标值仅仅依赖于一个随机序列
,只有一步随机,所以方差很小
时间差分优化
广义策略迭代
- 策略评价: 「TD 策略评价」,
- 策略提升:
-贪婪策略提升
TD 优化相比 MC 优化有几点好处
- 「低方差」
- 「在线更新」 (online)。在线更新指的是,每进行一步就可以进行更新,而不需要整个episode做完才更新。
- 「不完整序列」
「在策略」 TD 优化——Sarsa
在当前状态S,根据当前策略,选择动作A,收到奖励R,转移到状态S'。在状态S'下,再根据当前策略(同一个策略)选择动作A'。
注意: TD目标值中的动作 A' 其实并没有做
值迭代
为什么是「在策略」?
- 当前状态 S 下,执行的动作 A 是来自当前 Q 函数下的
-贪婪策略
- 「TD 目标值」中,在下一个状态S'下,动作 A′ 也是来自当前 Q 函数下的
-贪婪策略
- 这两者是同一个策略。