强化学习任务的奖励函数如何设计?

考查重点:成功条件、过程信号与奖励漏洞。把任务成功转成独立可检查结果,违规可判失败,真实中间进展给辅助信号;先校准尺度权重,再用高分坏例和业务评测防投机

本题目录

参考答案

核心回答

奖励函数要把任务成功转成可检查的反馈,同时约束成本、风险和投机行为。先定义真正的终局成功,再决定哪些中间进展值得奖励、哪些违规应直接判失败,最后处理各分量的尺度与权重。不能只优化“回答像完成了”或“操作次数少”。

对 GUI Agent,成功应由执行后的真实环境状态确认,例如订单记录、目标文件内容或后台业务字段,而不是模型自述和单张成功截图。训练时还要用独立的留出任务与业务成功率检查效果,避免奖励升高但任务能力下降。

从目标到奖励

第一步,定义终局与约束。 明确任务允许的操作、完成条件、超时和不可逆错误。检验器尽量独立于策略模型;无法可靠检查的案例保留不确定状态,不把“没报错”一律当成功。

第二步,选择信号粒度。 终局奖励最贴近目标,但长轨迹容易没有学习信号。过程奖励可覆盖可靠的里程碑,例如目标对象创建且内容正确;重复打开同一页面、反复切换状态不应重复加分。过程分数不能压过最终正确性。

第三步,组合并归一。 正确性、合规、格式与成本的单位不同,先检查分布再定权重。硬约束通常用门控或分级规则表达,比简单给一个可被其他正奖励抵消的小负分更清楚。KL惩罚约束策略相对参考策略的漂移,它与业务奖励分工不同,也不是识别所有reward hacking的办法。

一个可复算的设计示例

假设一次任务必须满足操作约束,成功完成后才考虑节省工具调用。令 S 是成功与否,C 是归一到[0,1]的成本,示意规则为:

违反硬约束:r = -1
满足约束但未完成:r = 0
满足约束且完成:r = 1 - 0.1 × C

于是成功任务的奖励位于[0.9,1],失败任务为0。成功且C=0.3得到0.97;失败即使零成本也只得0,因而节省成本不能抵消未完成。系数0.1只是说明优先级的教学设定,需要用任务数据检验。

长轨迹若采用折扣,应明确是否真的希望偏好较短链路。gamma=0.99时,同样终局奖励向前10步折扣为约0.904,向前100步约0.366;过强折扣可能压低必要长任务的价值。损失按token长度归一化与时间折扣是不同机制。

如何发现奖励设计有问题

同时观察各分量、总奖励、真实成功率、轨迹长度、拒答和重复操作;人工抽查“高分却失败”的轨迹,构造循环刷分、伪造完成标记和绕过检验器的反例。对奖励分量做消融,并在固定初始状态与相同预算下比较模型。

GRPO还要看同一题多个候选的奖励差异:全组都成功或都失败时,相对优势可能为零。应先检查采样难度与检验器分辨率,而不是用随机噪声制造看似有用的奖励。

对应教程

参考资料

相关面经

3 篇

阿里巴巴

大模型算法工程师
查看原面经 →
奖励函数设计(重点)

同程旅行

大模型算法工程师
校招暑期实习一面
查看原面经 →
单步奖励设计思路

作业帮

AI 应用算法工程师
实习一面
查看原面经 →
你的奖励函数是怎么设计的?为什么这样设计?后续的版本是怎么做的?

收录题集

4 个来源,共9 份题集
展开剩余 4 份题集

强化学习与对齐

阿东玩 AI · AgentGuide · 13 条原题

查看题集 →
展开其余 10 条原题

理论基础面试题

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

vivo高频面试题

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

具身智能基础知识

Rocky Ding · AIGC-Interview-Book · 1 条原题

查看题集 →

相关题目

4 题