这是“Dyna 架构:学习与规划的结合”一节的内容:与纯粹的无模型方法相比,基于模型的强化学习通过学习环境的动态模型,具备更高的样本效率的潜力。然而,仅仅学习模型是不够的;智能体需要一种机制来有效使用这个模型以改进其策略或价值函数。由 Richard Sutton 引入的 Dyna 架构,提供了一个基本框架,用于结合模型学习、直接强化学习(从真实经验中学习)和规划(从模型生成的模拟经验中学习)。Dyna 理念:并行学习与规划其核心在于,Dyna 架构交替进行在环境中行动、从产生的真实经验中学习、更新环境模型以及使用模型执行规划步骤。这种并行过程使智能体能够从两种信息源中获益:直接强化学习: 智能体与实际环境互动,接收一个转移 $(s, a, r, s')$,并基于此真实经验直接更新其价值函数或策略。这是标准的无模型学习。模型学习: 相同的真实转移 $(s, a, r, s')$ 被用于更新智能体的内部环境模型。目标是使由转移函数 $P_{model}(s'|s, a)$ 和奖励函数 $R_{model}(s, a)$ 构成的模型,更好地近似真实环境动态。 "3. 规划(间接强化学习): 智能体使用其学习到的模型生成模拟经验。它采样一个先前访问过的状态 $s$ 和在该状态下执行的行动 $a$,查询模型以预测下一个状态 $s'$ 和奖励 $r$,然后使用这个模拟转移 $(s, a, r, s')$ 执行更新。这使智能体能够“演练”或“思考”过去的经验,并在不需要进一步互动的情况下传播价值信息。"这构成了 Dyna 架构的基础。规划步骤通过学习模型引导的模拟重放,从每次真实互动中获取更多信息,从而基本上增强了学习过程。Dyna-Q:一种具体实现Dyna 架构最知名的实例是 Dyna-Q。它将 Q-学习用于直接强化学习更新和规划更新,以及一个简单的表格模型用于模型学习(尽管也可以使用函数近似)。以下是 Dyna-Q 的典型流程:初始化: 初始化 Q 函数 $Q(s, a)$ 和模型 $Model(s, a)$(例如,存储每个 $(s, a)$ 对观察到的 $r, s'$)。循环: a. 行动: 观察当前状态 $s$。基于 $Q(s, \cdot)$ 使用 epsilon-贪婪策略选择行动 $a$。执行行动 $a$,观察奖励 $r$ 和下一个状态 $s'$。 b. 直接强化学习更新: 使用真实经验 $(s, a, r, s')$ 更新 Q 函数: $$ Q(s, a) \leftarrow Q(s, a) + \alpha [r + \gamma \max_{a'} Q(s', a') - Q(s, a)] $$ c. 模型学习: 将转移 $(s, a) \rightarrow (r, s')$ 存储在模型中。如果模型是概率性的或使用函数近似,则基于此转移更新模型参数。对于一个简单的表格确定性模型,这意味着记录在状态 $s$ 执行行动 $a$ 导致了奖励 $r$ 和下一个状态 $s'$。 d. 规划: 重复 $N$ 次(其中 $N$ 是规划步骤的数量): i. 随机采样一个先前观察到的状态 $\hat{s}$ 和在该状态下执行的行动 $\hat{a}$。 ii. 查询模型以获取与 $(\hat{s}, \hat{a})$ 相关的预测奖励 $\hat{r}$ 和下一个状态 $\hat{s}'$。 iii. 使用这个模拟经验应用 Q-学习更新: $$ Q(\hat{s}, \hat{a}) \leftarrow Q(\hat{s}, \hat{a}) + \alpha [\hat{r} + \gamma \max_{a'} Q(\hat{s}', a') - Q(\hat{s}, \hat{a})] $$digraph DynaQ { rankdir=TB; node [shape=box, style=rounded, fontname="sans-serif", fontsize=10, margin=0.2]; edge [fontname="sans-serif", fontsize=9]; Start [label="观察状态 s", shape=ellipse, style=filled, fillcolor="#a5d8ff"]; SelectAction [label="选择行动 a\n(例如,基于 Q 的 ε-贪婪)", shape=box, style=filled, fillcolor="#bac8ff"]; Interact [label="与环境互动\n执行 a", shape=diamond, style=filled, fillcolor="#ffc9c9"]; Observe [label="观察奖励 r\n下一个状态 s'", shape=box, style=filled, fillcolor="#ffd8a8"]; DirectRL [label="直接强化学习更新\n使用 (s, a, r, s') 更新 Q(s, a)", style=filled, fillcolor="#96f2d7"]; ModelLearn [label="模型学习\n更新模型 Model(s, a) -> (r, s')", style=filled, fillcolor="#eebefa"]; PlanLoop [label="规划循环 (N 步)", shape=box, style="rounded,dashed"]; SampleSA [label="从观察到的 (状态, 行动) 对中采样 ŝ, â", shape=box, style=filled, fillcolor="#d0bfff"]; QueryModel [label="查询模型\n从 Model(ŝ, â) 获取模拟的 r̂, ŝ'", shape=box, style=filled, fillcolor="#c0eb75"]; IndirectRL [label="间接强化学习更新\n使用 (ŝ, â, r̂, ŝ') 更新 Q(ŝ, â)", style=filled, fillcolor="#96f2d7"]; EndLoop [label="s <- s'", shape=ellipse, style=filled, fillcolor="#a5d8ff"]; Start -> SelectAction; SelectAction -> Interact; Interact -> Observe; Observe -> DirectRL; DirectRL -> ModelLearn; ModelLearn -> PlanLoop [lhead=cluster_Planning]; subgraph cluster_Planning { label = "规划"; bgcolor = "#e9ecef"; style = "rounded"; margin = 10; SampleSA -> QueryModel; QueryModel -> IndirectRL; IndirectRL -> SampleSA [label=" 重复 N 次 ", style=dashed]; } PlanLoop -> EndLoop [ltail=cluster_Planning]; EndLoop -> Start [label=" 下一个时间步 "]; }Dyna-Q 过程结合了真实互动、模型学习以及使用从学习模型中获得的模拟互动进行的规划。规划步骤的数量 $N$ 是一个超参数,它平衡了花在规划上的计算量与真实互动速率。更大的 $N$ 意味着每一步真实操作需要更多计算,但可能在所需真实互动次数方面更快收敛。优点与考量"Dyna 架构的主要优点是提高的样本效率。通过使用学习到的模型生成模拟经验,智能体可以基于单次互动执行多次更新,从而更快地在状态-行动空间中传播价值信息。这在互动成本高、耗时或有风险的场景中特别有益。"然而,Dyna 架构也面临一些挑战:计算成本: 规划阶段增加了每一步的计算开销。如果 $N$ 很大或状态/行动空间很广,规划可能会变得计算密集。模型准确性: 规划的有效性很大程度上取决于学习模型的准确性。如果模型不准确(由于数据不足、非平稳性或难以捕获的随机性),模拟经验可能具有误导性。使用不佳的模型进行规划,可能通过强化不正确的价值估计或策略而损害性能。这通常被称为模型偏差问题。尽管有这些考量,Dyna-Q 及其变体在结合无模型和基于模型方法优势方面迈出了重要一步。它们提供了一种实际方式,可以运用学习到的模型进行规划,与纯粹的无模型方法相比,通常能显著提升学习速度,特别是在数据稀缺的学习早期阶段。这种交替进行行动、学习和规划的基本思想在现代基于模型的强化学习研究中仍然具有影响力。