

本博客基于西安交通大学强化学习课程 PPT 改编,历经 Gemini 以及本人总结以及整理形成。
引言#
在之前的学习中,我们接触了两种主要的强化学习范式:
- 无模型学习 (Model-Free Learning):如 MC、TD(Sarsa, Q-learning)、n 步自举法等。这些方法直接从与环境交互产生的真实经验 (Real Experience) 中学习价值函数或策略,不试图显式地构建环境模型。它们依赖于各种形式的回溯 (Backup) 操作。
- 基于模型的强化学习 (Model-Based RL):通常包含两个阶段:
- 模型学习 (Model Learning):从经验中学习环境模型 。
- 规划 (Planning):使用学习到的模型 来计算最优策略或价值函数(例如,通过 DP 方法如价值迭代)。
本讲的目标是探讨如何集成 (Integrate) 这两种方法,即在智能体与环境交互、进行无模型学习的同时,利用学习到的模型进行规划,以期提高数据利用效率并加速学习过程。
- 模型 (Model):是对环境动态(状态转移 )和奖励机制 () 的表示。
- 规划 (Planning):利用模型生成模拟经验 (Simulated Experience),并使用这些模拟经验通过回溯等方式来改进价值函数或策略的过程。
学习环境模型#
为了进行规划,我们首先需要一个模型。如果环境模型未知,就需要从经验中学习。
- 模型组成:通常需要学习状态转移模型 和奖励模型 (或期望奖励 ),其中 是模型参数。
- 模型学习:本质上是一个监督学习问题。利用真实经验数据 ,将 作为输入, 作为目标输出来训练模型参数 。
- 模型类型:
- 期望模型:预测期望的下一状态和奖励。简单但丢失随机性。
- 样本/生成模型 (Sample/Generative Model):可以生成 的样本,反映随机性。这是基于采样的规划的基础。
- 分布模型:显式表示完整的概率分布。信息最全但计算复杂。
- 查找表模型 (Lookup Table Model):适用于离散状态和动作空间。
- 学习:通过计数统计经验转移频率和平均奖励来估计 和 。
- 作为样本模型:更简单的方式是存储所有观察到的转移元组 。当需要从 进行模拟时,从所有以 开始的存储元组中随机抽取一个,并返回其 。
示例:查找表(样本)模型 假设有经验: Episode 1: A, R=0, B, R=0, (end) Episode 2: B, R=1, (end) Episode 3: B, R=1, (end) Episode 4: B, R=0, (end) … (假设还有多次 B, R=1, (end))
一个简单的样本模型可能是:
- Model(A, action1) -> 返回 (R=0, S’=B) (基于 Episode 1)
- Model(B, action1) -> 以一定概率返回 (R=1, S’=End),以一定概率返回 (R=0, S’=End) (根据所有从 B 开始的 episodes 的统计)
基于模型的规划#
有了模型(无论是精确的还是学习到的),就可以进行规划。
-
规划目标:利用模型 求解对应的(近似)MDP 的最优价值或策略。
-
基于采样的规划 (Sample-Based Planning):一种强大且通用的规划方法。
- 核心思想:不直接处理复杂的概率模型 ,而是仅使用模型作为模拟器来生成样本经验 。
- 然后,将任意无模型 RL 算法(如 MC, Sarsa, Q-learning)应用于这些模拟经验,如同它们来自真实环境一样。
- 优点:概念简单,易于实现,可以直接复用成熟的无模型算法。
-
算法示例:随机采样单步表格型 Q 规划 (Random-sample one-step tabular Q-planning)
// 假设已有一个模型 Model(s, a) -> (R', S') (可以是学习到的)
// 假设 Q(s, a) 已初始化
循环 无限次 (或进行一定数量的规划步骤):
1. 随机选择一个状态 S (通常从之前访问过的状态中选取)
2. 随机选择一个动作 A (通常是从在状态 S 下尝试过的动作中选取)
3. (模拟) 查询模型: (R', S') ← Model(S, A)
4. (更新 Q 值) 应用一步 Q-learning 更新:
Q(S, A) ← Q(S, A) + α * [R' + γ * max_{a'} Q(S', a') - Q(S, A)]
plaintext这个过程可以看作是在智能体的“头脑中”利用模型进行排练和学习。
Dyna 架构:集成学习与规划#
Dyna 架构是一种将直接从真实经验学习 (Direct RL) 和 基于模型的规划 (Planning / Indirect RL) 相结合的经典框架。
-
核心思想:
- 智能体与真实环境交互,产生真实经验 。
- 直接 RL:使用真实经验直接更新价值函数或策略(例如,用 Q-learning 更新 Q(S, A))。
- 模型学习:使用真实经验更新环境模型 Model(S, A)。
- 规划 (Planning):在与环境交互的间隙,执行若干步模拟。从学习到的模型中采样模拟经验 ,并使用这些模拟经验来更新价值函数或策略(例如,使用 Q-planning 更新 )。
-
Dyna-Q 算法:Dyna 架构的一个具体实现,结合了 Q-learning 和 Q-planning。
算法参数: 步长 α, 折扣因子 γ, 探索参数 ε, 规划步数 n
初始化:
Q(s, a) 对所有 s ∈ S⁺, a ∈ A(s)
Model(s, a) 对所有 s, a (初始化为空或默认)
循环 无限次 (对每个 episode):
(a) S ← 当前状态 (从环境获取)
循环 对 episode 中的每一步:
(b) A ← 基于 Q(S, ·) 的 ε-greedy 策略选择动作
(c) 执行动作 A, 观察真实奖励 R' 和真实下一状态 S'
(d) // 直接 RL 更新
Q(S, A) ← Q(S, A) + α * [R' + γ * max_{a'} Q(S', a') - Q(S, A)]
(e) // 模型学习 (简单存储确定性模型)
Model(S, A) ← (R', S')
(f) // 规划步骤
循环 重复 n 次:
// 从过往经验中随机选取状态和动作
S_plan ← 随机选择一个之前观察到的状态
A_plan ← 随机选择一个之前在 S_plan 状态下采取过的动作
// 查询模型获取模拟经验
(R'_plan, S'_plan) ← Model(S_plan, A_plan)
// Q-planning 更新
Q(S_plan, A_plan) ← Q(S_plan, A_plan) + α * [R'_plan + γ * max_{a'} Q(S'_plan, a') - Q(S_plan, A_plan)]
(g) S ← S'
如果 S 是终止状态, 退出内层循环
plaintext-
参数 控制了每次真实交互后执行的规划(模拟更新)次数。 时即为普通的 Q-learning。 时,模型被用来放大真实经验的效果。
-
Dyna-Q 效果:规划步骤可以显著加速学习。例如,在迷宫问题中,当智能体偶然发现一条捷径(产生一个有价值的真实经验)后,规划步骤可以利用模型迅速将这个“好消息”通过模拟反向传播到相关的状态-动作对,比等待真实经验慢慢探索要快得多。
处理模型不准确性:Dyna-Q+#
- 问题:Dyna 架构依赖于学习到的模型。如果模型不准确(例如,由于环境是随机的、模型学习不充分,或环境本身发生了变化),基于错误模型的规划可能会产生误导,甚至损害性能。
- Dyna-Q+ 思想:在规划步骤中加入探索奖励 (exploration bonus),鼓励对那些模型可能不准确(因为很久没有被真实经验验证过)的状态-动作对进行模拟探索。
- 机制:
- 记录每个状态-动作对 自上次在真实环境中被访问以来经过的时间步数 。
- 在规划步骤中,当模拟 得到模拟奖励 时,额外增加一个 bonus: 其中 是一个小的正常数,控制探索奖励的大小。
- 效果:当环境变化导致模型失效时(例如,迷宫中出现新的通路),新通路对应的 对的 值会很大。Dyna-Q+ 的规划步骤会因为探索奖励而倾向于模拟这些“陈旧”的区域,从而更快地更新 Q 值以适应环境变化,发现新的最优策略。
总结#
- 集成规划与学习的目标是结合无模型学习(从真实经验中学习)和基于模型的规划(利用模型进行模拟和推演)的优点。
- 模型学习是基础,可以从经验中学习环境模型(如样本模型)。
- 基于采样的规划是一种通用方法,将无模型 RL 算法应用于模型生成的模拟经验。
- Dyna 架构提供了一个优雅的框架,通过交织直接 RL、模型学习和规划步骤来高效利用数据。
- Dyna-Q 是具体的实现,展示了规划加速学习的效果。
- Dyna-Q+ 通过引入探索奖励增强了 Dyna-Q 在变化环境或模型不准确情况下的鲁棒性。
- 这种模型与学习的结合是提高强化学习样本效率和适应性的重要途径。