
图中两次采样都停止了,但只有真实终止把后续价值按任务定义清零,外部截断仍可能保留续接价值。
训练记录里只有一个 done 字段,看上去很省事。但一次交互结束,可能是任务真的完成,也可能只是采样时间用完。如果两种情况都把后续价值直接当成零,价值目标就可能在同一个状态上产生完全不同的含义。
停止采样不等于世界结束
设一个持续运行的任务,只是为了控制采样开销,每次最多记录若干步。到上限时停止当前片段,并不表示环境中的后续收益消失了。它是外部截断,仍可能需要根据最后状态估计之后的价值。
相反,任务到达真正的终止状态,例如按规则结束当前回合,就不能继续把另一个新回合的收益接到当前轨迹后面。两者在数据上都可能触发重置,但用于学习的边界不同。
也有任务本身就定义了有限时长,到时结束属于任务规则的一部分。此时剩余时间等信息应与状态定义匹配,不能看到计时器到零就一律叫外部截断。判断依据是任务语义,不只是停止发生的技术原因。
一步目标就能看见差异
用自设数字说明:当前奖励为一,折扣因子为 0.9,下一状态价值估计为十。若不是任务终止,带续接估计的一步目标为一加九,等于十;若真实终止,目标只保留当前奖励一。
把外部截断误当终止,就会在这个例子里丢掉九的后续价值估计。它不是一种无关紧要的字段命名差异,而是改变了训练目标。多次在某个时限附近截断,偏差还可能集中出现在特定状态。
这个算例只展示目标定义差异,不证明任何真实策略会因此提升多少分。下一状态价值若估错,续接本身也带有误差,但不能用“估计不完美”作为混淆终止语义的理由。

两个标记承担不同用途
可以分别保存 terminated 和 truncated:前者描述任务是否真实结束,后者描述是否因任务之外的边界停止。环境需要重置时,可以依据相应结束条件处理;是否在价值目标里使用下一状态估计,则应按真正终止语义判断。
两个标记也可能同时出现,处理规则应清楚,不能仅按字段先后顺序随机选择一个解释。若已经真实终止,就不应因为同时存在外部上限信息,又把不存在的任务后续价值加回来。
为了让数据可检查,还可以记录停止原因、对应状态与轨迹标识。日志里只有一个模糊的“结束”,后面再想恢复当时的价值边界,往往无法可靠推断。
重置后的观察不能冒充最后状态
有的采集流程会自动重置环境,返回或保存新回合的起始观察。如果截断时需要续接价值,应该使用截断点对应的真实最后观察,而不是把重置之后的新状态拿来估值。
否则,公式看起来保留了 bootstrap,实际却把下一回合的价值接进当前回合。这个错误与把后续价值清零不同,但同样源于没有清楚记录轨迹边界。批量环境里还要按每个环境分别对应,不能把不同实例的最后状态混用。
价值续接与轨迹递推分别处理
多步回报或优势估计会沿轨迹向后组合误差。外部截断处可以使用正确最后状态的价值做续接,并不意味着可以继续传播重置后新回合的优势。是否保留下一状态价值,与递推是否跨过一个数据片段边界,是两个需要分别定义的掩码问题。
若只是批次切片而任务没有重置,处理方式又要与采样器如何保留后续数据一致。不能把所有数组末尾都解释为任务终止,也不能把所有切片直接拼接而忽略它们是否来自同一条轨迹。
用成对记录验证边界
准备两条除结束标记之外相同的转移,分别标成真实终止与外部截断,核对一步目标是否按预期变化。再加入自动重置场景,确认用的是最后观察,不是新回合起点。
测试还应覆盖两标记同时出现、批次末尾、不同环境并排采样等情况。有限标量检查能验证字段和目标计算,却不能替代真实环境与训练效果评测。
把结束原因保留下来,是让优势估计和价值学习拥有正确边界。如果一条日志只写“达到最大步数”,你还需要知道哪些任务定义,才能决定是否把未来价值设为零?