Agent 与 Environment
Agent 决策,Environment 执行转移并返回观察、奖励和终止信号。
学习目标
- 正确划定智能体可见信息与环境反馈,避免终止掩码造成价值目标错误。
- 独立复核“同一奖励在真正终止和时间截断下的不同目标”的输入、计算和解释。
- 采样何时停止与价值是否继续是两个问题。
为什么重要
正确划定智能体可见信息与环境反馈,避免终止掩码造成价值目标错误。
学习前需要掌握
背景与问题
在游戏里,环境知道敌人的完整位置,玩家却可能只看到屏幕。训练时如果把敌人内部坐标直接给策略,得到的是更容易的任务。首先要定义观察、动作和 step 反馈,才能讨论算法有没有解决原问题。
概念定义
智能体持有策略并发出动作;环境根据内部状态和动作产生转移、奖励与观察。环境状态可以包含智能体看不到的信息。episode 的结束还应区分任务真正终止与采样因外部限制停止,这两种边界对价值学习的含义不同。
直观理解
驾驶员控制方向盘和油门,却不能控制下雨;仪表盘读数也不包含道路上所有物理状态。传感器接口是观察,不是环境全部真相。
核心原理
常见交互接口返回 observation、reward、terminated、truncated 和 info。达到目标或进入吸收失败状态通常是 terminated;为了限制采样长度而中断通常是 truncated,两者都会结束本次采样循环。
对原本持续的任务,纯时间截断通常仍从最后观察 bootstrap;真正终止则将未来价值置零。若有限时长本身属于任务,剩余时间应进入状态,此时到达时限也可以是任务定义的真正终点。
自动重置封装可能在结束时返回下一局初始观察。构造 TD 目标时需要上一局的 final observation,不能把新一局起点误当上一局后继状态。种子、环境版本和包装器同样属于实验定义。
数学表达
真正终止与目标掩码
d 表示任务真正终止;纯采样时间截断不自动使 d 为 1,后继必须是上一局的 final observation。
变量含义
r本步奖励d真正终止标记o_final重置前最后观察γ任务折扣因子
计算步骤
- 1真正终止后无未来回报,目标为 2。
- 2纯时间截断保留后继估计,目标为 2+0.9×5=6.5。
- 3两种情况都停止当前采样循环,但价值掩码不同。
代码对应位置
示例 1同一奖励在真正终止和时间截断下的不同目标:terminated 目标是 2.0;仅 truncated 的目标是 6.5。
变量解释
| 变量 | 含义 |
|---|---|
r | 本步奖励 |
d | 真正终止标记 |
o_final | 重置前最后观察 |
γ | 任务折扣因子 |
完整数值示例
同一奖励在真正终止和时间截断下的不同目标
已知条件
- 当前奖励 2,最后观察价值估计 5,折扣 0.9。
- 比较真正终止与仅因采样时限截断的持续任务。
计算步骤
- 真正终止后无未来回报,目标为 2。
- 纯时间截断保留后继估计,目标为 2+0.9×5=6.5。
- 两种情况都停止当前采样循环,但价值掩码不同。
计算结果
terminated 目标是 2.0;仅 truncated 的目标是 6.5。
处理前后对比
- 采样何时停止与价值是否继续是两个问题。
- 有限期限任务必须结合剩余时间与任务定义判断。
计算与实现步骤
- reset 环境
- 观察状态
- 选择动作
- step
- 记录 transition
- 终止后重新开始
代码实现
示例 1
同一奖励在真正终止和时间截断下的不同目标
example_01.py用途:terminated 目标是 2.0;仅 truncated 的目标是 6.5。
reward, gamma, next_value = 2.0, 0.9, 5.0
for name, terminated in [("terminal", True), ("time_limit", False)]:
target = reward + gamma * (not terminated) * next_value
print(f"{name} target={target:.1f}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
terminated 目标是 2.0;仅 truncated 的目标是 6.5。
Step 1 · 1–4 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
reward, gamma, next_value = 2.0, 0.9, 5.0
for name, terminated in [("terminal", True), ("time_limit", False)]:
target = reward + gamma * (not terminated) * next_value
print(f"{name} target={target:.1f}")预期输出或运行结果
terminal target=2.0 time_limit target=6.5
常见错误 · 3 条
- 将 observation 当作完整物理状态,意外泄露训练信息。
- 用 terminated 或 truncated 的合取结果统一清零 bootstrap。
- 自动重置后使用新一局观察计算上一局目标。
实际应用
- 序贯决策
- 控制与资源分配
常见错误
- 将 observation 当作完整物理状态,意外泄露训练信息。
- 用 terminated 或 truncated 的合取结果统一清零 bootstrap。
- 自动重置后使用新一局观察计算上一局目标。
扩展内容说明
本页数值均为解释机制的构造案例,不能解读为真实训练或基准性能。定义和适用条件参见 Gymnasium:Handling Time Limits。
算法属性与数据边界
失败模式、风险与性能
失败模式
- 将 observation 当作完整物理状态,意外泄露训练信息。
- 用 terminated 或 truncated 的合取结果统一清零 bootstrap。
- 自动重置后使用新一局观察计算上一局目标。
风险
- 奖励函数与真实目标不一致会诱发奖励黑客。
- 部署策略的行动权限必须由环境和应用层约束。
性能考虑
- 样本效率、墙钟时间和显存占用需要分别报告。
- 应使用多个随机种子、置信区间和固定评测策略。
常见问题
truncated 一定要清零后续价值吗?
不一定。对仅因外部采样限制停止的持续任务通常保留 bootstrap;如果时间本身是任务终止条件,应按有限期限任务建模。
网页是否会训练模型?
不会。所有图表使用固定种子或解析公式在浏览器本地计算,不执行页面中的示例代码。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。