二十五、 查清了:"训练好、评估差"的真正原因是【奖励与判据不是同一个条件】

★★★ 1.4k 字 · 源文件 进度.md 第 1093 行起 · ruler ground

#★ 先说好的那部分

她【确实在读那个字】。

我把她的实际动作量出来(自校验通过):

指令需要的位移她实际走的结果
上dy −43.2dy −42.8✅ 到
右dy −43.2dy −42.7✅ 到
左dy +14.4dy +11.9❌ 差 2.5 px
下dy +14.4dy +11.8❌ 差 2.6 px

★ 四个动作【互不相同】,而且方向【全对】。 → 所以"她没读指令"这个可能是错的。

#★ 那为什么下排失败:她提前停住了

逐刻看(下 那条):

text
刻 0:  y=78.30   dy=+3.90
刻 1:  y=82.23   dy=+3.92
刻 2:  y=86.07   dy=+3.84     <- 最后一刻在动
刻 3:  y=86.07   dy=+0.01     <- 停住了
 ...到刻 23 一直是 +0.01

★ 速度完全够(+3.9/刻)。她是在刻 2 就【主动停住】的。

#★ 为什么她会停在一个"还差一点"的地方

因为两件事里那个"到了"的标准不一样:

名称它要求的精度在哪用
到过(评估判据)距目标中心 ≤ 4.0 px评估读数
末在(格内)落在目标【格子】里(24 × 14.4 px)--arrive-end-bonus 奖励的

★ 格子比 4px 的圆【宽得多】(横向 6 倍、纵向 3.6 倍)。

★★★ 所以她的"到了"大概是"进了那个格子", 而判据要的是"进了那个圆"。

#★ 我试的那个修法失败了,但失败得有用

我加了 --arrive-end-bonus 1.0(奖励"末刻还在目标格内")。 结果:读数普遍变差 —— 她学会了停在格子里, 而那不满足严格判据。

★★★ -> 这恰恰证明了两件事: (1)两个标准确实不一样; (2)奖励一个【比判据更宽】的条件,会让策略去优化那个更宽的条件, 从而在严格判据下【更差】。

#★ 这解释了本项目一个反复出现的现象

"训练日志看起来在进步,评估却在退步。" ★ 当奖励比判据宽时,这是必然的。

#★ 下一步该做什么

#做什么
1★★★ 把奖励和判据对齐 —— 奖励也用同一个 4.0 px 条件,而不是"格内"
2★★ 或者把评估判据放宽到"格内"(但那会改变"到位"的含义)
3★ 两者必须选一个,并写进判据

#★ 一句话

她会读字、也会朝对的方向走,只是她"觉得到了"的地方 比我们"算到了"的地方【宽 6 倍】。


← 返回《进度.md》目录