
159、奖励函数设计:稀疏奖励密集奖励与辅助奖励的权衡昨晚在仿真环境里调一个抓取放置任务,机器人折腾了三个小时,成功率卡在37%上不去。tensorboard里那个reward曲线跟心电图似的,忽上忽下,看着就让人心梗。后来我把dense reward里的那个距离项权重从0.5砍到0.2,再加了一个stage-based的辅助奖励,一个晚上跑下来成功率直接跳到68%。这种事儿干多了,你就知道奖励函数这玩意儿,真不是拍脑袋写个加权和就完事的。从那个让我失眠的稀疏奖励说起先说稀疏奖励。你给机器人一个任务,比如“把红色方块放到蓝色托盘里”,最naive的做法就是:放对了给+1,没放对给0。这就是纯稀疏奖励。好处是干净、不容易被hack,坏处是——训练过程基本靠运气。我见过太多同学第一次跑这种实验,盯着loss曲线看了两小时,然后来问我“为什么我的策略一点动静都没有”。不是你的网络结构有问题,是agent在巨大的状态空间里瞎逛,碰不到那个+1的信号,梯度压根传不回去。有个经典比喻:你在一个黑暗的迷宫里找出口,只有走到出口才亮灯。稀疏奖励就是那个灯,问题是迷宫太大了,你走一万步都未必摸到墙。这时候你需要的不是更亮的灯,而是沿途的萤火虫——这就是密集奖励的由来。密集奖励不是越多越好,是越“对”越好密集奖励最常见的形式是距离惩罚。拿抓取来说,你让机械臂末端靠近物体就给一点正奖励,离得远就扣分。这个思路本身没错,但坑在于:距离项写不好,机器人会学会“作弊”。我踩过最典型的坑是——机械臂学会了把手伸到物体正上方,然后停在那儿不动。因为那个位置距离奖励最高,但抓取动作根本没