
<a id="n51-title"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-title)


# 想象有两种用法：此刻选路，提前练习

王德泉 · Coding with AI · Lecture 04


<a id="n51-658f6c28c066"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-658f6c28c066)

门的例子说明，预测需要接受独立反馈检验。接下来问预测可以用在什么时候。假设杯子要绕过挡板到达目标，此刻可以先比较几条候选路线：各推一下会停在哪里，是否撞上挡板，距离目标还有多远？按这些预测选择动作，先执行一步，再根据实际新位置重新规划。这是在当前决策时使用想象。


<a id="n51-b62909ef7bae"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-b62909ef7bae)

另一种用法发生在学习阶段。先从环境经历学习动态，再从已有状态出发，在模型里展开许多后续，让策略练习什么动作值得选。策略因此改变参数，未来遇到相应状态时，可以直接提出动作，不一定每次都重新搜索许多路线。Dreamer 系列体现了这种把真实经历、潜在动态与想象训练连接起来的思路。


<a id="n51-d073a385ca50"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-d073a385ca50)

两者都“在脑中试”，但计算花在不同位置。前者重点回答这一次下一步做什么；后者重点改变今后怎样做决定。系统也可以混合两种用途。环境反馈都会回来，但它可能先修正当前状态和规划，也可能在后续学习阶段改进模型与策略，不要求每次动作后都立刻重训。


[课程图解] 当场规划与想象训练把计算用在不同阶段，也以不同方式吸收新经验。；图中标签与关系：同一任务，两种用法 此刻规划：选这一次的动作 直推：会撞上 绕行：先走一步 下面两组示例，分别展示规划与训练 训练时想象：改变今后的策略 想象经历 A 想象经历 B 更新 策略 部署时 由已学策略选动作 执行 → 反馈 → 从新状态再规划 行动反馈 → 新经验 → 再学习
当场规划与想象训练把计算用在不同阶段，也以不同方式吸收新经验。


<a id="n51-028eeb871c9a"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-028eeb871c9a)

**“想象里穿过挡板能拿高分，策略学会这条捷径不就更聪明吗？”**它也可能只是利用了模型错误。若真实杯子不能穿墙，想象中的高回报不会转化为任务成功。规划可能挑中这种漏洞，策略训练也可能反复强化它；两种用途都需要接受环境检验。


<a id="n51-b43be53ded4e"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-b43be53ded4e)

**“想象很多次，是否等于得到很多新的现实经验？”**它可以扩大已有经验的使用次数，帮助探索模型允许的后续，却没有凭空观测新材质、新动作或新环境。模型没学到的规律不会因为多展开几条轨迹就自动变成事实。


<a id="n51-a09bbe7c5628"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-a09bbe7c5628)

阅读 DreamerV3 时，还应把“同一算法配置能用于多种任务”与“同一个已训练策略无需学习解决所有任务”分开。前者是关于方法适用性的研究结果，不能扩写成后者。下一页转向一个更基础的选择：为了帮助决策，想象究竟必须保留哪些内容，是否需要把每个像素都画出来？


<a id="n51-states"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-states)


## 画面怎样推进


<a id="n51-b0"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-b0)

左侧示例从同一状态比较两条路线，当场选择并先执行一步；右侧将另用想象经历说明训练策略的用途，不把两组称为同一初态。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N51.html?step=b0)


<a id="n51-b1"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-b1)

想象经历也可用于训练策略，使部署时能由策略直接选动作；计算被放到不同阶段。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N51.html?step=b1)


<a id="n51-b2"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-b2)

左侧反馈用于当前再规划，右侧经验回到模型或策略学习；两种用法都可能受到模型误差影响。

[返回这一课堂停点](https://codingai-lec04.pages.dev/classroom/N51.html?step=b2)


<a id="n51-materials"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-materials)


## 继续阅读与实验


<a id="n51-learning-unit-001"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-learning-unit-001)


## 现在比较动作，与提前训练策略，分别改了什么？


<a id="n51-learning-unit-002"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-learning-unit-002)

决策时想象从当前状态比较候选后果，选择一步执行，再按新位置重来。想象训练则从已学模型展开经历，用它们更新策略参数，使以后更容易直接提出动作。计算发生的位置不同，两者也可以组合。


<a id="n51-learning-unit-003"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-learning-unit-003)

如果模型允许杯子穿过挡板，搜索可能挑中这条捷径，策略训练也可能把它强化。增加想象次数更充分利用已有模型，没有自动增加新表面的现实观察；想象高回报需要与实际任务结果核对。


<a id="n51-learning-unit-004"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-learning-unit-004)

自检：DreamerV3 的同一配置适用多任务，是否意味着同一个已训练策略无需学习做一切？不是。[读两种想象用途](https://codingai-lec04.pages.dev/lecture.html#ch08-imagination)。


<a id="n51-chapter-reading"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-chapter-reading)


### [CLS 08 · 世界模型：状态、行动与反馈](https://codingai-lec04.pages.dev/lecture.html#ch08)

按连续正文理解这条方法的训练信号、使用过程与算例；数学与实践在相关问题旁展开。

先看：第8章，从对象和问题开始


<a id="n51-lab10-practice"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-lab10-practice)


### [LAB 10 · 一次行动怎样改变判断](https://codingai-lec04.pages.dev/course/notebooks/cc09b0442e194df5b0dd09251ac79985.html)

先写候选对同一动作的不同预测，再读独立环境返回的观察；用历史更新下一步选择。

先看：先看保存结果与读图解释


<a id="n51-material-1"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-material-1)


### [CLS 00 · 第四讲材料导读](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/6f83a923-d155-47be-be58-680db701ff7f/notebook/62c6951f1e554169bdb91fb9d216e160?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=62c6951f1e554169bdb91fb9d216e160&utm_term=get_notebook)

对照规划和策略学习的计算时点，再沿PlaNet和Dreamer来源读具体系统。

先看：想象的两种用途：当前选路与训练策略


<a id="n51-material-2"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-material-2)


### [Learning Latent Dynamics for Planning from Pixels](https://arxiv.org/abs/1811.04551)

沿一轮从当前状态展开候选、执行动作、再观察的流程读，定位计算发生的时点。

先看：在线规划部分


<a id="n51-material-3"></a>
[区块原文](https://codingai-lec04.pages.dev/course/N51.html#n51-material-3)


### [Mastering Diverse Domains through World Models](https://arxiv.org/abs/2301.04104)

分开动态学习、想象展开与策略更新；检查部署时直接选动作与在线搜索的区别。

先看：World Model 与 Actor-Critic 部分

