第8章 基于表格型方法的规划和学习(1) 模型、规划与学习和Dyna-Q
第8章 基于表格型方法的规划和学习
强化学习中的基于模型(如动态规划、启发式搜索)与无模型方法(如蒙特卡洛、时序差分)虽在是否依赖环境模型上存在差异,但核心均为价值函数的计算;所有方法均通过对未来事件的展望计算回溯价值,并以此作为目标更新近似价值函数;本章目标是整合基于模型与无模型方法,强调它们可混合使用。
模型与规划
环境模型
环境模型指的是智能体用于预测环境对其动作反应的机制。给定状态 sss 和动作 aaa,模型预测后继状态 s′s's′和即时收益 rrr。随机模型有两种形式,分布模型输出所有可能 (s′,r)(s', r)(s′,r) 及其概率 p(s′,r∣s,a)p(s', r \mid s, a)p(s′,r∣s,a),例如动态规划中使用的 MDP 转移动态。样本模型从真实概率分布中采样,输出一个确定的 (s′,r)(s', r)(s′,r), 例如第5章二十一点游戏中的模拟器。分布模型更强(可生成样本模型),但样本模型更易获得(如掷骰子模拟)。
模型用于模拟经验
给定起始状态和动作,样本模型生成一个可能的转移;分布模型生成所有可能转移及其概率。给定起始状态和策略,样本模型可生成整幕模拟经验分布模型可生成所有可能幕及其概率。
规划
规划是以环境模型为输入,通过计算生成或改进策略的过程。本章聚焦状态空间规划,其可视为在状态空间中搜索最优策略或实现目标的最优决策路径;每个动作都会引发状态之间的转移,价值函数的定义 和计算都是基于状态的。
统一结构
- 所有的状态空间规划算法都会利用计算价值函数作为改善策略的关键中间步骤
- 它们通过基于仿真经验的回溯操作来计算价值函数
所有状态空间规划算法与学习方法共享以下通用结构:
模型 → 模拟经验 --(回溯)→ 价值函数 → 策略
例如动态规划符合此结构,其遍历状态,生成所有可能转移;利用分布模型计算期望回溯值;更新价值函数。其他规划方法也适用该结构,差异仅在于回溯操作的形式;执行顺序;信息保留时长。
规划 方法和学习方法
学习方法和规划方法的核心是通过回溯操作来评估价值函数。规划利用模拟仿真实验产生的经验, 学习方法使用环境产生的真实经验。这种差异导致了例如如何评估性能,以及如何产生丰富的经验等差异。但是通用结构意味着许多思想和算法可以在规划和学习之间迁移。在许多情况下,学习算法可以代替规划方法的关键回溯步骤。
随机采样单步表格型 Q 规划
该算法将 Q 学习应用于样本模型生成的模拟经验,实现规划:
算法流程:
无限循环执行:
-
随机选择状态 S∈SS \in \mathcal{S}S∈S 和动作 A∈A(S)A \in \mathcal{A}(S)A∈A(S);
-
将 (S,A)(S, A)(S,A) 输入样本模型,获得收益 RRR 和后继状态 S′S'S′;
-
执行单步 Q 更新:
Q(S,A)←Q(S,A)+α[R+γmaxaQ(S′,a)−Q(S,A)]Q(S, A) \leftarrow Q(S, A) + \alpha \big[ R + \gamma \max_a Q(S', a) - Q(S, A) \big] Q(S,A)←Q(S,A)+α[R+γamaxQ(S′,a)−Q(S,A)]
收敛条件:
- 每个 (s,a)(s, a)(s,a) 对在步骤1中被无限次选中;
- 步长 α\alphaα 随时间适当衰减。
该算法可收敛到模型所对应环境的最优策略。
[!NOTE]
标准 Q 学习使用真实经验(即智能体在真实环境中执行动作后观察到的 S,A,R,S′S, A, R, S'S,A,R,S′)来更新价值函数;随机采样单步表格型 Q 规划则将 Q 学习的更新机制应用于由样本模型生成的模拟经验;由于 Q 学习是一种无模型的增量式学习方法,它只需要 (S,A,R,S′)(S, A, R, S')(S,A,R,S′) 元组作为输入,而不依赖这些数据的来源;因此,只要样本模型能正确反映环境动态(即其生成的转移与真实环境同分布),那么用模拟数据驱动 Q 学习,同样可以收敛到该模型所代表环境的最优策略。
学习与规划在算法层面可以统一,同一个学习算法(如 Q 学习)既可用于从真实经验中学习(无模型学习),也可用于从模型生成的模拟经验中“规划”(基于模型的规划)。
增量式小步长规划的优势
使用极小步长的规划方法可在任意时刻中断或重定向,几乎不浪费计算资源;是高效融合行动规划与模型学习的关键;对于大规模无法精确求解的问题,可能是最有效的方法。
Dyna: 集成在一起的规划、动作和学习
当智能体在与环境实时交互的同时进行规划时,会面临几个关键问题。模型动态变化,新交互数据会更新环境模型,而规划依赖该模型,因此规划需能适应模型的持续演化。规划需有针对性,理想情况下,规划应聚焦于当前状态或即将访问的状态,而非盲目搜索整个状态空间。计算资源有限,模型学习(如拟合动态)和决策规划(如搜索最优策略)都可能很耗时,需在两者间合理分配计算时间。这些问题表明:规划不能是离线、静态、无差别的一次性过程,而必须与感知、学习、行动紧密协同。
为探索上述问题,作者提出 Dyna-Q 作为一个集成框架,包含在线规划智能体所需的四大核心功能,与环境交互(动作选择与执行);直接强化学习(从真实经验更新策略);模型学习(从经验构建环境模型);规划(利用模型生成模拟经验并更新策略)。但每个功能都以最简形式实现(例如:表格模型、确定性假设、随机采样规划),不追求性能最优,而是为了清晰展示各组件如何协同工作;为后续章节讨论更复杂的变体(如优先级规划、不确定性建模等)奠定概念基础。
经验的双重作用
真实经验在 Dyna 中扮演两个角色,直接强化学习中,经验直接用于更新价值函数和策略(如标准 Q 学习)。模型学习众,经验用于构建或更新环境模型,进而支持间接强化学习(即规划)。
这对应两种学习路径,直接路径是经验 → 价值/策略;间接路径是经验 → 模型 → 模拟经验 → 价值/策略(即规划)。间接方法(规划)能更高效利用有限经验,减少与环境交互;直接方法更简单、鲁棒,不受模型偏差影响。Dyna 的核心主张是:不应将二者对立,而应融合使用。
Dyna-Q
定义
Dyna-Q 是一个持续迭代的集成系统,包含规划、动作执行、模型学习、直接强化学习。规划方法采用随机采样单步表格型 Q 规划算法。 直接强化学习方法采用单步表格型 Q 学习。 模型学习方法是基于表格的;假设环境是确定性的;在每次真实转移 St,At→Rt+1,St+1S_t, A_t \rightarrow R_{t+1}, S_{t+1}St,At→Rt+1,St+1 后,模型在表格中为 (St,At)(S_t, A_t)(St,At) 建立条目,记录预测值为最后观察到的 Rt+1R_{t+1}Rt+1 和 St+1S_{t+1}St+1;因此,对任意曾经历过的状态-动作对 (s,a)(s, a)(s,a) 查询模型,将返回最后一次观测到的 (r,s′)(r, s')(r,s′) 作为预测。
在规划过程中,Q 规划算法仅从之前实际经历过的状态-动作二元组中随机采样;因此,模型永远不会被查询未见过的 (s,a)(s, a)(s,a) 对,避免了对未知状态-动作的无效或错误预测。
- 真实经验流(中间列):智能体与环境交互,产生真实经验 (S,A,R,S′)(S, A, R, S')(S,A,R,S′)。
- 直接强化学习(左侧箭头):使用真实经验直接更新价值函数和策略。
- 基于模型的过程(右侧):模型从真实经验中学习并进行用于仿真,生成模拟经验;搜索控制指为模拟经验选择初始状态和动作的过程(在 Dyna-Q 中即“从已访问过的 (s,a)(s, a)(s,a) 中随机采样”);将相同的强化学习方法(Q 学习)应用于模拟经验,执行规划,如同这些经验真实发生过一样。
强化学习方法是学习与规划的最终共同路径。学习和规划共享几乎全部计算机制,唯一区别在于经验来源,学习使用真实经验,规划使用模拟经验。
串行实现中的执行顺序
概念上,四个过程并行发生;在串行计算机上,需指定执行顺序。动作执行、模型学习、直接强化学习:计算开销小,假设仅占用少量时间;规划属于计算密集型,利用每步剩余时间执行;具体地,在每个真实交互步骤之后(完成动作、模型更新、Q 学习),执行 n 次 Q 规划迭代(即算法步骤 f 中的 n 次循环)。
若从 Dyna-Q 中省略模型学习(步骤 e)和规划(步骤 f), 剩余部分即为标准的单步表格型 Q 学习算法。
[!NOTE]
Q(s,a)Q(s, a)Q(s,a) 是一个动作价值函数的估计值。它表示在状态 sss 下执行动作 aaa 后,按照当前策略继续行动所能获得的预期累积折扣回报(即未来收益的加权和)。Q(s,a)Q(s, a)Q(s,a)用于动作选择(例如通过 ε\varepsilonε-贪心策略:以高概率选 argmaxaQ(s,a)\arg\max_a Q(s,a)argmaxaQ(s,a))和在直接强化学习和规划中被更新,以逼近最优动作价值函数 q∗(s,a)q_*(s, a)q∗(s,a)。在表格型方法中,Q(s,a)Q(s, a)Q(s,a) 是一个查找表(lookup table),为每个状态-动作对存储一个实数值。
Model(s,a)\text{Model}(s, a)Model(s,a) 是智能体内部维护的环境模型,给定状态 sss 和动作 aaa,模型预测环境会产生的即时收益 rrr 和后继状态 s′s's′。在 Dyna-Q 中是一个表格,假设环境是确定性的;Model(s,a)\text{Model}(s, a)Model(s,a) 存储的是最后一次在 (s,a)(s, a)(s,a) 下实际观察到的 (r,s′)(r, s')(r,s′) 对。在规划阶段,用于生成模拟经验(即“想象”执行某个 (s,a)(s, a)(s,a) 会发生什么);只对曾经真实经历过的 (s,a)(s, a)(s,a) 有定义(Dyna-Q 不会查询未见过的条目)。
初始化:对所有 s∈Ss \in \mathcal{S}s∈S, a∈A(s)a \in \mathcal{A}(s)a∈A(s),初始化 Q(s,a)Q(s,a)Q(s,a) 和 Model(s,a)\text{Model}(s,a)Model(s,a)。
无限循环:
-
(a) 设当前状态 SSS 为非终止状态;
-
(b) 根据 ε\varepsilonε-贪心策略选择动作 AAA;
-
© 执行 AAA,观察收益 RRR 和下一状态 S′S'S′;
-
(d) 直接 RL 更新:
Q(S,A)←Q(S,A)+α[R+γmaxaQ(S′,a)−Q(S,A)]Q(S, A) \leftarrow Q(S, A) + \alpha \big[ R + \gamma \max_a Q(S', a) - Q(S, A) \big] Q(S,A)←Q(S,A)+α[R+γamaxQ(S′,a)−Q(S,A)] -
(e) 模型学习(假设环境确定):
Model(S,A)←(R,S′)\text{Model}(S, A) \leftarrow (R, S') Model(S,A)←(R,S′) -
(f) 规划:重复 nnn 次
-
随机选择一个曾经历过的状态 SSS;
-
随机选择一个在该状态下曾执行过的动作 AAA;
-
从模型获取 (R,S′)←Model(S,A)(R, S') \leftarrow \text{Model}(S, A)(R,S′)←Model(S,A);
-
执行 Q 更新:
Q(S,A)←Q(S,A)+α[R+γmaxaQ(S′,a)−Q(S,A)]Q(S, A) \leftarrow Q(S, A) + \alpha \big[ R + \gamma \max_a Q(S', a) - Q(S, A) \big] Q(S,A)←Q(S,A)+α[R+γamaxQ(S′,a)−Q(S,A)]
-
[!NOTE]
步骤 (f) 中使用的状态-动作对 (S,A)(S, A)(S,A) 确实来自真实经验(即“曾经历过的”), 但在规划中使用它们生成的 (R,S′)(R, S')(R,S′) 是模型提供的模拟经验, 因此整个 (f) 过程属于基于模型的规划,而非直接使用真实经验。
在步骤 (f) 中“随机选择一个曾经历过的状态 SSS” 和 “在该状态下曾执行过的动作 AAA” ,只是为了限制搜索空间,确保只对已有模型知识的状态-动作对进行规划;但随后的 (R,S′)(R, S')(R,S′) 不是从记忆中调取历史真实数据,而是通过查询模型 Model(S,A)\text{Model}(S, A)Model(S,A) 获得。而根据 Dyna-Q 的模型定义(步骤 e):
Model(S,A)←(Rlast,Slast′)\text{Model}(S, A) \leftarrow (R_{\text{last}}, S'_{\text{last}}) Model(S,A)←(Rlast,Slast′)
即模型只存储最后一次在 (S,A)(S, A)(S,A) 下观察到的真实结果。所以:输入((S,A)(S, A)(S,A))来自真实经验,输出((R,S′)(R, S')(R,S′))是模型对环境的预测(虽然是基于真实数据的确定性复制)。真实经验指智能体实际与环境交互产生的 (St,At,Rt+1,St+1)(S_t, A_t, R_{t+1}, S_{t+1})(St,At,Rt+1,St+1),发生在步骤 ©。模拟经验:指在内部模型中“想象”出来的转移,即使 (R,S′)(R, S')(R,S′) 是过去真实发生过的,但在规划时:它不是当前环境反馈;不消耗环境交互;可被重复调用任意次数(例如对同一个 (S,A)(S, A)(S,A) 规划 100 次);它的作用是支持反事实推理(“如果我现在在状态 S 做动作 A,会发生什么?”)。因此,尽管模型内容源于真实经验,规划过程本身是在模拟环境中运行的,属于间接学习。
实验
在 47 个状态中, 每一个状态 都有四种动作: 上、下、左、右, 这使得智能体一定会走到紧挨它周围的某个状态, 除非移动被屏障或迷宫的边缘阻挡。在遮挡情况下,智能体仍然保持它原来的位置。在所有的 转移中, 收益都是零, 除了目标状态是 +1 外。到达目标状态 (G) 后, 智能体返回到开始状态 (S) 以开始新的一幕。这是一个带折扣的分幕式任务, 其中 γ=0.95\gamma = 0.95γ=0.95 。其中的变量是每步真实交互后执行的规划步数 nnn。
n=0n = 0n=0(无规划,使用单步表格型 Q 学习)约 25 幕达到近优性能;n=5n = 5n=5约 51245\frac{1}{24}5241 幕;n=50n = 50n=50:约 31243\frac{1}{24}3241 幕。
无规划智能体每幕仅在到达目标时获得一次有效学习信号(稀疏奖励);带规划智能体利用模型在后台反复回溯,即使未到达目标,也能将奖励信息快速传播至起始区域。规划使价值信息在单幕内多次传播,显著加速学习。
上图是带规划与无规划的Dyna-Q 智能体在第二幕中间时学习到的策略。箭头表示在每个状态下的贪心动作; 如果在某个状态上没有箭头, 那么所有的动作价值在那个状态下是相等的。黑色方块表示智能体的位位置。
第一幕时:智能体从起点 SSS 开始,随机探索;由于奖励仅在到达目标 GGG 时出现(+1),其余转移收益为 0;无论是否使用规划,第一幕结束前都无法获得任何正向奖励信号;因此,第一幕中所有方法(包括带规划的)都只能进行极有限的学习,仅在到达 GGG 时更新一次价值。第二幕开始后,无规划智能体(如 n=0n=0n=0)仍需等到再次到达目标才能获得新的学习信号;价值信息只能逐幕、单次地从目标向起点缓慢传播;学习效率低。
带规划智能体(如 n=50n=50n=50)在第二幕的早期阶段(甚至尚未到达目标前),即可利用第一幕学到的模型进行规划;规划过程在后台反复模拟;通过 Q 更新,将这一奖励信号立即回溯传播到附近状态,再进一步传播到更远状态;即使智能体仍在起点附近徘徊,其 QQQ 表已通过规划构建出一个覆盖较广区域的初步策略;这使得它能主动朝目标方向移动,而不再盲目探索。
第三幕结束时经过两幕的真实交互加大量后台规划,价值信息已从目标高效传播至起点;智能体学到完整的最优策略,每幕步数达到理论最小值。规划的本质是:利用已获得的局部经验(尤其是奖励事件),通过模型在内部反复“重放”和“扩展”其影响范围,从而在单幕内实现多步价值回溯。
因此,规划极大地提升了样本效率和学习速度,尤其在奖励稀疏的任务中。
总的来说,概念上,Dyna-Q动作、学习、规划、模型更新同时进行;每步真实交互后,用剩余计算时间执行 nnn 次规划迭代;规划以小步长持续进行,可随时中断而不损失进度;当环境变化时,模型随之更新,规划自动调整策略。Dyna 智能体既是反应式(对当前感知立即响应),也是预谋式(持续后台规划)。
练习
多步自举法能否达到与 Dyna 方法相当的性能?
多步自举法的优势在于更长的回溯路径,如 nnn-step TD通过连接更长的真实经验序列来更新价值函数。使用 nnn 步后的回报作为目标
Gt:t+n=Rt+1+γRt+2+⋯+γn−1Rt+n+γnV(St+n)G_{t:t+n} = R_{t+1} + \gamma R_{t+2} + \cdots + \gamma^{n-1} R_{t+n} + \gamma^n V(S_{t+n}) Gt:t+n=Rt+1+γRt+2+⋯+γn−1Rt+n+γnV(St+n)
相比单步 TD(n=1n=1n=1),它能更快地将奖励信号传播到更早的状态,缓解“奖励稀疏”问题。在固定经验序列下,多步方法通常比单步方法收敛更快、方差更低。
但是多步自举法只能利用已实际发生的转移序列进行回溯。在迷宫任务中,若智能体尚未到达目标状态 GGG,则整条轨迹的回报仍为 0,无法提供有效学习信号;即使使用 n=100n=100n=100,只要 St+n≠GS_{t+n} \neq GSt+n=G,目标值仍接近 0,价值无法向起点传播。同时样本效率受限,每个状态-动作对的价值更新完全依赖其在真实轨迹中的出现频率和位置。
其实现了对单步方法的改进,但是仍没法做到媲美Dyna。