

本内容暂时为 PPT 转述,后续会进行修编
第 11 讲:集成规划与学习#
引言与回顾 (Page 2-3)#
- 背景: 前面我们学习了
- 无模型学习 (Model-Free Learning) 方法:如蒙特卡洛 (MC)、时序差分 (TD) (Sarsa, Q-learning) 以及 n 步自举法。这些方法直接从与环境交互产生的真实经验中学习价值函数或策略,不试图显式地学习环境的模型。它们的核心是回溯 (Backup) 操作,利用后续奖励和价值估计来更新当前状态或状态-动作对的价值。
- 基于模型 (Model-Based) 的方法:如动态规划 (Dynamic Programming, DP)。这些方法需要一个环境模型(状态转移概率 和奖励函数 )。基于模型,可以通过规划 (Planning) 来计算价值函数或策略,例如通过价值迭代或策略迭代,遍历状态空间进行回溯计算。
- 目标 (Page 2):如何将这两种方法结合起来,发挥各自的优势?即如何在学习过程中利用模型进行规划,加速学习过程或提高数据利用率?
- 模型与规划定义 (Page 3):
- 模型 (Model):对环境工作方式的一种表示,通常包括状态转移动态和奖励机制。
- 规划 (Planning):利用模型来生成模拟经验 (Simulated Experience),并使用这些模拟经验通过回溯等方式来改进价值函数或策略的过程。这与无模型学习使用真实经验进行回溯是类似的,但经验来源不同。
环境模型 (Environment Model) (Page 4-12)#
- 模型组成 (Page 4):一个模型通常需要描述两部分:
- 状态转移模型 (State Transition Model):预测采取动作 后从状态 转移到下一个状态 的概率。
- 奖励模型 (Reward Model):预测在状态 采取动作 后获得的期望立即奖励。
- 参数化模型 (Page 5):
- 模型 通常由一组参数 定义,表示为 ,其中 和 是对真实环境动态和奖励的近似。
- 模型可以用来预测(或采样)下一个状态和奖励: (注意: 通常输出期望奖励,或者是一个奖励分布)
- 模型学习 (Model Learning) (Page 6):
- 目标:从智能体与环境交互获得的真实经验数据 中学习(估计)模型参数 。
- 这本质上是一个监督学习问题:
- 输入:状态-动作对
- 输出/目标:下一个奖励和下一个状态
- 可以通过选择合适的损失函数(如均方误差、KL散度)并最小化经验损失来找到最优参数 。
- 模型的类型 (Page 7-10):
- 期望模型 (Expectation Model) (Page 7):模型直接输出期望的下一个状态(或状态特征)和期望的奖励。例如, 或 。
- 优点:简单。对于线性模型和线性价值函数,使用期望模型进行多步预测等于预测的期望值 (Page 7 公式证明)。
- 缺点:丢失了环境的随机性信息,可能导致预测偏差(例如,无法预测到低概率但影响重大的事件,如掉入陷阱)。
- 样本模型 / 生成模型 (Sample/Generative Model) (Page 8):模型可以生成下一个状态和奖励的样本,而不仅仅是期望值。它能反映环境的随机性。
其中 代表随机性来源。
- 优点:更真实地反映环境动态。
- 缺点:引入了额外的采样噪声。
- 分布模型 (Distribution Model) (Page 9):模型显式地表示整个转移概率分布 和奖励分布 。
- 优点:信息最完整。
- 缺点:学习和使用(尤其是在规划中)计算复杂度高,因为需要处理状态和奖励的所有可能性(分支问题)。
- 具体模型实现 (Page 10):查找表模型、线性模型、高斯过程模型、深度神经网络模型等。
- 期望模型 (Expectation Model) (Page 7):模型直接输出期望的下一个状态(或状态特征)和期望的奖励。例如, 或 。
- 查找表模型学习 (Lookup Table Model Learning) (Page 11):
- 适用于离散的状态和动作空间。
- 最简单的模型,直接存储观察到的转移和奖励。
- 学习过程:记录每个状态-动作对 被访问的次数 ,以及从 转移到 的次数 和对应的奖励总和。
- 估计概率和奖励: (Page 11 的公式是用指示函数写的,效果相同)
- 作为样本模型使用:存储所有经验元组 。当需要从 进行模拟转移时,从所有以 开始的存储元组中随机抽取一个,将其中的 作为模拟结果。
- 示例:查找表模型 (Page 12):
- 展示了一个简单的两状态(A, B)环境和一些幕(episode)的经验。
- 根据经验数据构建了一个查找表(样本)模型。例如,从状态 B 出发,有 6 次经验导致 ,有 2 次经验导致 。因此,模型会以 75% 的概率模拟出 ,以 25% 的概率模拟出 。
规划 (Planning) (Page 13, 15-18)#
- 基本概念 (Page 13):
- 给定一个(学习到的)模型 。
- 规划的目标是利用这个模型来求解对应的(近似)MDP 的最优价值函数或策略。
- 可以使用各种规划算法,如价值迭代、策略迭代、树搜索等。
- 基于采样的规划 (Sample-Based Planning) (Page 15):
- 一种非常通用且强大的规划方法,特别是与学习到的模型结合时。
- 核心思想:不直接使用模型的概率分布 和 (这可能很复杂或难以获得),而是仅使用模型来生成模拟的经验样本。
- 然后,将任何无模型强化学习算法(如 MC 控制、Sarsa、Q-learning)应用于这些模拟的经验样本上,就如同这些样本来自真实环境一样。
- 优点:避免了处理复杂概率模型的计算,可以直接复用高效的无模型 RL 算法。
- 示例:基于采样的规划 (Page 16, 18):
- 继续使用 Page 12 的例子。基于学习到的查找表模型,生成模拟的经验序列,例如
A,0,B,1
,B,1,B,1
,B,0,A,0
,A,0,B,1
, … - 将这些模拟序列输入到 MC 学习算法中,可以估计出状态价值 和 。
- 继续使用 Page 12 的例子。基于学习到的查找表模型,生成模拟的经验序列,例如
- 随机采样单步表格型 Q 规划 (Random-sample one-step tabular Q-planning) (Page 17):
- 一个具体的基于采样的规划算法。
- 算法流程:
plaintext无限循环: 1. 随机选择一个状态 S (通常是从之前访问过的状态中选取) 随机选择一个动作 A (通常是从在状态 S 下尝试过的动作中选取) 2. 查询模型 Model(S, A),获得一个**模拟**的下一奖励 R 和下一状态 S' 3. 应用一步表格型 Q-learning 更新: Q(S, A) <- Q(S, A) + alpha * [R + gamma * max_a Q(S', a) - Q(S, A)]
- 特点:它在模型产生的模拟数据上执行 Q-learning 更新,可以看作是在“思考”或“排练”中学习。
集成规划与学习:Dyna 架构 (Integrating Planning and Learning: The Dyna Architecture) (Page 19-32)#
- 动机 (Page 19, 22):将直接从真实经验中学习(Direct RL)和利用模型进行规划(Planning / Indirect RL)结合起来。
- 经验来源 (Page 19):
- 真实经验:来自与真实环境的交互。
- 模拟经验:由学习到的模型生成。
- Dyna 架构思想 (Page 20, 22, 23, 26):
- 智能体与环境交互,产生真实经验。
- 真实经验同时用于两个目的:
- 直接学习 (Direct RL):直接更新价值函数或策略(例如,通过 Q-learning 更新)。
- 模型学习 (Model Learning):更新环境模型 。
- 在与环境交互的间隙(或者说,每一步真实交互之后),执行若干步规划 (Planning):
- 使用当前学习到的模型 生成模拟经验。
- 使用模拟经验来更新价值函数或策略(例如,通过 Q-planning 更新)。
- Dyna-Q 算法 (Page 24-25):
- 一个具体的实现 Dyna 架构的算法,结合了 Q-learning 和 Q-planning。
- 算法流程:
plaintext初始化 Q(s, a) 和 Model(s, a) 对所有 s in S, a in A(s) 无限循环: (a) S <- 当前 (非终止) 状态 (b) A <- epsilon-greedy(S, Q) // 根据当前 Q 值选择真实动作 (c) 执行动作 A;观察产生的真实奖励 R 和真实下一状态 S' (d) // 直接强化学习更新 (使用真实经验) Q(S, A) <- Q(S, A) + alpha * [R + gamma * max_a Q(S', a) - Q(S, A)] (e) // 模型学习 (假设确定性环境,直接存储) Model(S, A) <- R, S' (f) // 规划步骤 (重复 n 次) 循环 n 次: // 从过往经验中随机选取状态和动作 S_plan <- 随机选择一个之前观察到的状态 A_plan <- 随机选择一个之前在 S_plan 状态下采取过的动作 // 查询模型获取模拟经验 R_plan, S'_plan <- Model(S_plan, A_plan) // 使用模拟经验进行 Q-learning 更新 Q(S_plan, A_plan) <- Q(S_plan, A_plan) + alpha * [R_plan + gamma * max_a Q(S'_plan, a) - Q(S_plan, A_plan)]
- 参数 控制了每一步真实交互后执行的规划步数。 时,算法退化为简单的表格型 Q-learning(只有直接 RL)。 时,算法在学习的同时进行规划。
- Dyna-Q 效果示例 (迷宫问题) (Page 27-28):
- 在一个简单的迷宫环境中,Dyna-Q () 相比于没有规划的 Q-learning (),学习速度显著加快。
- 原因:规划步骤利用模型将单步真实经验的“信息”传播到价值函数的其他部分,提高了数据利用效率。例如,发现一条捷径后,规划步骤可以快速更新通往捷径入口的路径上的 Q 值。
- 模型不准确的问题 (Page 29):
- Dyna 类算法的性能依赖于模型的准确性。如果模型学习得不准确或环境发生变化,基于错误模型的规划可能会计算出次优策略,甚至可能比纯粹的无模型方法更差。
- Dyna-Q+:处理模型不准确性 (Page 30-32):
- 是对 Dyna-Q 的改进,旨在处理环境变化或模型不准确的情况。
- 核心思想:在规划步骤中加入探索奖励 (exploration bonus),鼓励智能体通过模拟来探索那些长时间未在真实环境中尝试的状态-动作对。
- 机制 (Page 31):
- 记录每个状态-动作对 自上次在真实环境中被访问以来经过的时间步数 。
- 在规划步骤中,从模型获取模拟奖励 时,增加一个与 相关的奖励 bonus: 其中 是一个小的正常数。 越大,表示该 越久没被真实访问过,模型可能越不准确,探索奖励就越大。
- 效果 (Page 30, 32):
- 当环境发生变化时(例如迷宫中开辟了新的、更短的路径),Dyna-Q 可能因为模型仍然基于旧环境而无法找到新路径。
- Dyna-Q+ 的规划步骤会因为新路径上的状态-动作对具有较大的 值(从未或很久未被访问)而获得探索奖励,从而引导规划过程“探索”这些区域,更快地更新 Q 值以适应环境变化,找到新的最优路径。
总结 (涉及 Page 2, 14, 22, 26, 29 等)#
- 本讲探讨了模型学习与规划的概念,以及如何将它们与无模型学习方法集成起来。
- 模型是对环境动态的表示,可以通过监督学习从经验中获得。
- 规划是利用模型生成模拟经验来改进策略或价值函数的过程。基于采样的规划是一种通用方法,它将无模型 RL 算法应用于模拟数据。
- Dyna 架构是一种经典的集成框架,它使用真实经验进行直接 RL 更新和模型学习,同时使用学习到的模型进行多步规划更新。
- Dyna-Q 是 Dyna 架构的一个具体算法,结合了 Q-learning 和 Q-planning。
- Dyna-Q+ 通过在规划中加入探索奖励,提高了算法在变化环境或模型不准确情况下的适应性。
- 集成规划与学习旨在更有效地利用经验数据,通常能加速学习过程,尤其是在模型相对容易学习或数据获取成本高昂的情况下。