西湖大学 RL 第七课:时序差分学习
强化学习的数学原理 - 第七课:时序差分学习 (Temporal-Difference Learning)
课程内容地图回顾
- 当前位置: 第七章 - 时序差分算法 (Temporal-Difference Learning, TD Learning)
- 与之前章节的关系:
- 第五章 (蒙特卡洛方法, MC): 介绍了第一种无模型 (model-free) 的强化学习方法。MC 方法是 非增量式 (non-incremental) 的。
- 第六章 (随机近似, Stochastic Approximation, SA): 介绍了 SA、随机梯度下降 (SGD) 和 Robbins-Monro (RM) 算法,这些是本节课TD算法的数学基础,有助于理解TD算法的形式和解决的问题。
- TD Learning 是第二种介绍的 model-free 方法,与MC不同,TD是 增量式 (incremental) 或迭代式的方法。
- 与之后章节的关系:
- 第八章 (价值函数近似, Value Function Approximation): 将基于本节课介绍的TD方法,从表格表示 (tabular representation) 扩展到函数表示 (function representation),例如经典的 Deep Q-Learning。
本次课大纲
- 启发性示例 (Motivating Examples): 通过几个例子建立与上一课RM算法的联系。
- 状态价值的TD学习 (TD Learning of State Values): 介绍最基础的TD算法,用于估计状态价值 $v_\pi(s)$。
- 动作价值的TD学习:Sarsa: 介绍Sarsa算法及其变种,用于估计动作价值 $q_\pi(s,a)$。
- 动作价值的TD学习:Expected Sarsa & n-步Sarsa: Sarsa的进一步改进和推广。
- 最优动作价值的TD学习:Q-Learning: 介绍大名鼎鼎的Q-Learning算法,直接估计最优动作价值 $q_\*(s,a)$。
- 算法比较与统一观点 (Comparison and Unified View): 总结各类TD算法的异同。
- 总结 (Summary)
1. 启发性示例 (Motivating Examples)
目的: 通过具体例子展示如何使用上一课学习的Robbins-Monro (RM)算法求解问题,从而自然地引出TD算法的形式,理解其数学渊源。
示例1: 均值估计 (Mean Estimation)
- 问题: 估计随机变量 $X$ 的期望 $w = E[X]$,已知 $X$ 的独立同分布 (i.i.d.) 样本 $\{x\_k\}$。
- RM算法求解:
- 定义函数 $g(w) = w - E[X]$。求解 $g(w) = 0$ 即可得到 $w^\* = E[X]$。
- 由于只能获得 $X$ 的样本 $x\_k$,我们得到的是 $g(w)$ 的带噪声观测: $$ \tilde{g}(w, \eta\_k) = w - x\_k = (w - E[X]) + (E[X] - x\_k) = g(w) + \eta\_k $$ 其中 $\eta\_k = E[X] - x\_k$ 是噪声。
- 根据RM算法的迭代公式 $w\_{k+1} = w\_k - \alpha\_k \tilde{g}(w\_k, \eta\_k)$: $$ w\_{k+1} = w\_k - \alpha\_k (w\_k - x\_k) $$ 这就是我们熟悉的样本均值的增量式更新方法。
示例2: 函数均值估计 (Mean Estimation of a Function)
- 问题: 估计函数 $v(X)$ 的期望 $w = E[v(X)]$,已知 $X$ 的 i.i.d. 样本 $\{x\_k\}$。
- RM算法求解:
- 定义 $g(w) = w - E[v(X)]$。
- 带噪声观测: $$ \tilde{g}(w, \eta\_k) = w - v(x\_k) = (w - E[v(X)]) + (E[v(X)] - v(x\_k)) = g(w) + \eta\_k $$
- RM算法更新: $$ w\_{k+1} = w\_k - \alpha\_k [w\_k - v(x\_k)] $$
示例3: 更复杂的期望估计
- 问题: 估计 $w = E[R + \gamma v(X)]$,其中 $R, X$ 是随机变量,$\gamma$ 是常数,$v(\cdot)$ 是函数。已知 $R, X$ 的样本对 $\{r\_k, x\_k\}$。
- 这里的 $R$ 可以联想为奖励 (Reward),$\gamma$ 为折扣率 (Discount Rate),$v(X)$ 为状态价值 (State Value),$X$ 为状态 (State)。
- RM算法求解:
- 定义 $g(w) = w - E[R + \gamma v(X)]$。
- 带噪声观测: $$ \tilde{g}(w, \eta\_k) = w - [r\_k + \gamma v(x\_k)] = (w - E[R + \gamma v(X)]) + (E[R + \gamma v(X)] - [r\_k + \gamma v(x\_k)]) = g(w) + \eta\_k $$
- RM算法更新: $$ w\_{k+1} = w\_k - \alpha\_k [w\_k - (r\_k + \gamma v(x\_k))] $$ 这个表达式与即将介绍的TD算法非常相似。
总结: 这三个例子层层递进,都利用RM算法求解。最后一个例子的形式为理解TD算法奠定了基础。
2. 状态价值的TD学习 (TD Learning of State Values)
这是最基础、最经典的TD算法,用于 策略评估 (Policy Evaluation),即估计给定策略 $\pi$ 下的状态价值 $v_\pi(s)$。
算法描述
- 目标: 给定策略 $\pi$,估计其状态价值 $\{v_\pi(s)\}\_{s \in S}$。
- 数据/经验 (Experience): 由策略 $\pi$ 与环境交互产生的序列:$(s\_0, r\_1, s\_1, r\_2, s\_2, \dots, s\_t, r\_{t+1}, s\_{t+1}, \dots)$,或者可以看作一系列的转移元组 $\{(s\_t, r\_{t+1}, s\_{t+1})\}\_t$。
- 符号:
- $v(s)$: 对真实状态价值 $v_\pi(s)$ 的估计。
- $v\_t(s)$: 在时刻 $t$ 对状态 $s$ 的价值估计。
- TD(0) 算法 / 基本TD算法:
在每个时间步 $t$,观察到状态 $s\_t$,采取动作(根据策略 $\pi$),得到奖励 $r\_{t+1}$ 和下一个状态 $s\_{t+1}$。然后更新 $v(s\_t)$:
$$
v\_{t+1}(s\_t) = v\_t(s\_t) + \alpha\_t(s\_t) [ \underbrace{r\_{t+1} + \gamma v\_t(s\_{t+1})}\_{\text{TD Target}} - v\_t(s\_t) ] \quad (1)
$$
对于所有其他未被访问的状态 $s \neq s\_t$:
$$
v\_{t+1}(s) = v\_t(s) \quad (2)
$$
其中:
- $\alpha\_t(s\_t)$ 是学习率 (learning rate),通常是一个小的正数,可以随时间变化,也可以是状态相关的。
- $\gamma$ 是折扣因子。
- TD Target (TD目标值): $\bar{v}\_t \doteq r\_{t+1} + \gamma v\_t(s\_{t+1})$。这是当前对 $v_\pi(s\_t)$ 的一个更好的估计,因为它用到了真实的即时奖励 $r\_{t+1}$ 和对下一状态价值的当前估计 $v\_t(s\_{t+1})$。
- TD Error (TD误差): $\delta\_t \doteq (r\_{t+1} + \gamma v\_t(s\_{t+1})) - v\_t(s\_t)$。它表示TD目标与当前价值估计之间的差异。
- 更新规则可以理解为:
新估计 = 旧估计 + 学习率 * TD误差
。
TD算法性质
TD目标 (TD Target):
- 算法的目标是让 $v\_t(s\_t)$ 朝着TD目标 $\bar{v}\_t$ 移动。
- 推导: $v\_{t+1}(s\_t) - \bar{v}\_t = v\_t(s\_t) - \bar{v}\_t + \alpha\_t(s\_t) [\bar{v}\_t - v\_t(s\_t)]$ $v\_{t+1}(s\_t) - \bar{v}\_t = (1 - \alpha\_t(s\_t)) [v\_t(s\_t) - \bar{v}\_t]$ 由于 $0 < \alpha\_t(s\_t) < 1$ (通常情况下),所以 $0 < 1 - \alpha\_t(s\_t) < 1$。 因此, $|v\_{t+1}(s\_t) - \bar{v}\_t| < |v\_t(s\_t) - \bar{v}\_t|$ (如果 $v\_t(s\_t) \neq \bar{v}\_t$)。这表明新的估计 $v\_{t+1}(s\_t)$ 比旧的估计 $v\_t(s\_t)$ 更接近TD目标 $\bar{v}\_t$。
TD误差 ($\delta\_t$):
- 时序差分: 反映了两个连续时间步价值估计之间的差异(一个是基于当前估计 $v\_t(s\_t)$,另一个是基于一步实际观测和下一状态的估计 $r\_{t+1} + \gamma v\_t(s\_{t+1})$)。
- 与真实价值的差异: TD误差也间接反映了当前估计 $v\_t$ 与真实价值 $v_\pi$ 之间的不一致性。
- 定义 $\delta\_{\pi,t} \doteq r\_{t+1} + \gamma v\_{\pi}(s\_{t+1}) - v\_{\pi}(s\_t)$。
- 根据贝尔曼方程,我们知道 $E[\delta\_{\pi,t} | S\_t = s\_t] = E[R\_{t+1} + \gamma v\_{\pi}(S\_{t+1}) | S\_t = s\_t] - v\_{\pi}(s\_t) = 0$。
- 所以,如果 $v\_t = v_\pi$,那么期望意义上的TD误差 $E[\delta\_t]$ 应该为0。反之,如果TD误差不为0,说明 $v\_t \neq v_\pi$。
- 创新 (Innovation): TD误差可以看作是从新经验 $(s\_t, r\_{t+1}, s\_{t+1})$ 中获得的,用于修正当前估计的“新信息”或“意外”。如果当前估计是准确的,TD误差的期望会很小。
功能局限:
- 这个基础TD算法仅用于 策略评估 (估计给定策略的状态价值)。
- 它不能直接估计动作价值 $q_\pi(s,a)$。
- 它不能直接搜索最优策略。
- 但它是理解后续更复杂TD算法 (如Sarsa, Q-Learning) 的基石。
TD算法的数学思想
核心: TD算法是在 没有模型 (model-free) 的情况下,求解给定策略 $\pi$ 的 贝尔曼方程。
贝尔曼期望方程 (Bellman Expectation Equation): 状态价值的定义 $v\_{\pi}(s) = E_\pi[R\_{t+1} + \gamma G\_{t+1} | S\_t = s]$ 可以展开为:
$$ v\_{\pi}(s) = E_\pi[R\_{t+1} + \gamma v\_{\pi}(S\_{t+1}) | S\_t = s] $$这是贝尔曼方程的另一种形式,不显式包含动作和状态转移概率,而是用期望来概括。这个形式是TD算法设计和分析的关键。
用RM算法求解贝尔曼期望方程:
- 对特定状态 $s$,令 $w = v_\pi(s)$。目标是找到 $w$ 使得 $w = E[R\_{t+1} + \gamma v\_{\pi}(S\_{t+1}) | S\_t=s]$。
- 定义 $g(w) = w - E[R\_{t+1} + \gamma v\_{\pi}(S\_{t+1}) | S\_t=s]$。求解 $g(w)=0$。
- 带噪声观测 (使用单次采样 $r\_{t+1}, s\_{t+1}$ 代替期望): $\tilde{g}(w\_t) = w\_t - [r\_{t+1} + \gamma v\_{\pi}(s\_{t+1})]$
- RM算法更新: $w\_{t+1} = w\_t - \alpha\_t [w\_t - (r\_{t+1} + \gamma v\_{\pi}(s\_{t+1}))]$
- 关键一步:自举 (Bootstrapping) 由于真实的 $v\_{\pi}(s\_{t+1})$ 未知,TD算法使用当前的估计 $v\_t(s\_{t+1})$ 来代替它 (即用估计值更新估计值): $v\_{t+1}(s\_t) = v\_t(s\_t) - \alpha\_t [v\_t(s\_t) - (r\_{t+1} + \gamma v\_t(s\_{t+1}))]$ 这正是TD(0)算法的更新公式!
- 与RM算法的区别:
- 样本来源: RM通常假设i.i.d.样本。TD利用马尔可夫决策过程 (MDP) 中的序列样本 $(s\_t, r\_{t+1}, s\_{t+1})$。
- 目标值: RM的理论推导中可能使用真实期望或真实函数值。TD使用当前对下一状态价值的估计 $v\_t(s\_{t+1})$ 作为TD目标的一部分,这是 自举 (bootstrapping) 的核心特征。
TD算法的收敛性
定理 (TD学习的收敛性): 如果学习率 $\alpha\_t(s)$ 满足以下条件 (Robbins-Monro条件):
- $\sum\_{t=0}^{\infty} \alpha\_t(s) = \infty$ (对于所有状态 $s$)
- $\sum\_{t=0}^{\infty} \alpha\_t^2(s) < \infty$ (对于所有状态 $s$) 则 $v\_t(s)$ 将以概率1收敛到真实的 $v_\pi(s)$,对于所有状态 $s \in S$。
- 条件解释:
- 第一个条件确保有足够的总步长来克服初始误差和噪声。对于TD,$\alpha\_t(s)$ 仅在状态 $s$ 被访问时为正,所以这意味着 每个状态都必须被无限次(或足够多次)访问。
- 第二个条件确保步长最终会减小,使得估计稳定下来。
- 实践中的学习率: 实际上,$\alpha\_t$ 常被设为一个小的常数 (如0.1, 0.01)。这种情况下,条件2不满足,但算法在期望意义上仍能收敛,并且对非平稳环境有更好的适应性(能持续学习)。
TD学习与蒙特卡洛(MC)学习的比较
特性 | TD 学习 (Temporal-Difference Learning) | MC 学习 (Monte Carlo Learning) |
---|---|---|
基本思想 | 基于一步真实奖励和下一状态的估计价值 (自举) | 基于一个完整片段 (episode) 的实际回报 $G\_t$ 来更新价值 |
更新时机 | 在线 (Online):每一步之后都可以更新。 | 离线 (Offline):必须等到一个片段结束后才能更新该片段中所有访问过的状态。 |
适用任务 | 片段式 (Episodic) 和 持续性 (Continuing) 任务。 | 只能处理 片段式 (Episodic) 任务 (需要明确的终止状态)。 |
自举 (Bootstrap) | 是 (Yes):用当前的估计值 $v\_t(s\_{t+1})$ 来更新 $v\_t(s\_t)$。 | 否 (No):不依赖于其他价值估计,直接使用实际回报。 |
偏差 (Bias) | 有偏 (Biased):由于使用估计值 $v\_t(s\_{t+1})$,初始估计不准会导致偏差。 | 无偏 (Unbiased):$G\_t$ 是 $v_\pi(s\_t)$ 的无偏估计。 |
方差 (Variance) | 低方差 (Low Variance):TD目标只依赖于一个随机奖励 $R\_{t+1}$ 和一个随机下一状态 $S\_{t+1}$(如果 $v\_t$ 固定)。 | 高方差 (High Variance):回报 $G\_t$ 是多个随机奖励 $R\_{t+1}, R\_{t+2}, \dots$ 的和,累积的随机性导致高方差。 |
对初始值敏感性 | 较高,因为是自举。 | 不敏感,因为它不使用初始价值估计进行更新。 |
计算效率 | 通常每步计算量小。 | 片段结束后计算回报,若片段长则涉及多步。 |
总结: TD相比MC通常学习更快,方差更小,并且能处理持续性任务,但它是有偏的。MC无偏,但方差大,只能用于片段任务。
3. 动作价值的TD学习:Sarsa
Sarsa (State-Action-Reward-State-Action) 是一种TD控制算法,用于估计 动作价值函数 $q_\pi(s,a)$ 并在此基础上改进策略以找到最优策略。
Sarsa算法 (用于策略评估)
- 目标: 给定策略 $\pi$,估计其动作价值 $\{q_\pi(s,a)\}\_{\forall s,a}$。
- 经验: 序列 $(s\_0, a\_0, r\_1, s\_1, a\_1, r\_2, s\_2, a\_2, \dots)$。算法名字来源于更新时需要的五元组 $(s\_t, a\_t, r\_{t+1}, s\_{t+1}, a\_{t+1})$。
- Sarsa 更新规则:
在时刻 $t$,智能体处于状态 $s\_t$,执行动作 $a\_t$,观察到奖励 $r\_{t+1}$ 和下一状态 $s\_{t+1}$。然后,在 $s\_{t+1}$ 根据当前策略 $\pi$ 选择下一个动作 $a\_{t+1}$。使用这个五元组更新 $q(s\_t, a\_t)$:
$$
q\_{t+1}(s\_t, a\_t) = q\_t(s\_t, a\_t) + \alpha\_t(s\_t, a\_t) [r\_{t+1} + \gamma q\_t(s\_{t+1}, a\_{t+1}) - q\_t(s\_t, a\_t)]
$$
对于所有其他未被访问的状态-动作对 $(s,a) \neq (s\_t, a\_t)$:
$$
q\_{t+1}(s,a) = q\_t(s,a)
$$
- TD目标: $r\_{t+1} + \gamma q\_t(s\_{t+1}, a\_{t+1})$。注意这里用的是在 $s\_{t+1}$ 实际将要执行的动作 $a\_{t+1}$ 的q值。
- 与基础TD算法的关系: 形式上非常相似,只是将状态价值 $v(s)$ 替换为动作价值 $q(s,a)$。
- 数学思想: Sarsa 算法是在求解用动作价值表示的贝尔曼期望方程: $$ q\_{\pi}(s,a) = E_\pi[R\_{t+1} + \gamma q\_{\pi}(S\_{t+1}, A\_{t+1}) | S\_t=s, A\_t=a] $$
- 收敛性: 与基础TD类似,在满足Robbins-Monro条件下, $q\_t(s,a)$ 会收敛到 $q_\pi(s,a)$。
Sarsa算法 (用于控制/策略搜索)
为了找到最优策略,Sarsa将策略评估和策略改进结合起来,遵循 广义策略迭代 (Generalized Policy Iteration, GPI) 的思想。
Sarsa 控制算法伪代码:
- 初始化 $q(s,a)$ 对于所有 $s,a$ (例如,任意值,除了终止状态的 $q(\text{terminal}, \cdot)=0$)。
- 对每个片段 (episode) 执行: a. 初始化状态 $s\_0$。 b. 根据当前 $q$ 值和探索策略 (如 $\epsilon$-greedy) 从 $s\_0$ 选择动作 $a\_0$。 c. 只要 $s\_t$ 不是终止状态: i. 执行动作 $a\_t$,观察奖励 $r\_{t+1}$ 和下一状态 $s\_{t+1}$。 ii. 根据当前 $q(s\_{t+1}, \cdot)$ 和探索策略 (如 $\epsilon$-greedy) 从 $s\_{t+1}$ 选择下一动作 $a\_{t+1}$。 iii. 更新 $q(s\_t, a\_t)$: $q(s\_t, a\_t) \leftarrow q(s\_t, a\_t) + \alpha [r\_{t+1} + \gamma q(s\_{t+1}, a\_{t+1}) - q(s\_t, a\_t)]$ iv. $s\_t \leftarrow s\_{t+1}$, $a\_t \leftarrow a\_{t+1}$。
- 策略改进: 通过 $\epsilon$-greedy 方式选择动作,隐式地改进了策略。随着 $q$ 值越来越接近 $q_\*$,$\epsilon$-greedy 策略也会越来越接近最优策略。
- $\epsilon$-greedy 策略: 以 $1-\epsilon$ 的概率选择当前估计的最优动作 (greedy),以 $\epsilon$ 的概率随机选择一个动作(探索)。
- 核心思想: Sarsa通过不断地用 $(s\_t, a\_t, r\_{t+1}, s\_{t+1}, a\_{t+1})$ 这样的经验来迭代更新动作价值函数,并通过 $\epsilon$-greedy 策略来平衡探索和利用,最终趋向于最优策略。
Sarsa 示例 (网格世界)
- 任务: 从特定起始状态(如左上角)找到到达目标状态的路径。
- 注意:这个任务目标是找到 一条 可行的路径,不一定要求所有状态都达到最优策略。
- 结果:
- 最终策略图显示了一条从起点到终点的路径。
- 学习曲线图:
- 每个片段的总奖励 (Total Reward per Episode): 随着学习的进行,总奖励通常会上升(或减少惩罚)。
- 每个片段的长度 (Episode Length): 随着策略的优化,到达目标的步数通常会减少。
- Sarsa 的表现显示它能够学到解决任务的策略,即使在一些未充分探索的区域,策略可能不是最优的,但只要能完成指定任务(如从特定点出发到达目标)即可。
4. 动作价值的TD学习:Expected Sarsa 和 n-步Sarsa
这些是Sarsa算法的变种和推广。
Expected Sarsa (期望Sarsa)
- 核心思想: 在计算TD目标时,对下一个状态 $s\_{t+1}$ 之后所有可能的动作 $a'$ 的Q值,按照当前策略 $\pi$ 的概率分布求期望,而不是像Sarsa那样只使用实际采样到的下一个动作 $a\_{t+1}$。
- Expected Sarsa 更新规则: $$ q\_{t+1}(s\_t, a\_t) = q\_t(s\_t, a\_t) + \alpha\_t [r\_{t+1} + \gamma \underbrace{E\_{A' \sim \pi(S\_{t+1})}[q\_t(s\_{t+1}, A')]}\_{\text{期望Q值}} - q\_t(s\_t, a\_t)] $$ 其中 $E\_{A' \sim \pi(S\_{t+1})}[q\_t(s\_{t+1}, A')] = \sum\_{a'} \pi(a'|s\_{t+1}) q\_t(s\_{t+1}, a')$。 这实际上就是 $r\_{t+1} + \gamma v\_t(s\_{t+1})$ (如果用当前Q值和策略计算状态价值)。
- 与Sarsa的区别:
- Sarsa的TD目标: $r\_{t+1} + \gamma q\_t(s\_{t+1}, a\_{t+1})$ (依赖于 $a\_{t+1}$ 的采样)
- Expected Sarsa的TD目标: $r\_{t+1} + \gamma \sum\_{a'} \pi(a'|s\_{t+1}) q\_t(s\_{t+1}, a')$ (不依赖于 $a\_{t+1}$ 的采样)
- 优缺点:
- 优点: 方差通常比Sarsa小,因为它消除了对 $A\_{t+1}$ 采样的随机性。性能可能更稳定。
- 缺点: 计算量稍大,因为需要对所有可能的下一个动作求和(或积分)。
- 数学思想: Expected Sarsa 求解的贝尔曼方程为: $$ q\_{\pi}(s,a) = E_\pi[R\_{t+1} + \gamma E\_{A' \sim \pi(S\_{t+1})}[q\_{\pi}(S\_{t+1}, A')] | S\_t=s, A\_t=a] $$ 即 $q\_{\pi}(s,a) = E_\pi[R\_{t+1} + \gamma v\_{\pi}(S\_{t+1}) | S\_t=s, A\_t=a]$。
- 示例: 在同样的网格世界路径寻找任务中,Expected Sarsa 也能找到解决方案,其学习曲线可能比Sarsa更平滑。
n-步Sarsa (n-step Sarsa)
- 核心思想: n-步Sarsa是Sarsa (1-步TD) 和蒙特卡洛方法 (MC, $\infty$-步TD) 的一种折中和推广。它向前看 $n$ 步的实际奖励,然后使用第 $n$ 步之后的价值估计来构建TD目标。
- n-步回报 ($G\_t^{(n)}$): $G\_t^{(1)} = R\_{t+1} + \gamma q\_{\pi}(S\_{t+1}, A\_{t+1})$ (Sarsa的目标基础) $G\_t^{(2)} = R\_{t+1} + \gamma R\_{t+2} + \gamma^2 q\_{\pi}(S\_{t+2}, A\_{t+2})$ $\dots$ $G\_t^{(n)} = R\_{t+1} + \gamma R\_{t+2} + \dots + \gamma^{n-1} R\_{t+n} + \gamma^n q\_{\pi}(S\_{t+n}, A\_{t+n})$ $G\_t^{(\infty)} = R\_{t+1} + \gamma R\_{t+2} + \gamma^2 R\_{t+3} + \dots$ (MC的回报) 注意:这些不同的 $G\_t^{(k)}$ 在期望意义上都等于 $q_\pi(S\_t,A\_t)$,只是分解方式不同。
- n-步Sarsa 更新规则: TD目标为 $n$-步回报的样本: $r\_{t+1} + \gamma r\_{t+2} + \dots + \gamma^{n-1}r\_{t+n} + \gamma^n q\_t(s\_{t+n}, a\_{t+n})$ $$ q\_{t+1}(s\_t, a\_t) = q\_t(s\_t, a\_t) + \alpha\_t [ (r\_{t+1} + \dots + \gamma^{n-1}r\_{t+n} + \gamma^n q\_t(s\_{t+n}, a\_{t+n})) - q\_t(s\_t, a\_t) ] $$
- 数据需求与更新时机:
- 为了更新 $q(s\_t, a\_t)$,需要收集到 $(s\_t, a\_t, r\_{t+1}, s\_{t+1}, a\_{t+1}, \dots, r\_{t+n}, s\_{t+n}, a\_{t+n})$。
- 这意味着对 $q(s\_t,a\_t)$ 的更新实际上发生在时间步 $t+n$ 之后,当所有需要的 $n$ 步信息都可用时。
- 例如,在 $t+n$ 时刻,我们可以用收集到的 $r\_{t+1}, \dots, r\_{t+n}$ 和 $q\_{t+n-1}(s\_{t+n}, a\_{t+n})$ 来更新 $q\_{t+n}(s\_t, a\_t)$。
- 性质 (Bias-Variance Trade-off):
- $n=1$: 即为Sarsa,偏差较大(依赖于初始估计),方差较小。
- $n=\infty$: (如果片段结束前达到) 即为MC,偏差小(无偏),方差较大。
- $1 < n < \infty$: n-步Sarsa在偏差和方差之间进行权衡。较大的 $n$ 通常导致较小的偏差但较大的方差。
- 与控制结合: n-步Sarsa同样可以用于策略评估,并与策略改进步骤(如 $\epsilon$-greedy)结合以搜索最优策略。
5. 最优动作价值的TD学习:Q-Learning
Q-Learning是一种非常经典且重要的 离策略 (off-policy) TD控制算法。它直接学习最优动作价值函数 $q_\*(s,a)$。
Q-Learning 算法
- 核心思想: Q-Learning的更新不依赖于实际采取的下一个动作 $a\_{t+1}$,而是使用在下一个状态 $s\_{t+1}$ 上可能的最优动作的Q值(即 $\max\_{a'} q\_t(s\_{t+1}, a')$)来构建TD目标。
- Q-Learning 更新规则: 在时刻 $t$,智能体处于状态 $s\_t$,执行动作 $a\_t$(可以由任何策略产生,包括探索性策略),观察到奖励 $r\_{t+1}$ 和下一状态 $s\_{t+1}$。 $$ q\_{t+1}(s\_t, a\_t) = q\_t(s\_t, a\_t) + \alpha\_t [r\_{t+1} + \gamma \max\_{a'} q\_t(s\_{t+1}, a') - q\_t(s\_t, a\_t)] $$ 对于所有其他未被访问的状态-动作对 $(s,a) \neq (s\_t, a\_t)$: $$ q\_{t+1}(s,a) = q\_t(s,a) $$
- TD目标: $r\_{t+1} + \gamma \max\_{a'} q\_t(s\_{t+1}, a')$
- 与Sarsa的TD目标对比:
- Sarsa: $r\_{t+1} + \gamma q\_t(s\_{t+1}, a\_{t+1})$ (依赖于实际选的 $a\_{t+1}$)
- Q-Learning: $r\_{t+1} + \gamma \max\_{a'} q\_t(s\_{t+1}, a')$ (不依赖于实际选的 $a\_{t+1}$,而是贪婪地选择使 $q\_t(s\_{t+1}, \cdot)$ 最大化的动作)
- 数学思想: Q-Learning 是在求解用动作价值表示的 贝尔曼最优方程 (Bellman Optimality Equation): $$ q_\*(s,a) = E[R\_{t+1} + \gamma \max\_{a'} q_\*(S\_{t+1}, a') | S\_t=s, A\_t=a] $$ 因此,Q-Learning直接逼近最优动作价值函数 $q_\*$,而不需要显式的策略评估和策略改进交替进行(指其核心更新机制是直接面向最优价值的)。
离策略 (Off-policy) vs. 同策略 (On-policy)
- 背景: 在TD学习中,通常涉及两个策略:
- 行为策略 (Behavior Policy, $\pi\_b$): 用于与环境交互、生成经验样本的策略。
- 目标策略 (Target Policy, $\pi\_T$): 我们希望学习和评估并最终优化的策略。
- 定义:
- 同策略 (On-policy): 行为策略和目标策略是同一个策略。即用当前正在学习和改进的策略去收集数据。
- 例如:Sarsa。它用当前策略 $\pi\_t$ 选择 $a\_t$ 和 $a\_{t+1}$,并用此经验更新 $q\_{\pi\_t}$。
- 离策略 (Off-policy): 行为策略和目标策略可以不同。即可以用一个固定的、探索性的策略收集数据,来学习另一个(可能是确定性的、最优的)目标策略。
- 例如:Q-Learning。它的TD目标中的 $\max\_{a'} q\_t(s\_{t+1}, a')$ 隐含了一个贪婪的目标策略,而产生 $(s\_t, a\_t, r\_{t+1}, s\_{t+1})$ 的行为策略可以是任意的(例如 $\epsilon$-greedy 或完全随机)。
- 同策略 (On-policy): 行为策略和目标策略是同一个策略。即用当前正在学习和改进的策略去收集数据。
- 离策略的优势:
- 更强的探索能力: 可以使用一个充分探索的行为策略(如随机策略)来收集覆盖状态-动作空间的数据,同时学习一个确定性的最优目标策略。
- 学习历史数据: 可以利用过去收集到的数据进行学习,即使这些数据是由旧的或不同的策略产生的。
- 学习人类经验: 可以学习人类演示者或其他智能体的经验。
- 判断算法是同策略还是离策略:
- 检查算法解决的数学问题:
- Sarsa解的是 $q_\pi(s,a)$ 的贝尔曼方程,$\pi$ 是当前策略。
- Q-Learning解的是 $q_\*(s,a)$ 的贝尔曼最优方程,这个方程本身不依赖于某个特定策略。
- 检查算法实施所需的数据:
- Sarsa 需要 $(s\_t, a\_t, r\_{t+1}, s\_{t+1}, a\_{t+1})$,其中 $a\_{t+1}$ 必须由当前的目标/行为策略在 $s\_{t+1}$ 产生。
- Q-Learning 只需要 $(s\_t, a\_t, r\_{t+1}, s\_{t+1})$ 来进行更新。$a\_t$ 可以由任意行为策略产生。
- 检查算法解决的数学问题:
Q-Learning 实现
Q-Learning本身是离策略的,但其行为策略可以有不同选择:
Q-Learning (同策略版本 - 行为策略与目标策略相关联):
- 行为策略通常是基于当前Q值的 $\epsilon$-greedy 策略。
- 伪代码与Sarsa控制类似,主要区别在于Q值更新公式使用 $\max$ 操作。
- 这里“同策略版本”是指行为策略是根据正在学习的Q值(目标)导出的,尽管Q-learning的更新机制本质上是离策略的。
1对于每个片段 (episode),执行: 2 初始化 s_t 3 只要 s_t 不是目标状态,则执行: 4 根据 q_t 和 ε-greedy 策略选择 a_t (行为策略) 5 执行 a_t,得到 r_{t+1}, s_{t+1} 6 更新 q 值 (目标策略是贪婪的): 7 q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - α_t [q_t(s_t, a_t) - (r_{t+1} + γmax_a' q_t(s_{t+1}, a'))] 8 s_t ← s_{t+1}
Q-Learning (离策略版本 - 行为策略与目标策略分离):
- 行为策略 $\pi\_b$ (例如,一个探索性强的策略,如均匀随机或固定的 $\epsilon$-greedy) 用于生成经验。
- 目标策略 $\pi\_T$ 是基于当前Q值的贪婪策略 (deterministic greedy)。
- 伪代码:
1目标:从行为策略 πb 生成的经验样本中,学习最优目标策略 πT (通过学习q*)。 2 3对于由 πb 生成的每个片段 {s0, a0, r1, s1, a1, r2, ...},执行: 4 对于片段的每一步 t = 0, 1, 2, ...,执行: 5 // (st, at) 来自 πb 的交互,rt+1, st+1 是环境反馈 6 更新 (st, at) 的 q 值: 7 q_{t+1}(s_t, a_t) = q_t(s_t, a_t) - α_t [q_t(s_t, a_t) - (r_{t+1} + γmax_a' q_t(s_{t+1}, a'))] 8 // 目标策略 πT (隐式地) 是 q_{t+1} 的贪婪策略 9 // π_{T,t+1}(a|s_t) = 1 if a = argmax_a' q_{t+1}(s_t, a'), else 0
Q-Learning 示例 (网格世界)
- 任务: 为所有状态找到最优策略。
- 奖励设置: $r\_{\text{boundary}} = r\_{\text{forbidden}} = -1$, $r\_{\text{target}} = 1$, $\gamma=0.9$, $\alpha=0.1$。
- Ground Truth: 先展示该网格世界的最优策略和最优状态价值。
- 实验:
- 充分探索的行为策略: 使用均匀随机策略 (每个动作概率0.2) 作为行为策略 $\pi\_b$。
- 结果: 离策略Q-Learning能够学到接近最优的策略。状态价值误差图显示误差随学习步数增加而减小。
- 探索不足的行为策略:
- 行为策略 $\pi\_b$ 倾向于向右走 ($\epsilon=0.5$ 或 $\epsilon=0.1$ 的 $\epsilon$-greedy,但有固定偏好)。
- 结果: 由于行为策略探索性不足,很多状态-动作对未被充分访问,导致Q-Learning学到的策略与最优策略有较大差距,状态价值误差也较大。
- 充分探索的行为策略: 使用均匀随机策略 (每个动作概率0.2) 作为行为策略 $\pi\_b$。
- 结论: Q-Learning作为离策略算法,其学习效果(尤其是能否找到全局最优)仍然依赖于行为策略能否提供足够覆盖度的经验数据。探索非常重要。
6. 统一的观点 (A Unified Point of View)
本讲介绍的多种TD算法,包括Sarsa, n-步Sarsa, Q-Learning, 甚至MC,都可以从一个统一的视角来看待。
统一的更新表达式
所有这些算法的动作价值更新都可以写成类似的形式:
$$ q\_{t+1}(s\_t, a\_t) = q\_t(s\_t, a\_t) + \alpha\_t(s\_t, a\_t) [\bar{q}\_t - q\_t(s\_t, a\_t)] $$或者
$$ q\_{t+1}(s\_t, a\_t) = q\_t(s\_t, a\_t) - \alpha\_t(s\_t, a\_t) [q\_t(s\_t, a\_t) - \bar{q}\_t] $$其中 $\bar{q}\_t$ 是不同算法中定义的 TD目标 (TD Target)。
算法 (Algorithm) | TD 目标 $\bar{q}_t$ 的表达式 |
---|---|
Sarsa | $\bar{q}\_t = r\_{t+1} + \gamma q\_t(s\_{t+1}, a\_{t+1})$ |
Expected Sarsa | $\bar{q}\_t = r\_{t+1} + \gamma \sum\_{a'} \pi(a' \mid s\_{t+1}) q_t(s_{t+1}, a')$ |
n-步 Sarsa (n-step Sarsa) | $\bar{q}\_t = r\_{t+1} + \gamma r\_{t+2} + \cdots + \gamma^{n-1}r\_{t+n} + \gamma^n q\_t(s\_{t+n}, a\_{t+n})$ |
Q-学习 (Q-learning) | $\bar{q}\_t = r\_{t+1} + \gamma \max\_{a'} q\_t(s\_{t+1}, a')$ |
蒙特卡洛 (Monte Carlo) | $\bar{q}\_t = G\_t = r\_{t+1} + \gamma r\_{t+2} + \cdots + \gamma^{T-t-1}r\_T$(直到片段结束) 若设 $\alpha\_t = 1$,则 $q\_{t+1} = \bar{q}\_t$ |
统一的数学目标
所有这些算法都可以看作是求解相应 贝尔曼方程 (BE) 或 贝尔曼最优方程 (BOE) 的 随机近似 (Stochastic Approximation) 算法。
算法 (Algorithm) | 求解的方程 (Equation to solve) | 条件 (Condition) | 方程类型 (Equation Type) |
---|---|---|---|
Sarsa | $q_{\pi}(s,a) = \mathbb{E}[R_{t+1} + \gamma q_{\pi}(S_{t+1}, A_{t+1}) \mid S_t=s, A_t=a]$ | $S_t=s, A_t=a$ | BE |
Expected Sarsa | $q_{\pi}(s,a) = \mathbb{E}\left[R_{t+1} + \gamma \sum_{a'} \pi(a' \mid S_{t+1}) q_{\pi}(S_{t+1}, a') \mid S_t=s, A_t=a\right]$ | $S_t=s, A_t=a$ | BE |
n-步 Sarsa (n-step Sarsa) | $q_{\pi}(s,a) = \mathbb{E}[R_{t+1} + \cdots + \gamma^{n-1}R_{t+n} + \gamma^n q_{\pi}(S_{t+n}, A_{t+n}) \mid S_t=s, A_t=a]$ | $S_t=s, A_t=a$ | BE |
Q-学习 (Q-learning) | $q\_\*(s,a) = \mathbb{E}[R_{t+1} + \gamma \max_{a'} q_\*(S_{t+1}, a') \mid S_t=s, A_t=a]$ | $S_t=s, A_t=a$ | BOE |
蒙特卡洛 (Monte Carlo) | $q_{\pi}(s,a) = \mathbb{E}[G_t \mid S_t=s, A_t=a]$ | $S_t=s, A_t=a$ | BE(定义) |
- Sarsa及其变种(Expected Sarsa, n-step Sarsa)以及MC,在用于控制时,通常与策略改进步骤(如 $\epsilon$-greedy)结合,通过GPI框架来搜索最优策略。
- Q-Learning直接求解贝尔曼最优方程,其目标 $q_*$ 已经对应最优策略。
与基于模型的算法对比:
- 价值迭代 (Value Iteration) 和 策略迭代 (Policy Iteration) 是 基于模型 (model-based) 的方法,它们也求解贝尔曼(最优)方程,但需要知道环境模型 $p(s',r|s,a)$。
- TD学习方法是 无模型 (model-free) 的方法,它们通过与环境交互采样经验来求解这些方程。
7. 总结 (Summary of Lecture)
- 启发性示例: 展示了RM算法与TD算法的联系。
- 基础TD算法 (状态价值): 介绍了TD(0)用于策略评估,核心概念是TD目标、TD误差和自举。
- Sarsa (动作价值): 将TD思想扩展到动作价值,是同策略的控制算法。
- Sarsa变种:
- Expected Sarsa: 降低了Sarsa的方差。
- n-step Sarsa: 统一了Sarsa和MC方法,提供了偏差-方差的权衡。
- Q-Learning: 非常重要的离策略控制算法,直接学习最优动作价值函数。
- On-policy vs. Off-policy: 是强化学习中的重要概念。Sarsa, MC (典型控制) 是on-policy,Q-Learning是off-policy。
- 离策略性质使得Q-Learning在与神经网络结合(如Deep Q-Learning, DQN)时非常关键,因为可以利用经验回放 (experience replay) 等技术。
- 统一视角: 所有TD算法共享相似的更新结构,区别在于TD目标的定义;它们都是求解贝尔曼(最优)方程的随机近似方法。
- 展望: 下节课将介绍价值函数近似,将TD方法从表格形式推广到函数形式,引入神经网络,讲解经典的Deep Q-Learning。
核心要点:
- TD学习是强化学习中非常核心和实用的一类无模型方法。
- 理解TD目标、TD误差和自举是掌握TD算法的关键。
- Sarsa (on-policy) 和 Q-Learning (off-policy) 是两种基本且重要的TD控制算法。
- 选择合适的TD算法及参数 (如 $n$ in n-step Sarsa, $\alpha, \epsilon$) 对学习效果至关重要。
- 探索与利用的平衡对于所有控制算法都是核心问题。