提示:部分习题没有标准答案,重点在于培养学习者对 Agentic RL 和智能体训练的综合理解和实践能力。
-
本章介绍了从 LLM 训练到 Agentic RL 的演进过程。请分析:
- 在 11.1.3 节的表 11.1 中,对比了 PBRFT(基于偏好的强化微调)和 Agentic RL 在 MDP 框架下的差异。请深入解释:为什么 Agentic RL 的状态空间 包含历史观察,而 PBRFT 的状态 只包含初始提示?这种差异对训练过程和最终效果有什么影响?
- 假设你要训练一个"智能代码调试助手",它需要:(1)分析代码找出 bug;(2)查阅文档了解 API 用法;(3)修改代码;(4)运行测试验证修复效果。请将这个任务映射到强化学习框架,明确定义状态空间、行动空间、奖励函数和状态转移函数。
- 在 11.1.1 节中提到,传统监督学习存在"难以优化长期目标"的局限。请设计一个具体的多步推理任务(如数学证明、复杂问题求解),展示为什么监督学习难以优化中间步骤,而强化学习可以通过延迟奖励来解决这个问题。
-
SFT(监督微调)和 GRPO(群组相对策略优化)是本章的两个核心训练方法。基于 11.2 节和 11.3 节的内容,请深入思考:
提示:这是一道动手实践题,建议实际操作
- 在 11.2.4 节的 SFT 训练代码中,我们使用了 LoRA(低秩适配)技术来减少训练参数。请分析:LoRA 的核心思想是什么?为什么它能够用少量参数(如 0.16%)实现接近全参数微调的效果?在什么情况下应该选择 LoRA 而不是全参数微调?
- GRPO 算法(11.3 节)相比传统的 PPO 算法有什么优势?请对比两者的训练流程,分析 GRPO 如何通过"群组相对奖励"来简化训练过程并提升稳定性。如果要将 GRPO 应用到其他任务(如代码生成、对话优化),需要做哪些调整?
- 请基于 11.2.5 节的代码,扩展 SFT 训练流程,添加以下功能:(1)支持多轮对话数据的训练;(2)添加数据增强策略(如同义改写、难度调整);(3)实现训练过程的可视化监控(如 loss 曲线、样本质量评估)。
-
奖励函数设计是 Agentic RL 的核心挑战。基于 11.3.3 节的内容,请完成以下扩展实践:
提示:这是一道动手实践题,建议实际操作
- 在 11.3.3 节中,我们为 GSM8K 数学问题设计了简单的二元奖励(正确+1,错误 0)。请设计一个更精细的奖励函数,能够:(1)对部分正确的答案给予部分奖励;(2)对推理过程的合理性进行评分;(3)惩罚过于冗长或低效的解题路径。这个奖励函数应该如何实现?
- 奖励函数的设计往往需要领域知识。请为以下三个不同的智能体任务设计奖励函数:(1)代码生成助手(需要考虑代码正确性、可读性、效率);(2)客服对话智能体(需要考虑问题解决率、用户满意度、响应时间);(3)游戏 AI(需要考虑胜率、策略多样性、对抗鲁棒性)。
- 在实际应用中,奖励函数可能存在"奖励黑客"(reward hacking)问题:智能体找到了获得高奖励的捷径,但并没有真正完成任务。请举例说明这种现象,并设计防御机制来避免奖励黑客。
-
在 11.4 节的"数学推理智能体训练"案例中,我们看到了完整的训练流程。请深入分析:
- 案例中使用了 GSM8K 数据集进行训练和评估。请分析:这个数据集的特点是什么?它适合训练什么类型的推理能力?如果要训练一个能够处理更复杂数学问题(如高等数学、数学证明)的智能体,应该如何扩展数据集和训练方法?
- 在 11.4.3 节的训练结果中,我们观察到模型在训练集上的准确率提升,但可能存在过拟合风险。请设计一个"泛化能力评估"方案:如何测试模型是否真正学会了数学推理,而不是记住了训练数据?如何通过正则化、数据增强等技术提升泛化能力?
- 案例中的训练是离线的(使用预先收集的数据集)。请设计一个"在线学习"方案:智能体在实际使用过程中持续收集用户反馈,并自动更新模型。这个方案需要考虑哪些技术挑战(如数据质量控制、灾难性遗忘、安全性保障)?
-
Agentic RL 的一个重要应用是让智能体学会使用工具。请思考:
- 在 11.1.3 节中提到,Agentic RL 适合优化"需要多步推理、工具使用、长期规划"的任务。请设计一个"工具学习"训练方案:给定一组工具(如搜索引擎、计算器、代码执行器),如何训练智能体学会在合适的时机选择合适的工具?奖励函数应该如何设计?
- 工具使用往往涉及复杂的依赖关系(如"必须先调用工具 A 获取信息,才能调用工具 B")。请设计一个"分层强化学习"方案:高层策略负责任务规划,低层策略负责工具调用。这种分层结构如何训练?如何协调高层和低层的优化目标?
- 在实际应用中,工具的数量可能非常多(如 50+个 API),直接训练可能面临"探索效率低"的问题。请设计一个"课程学习"(curriculum learning)方案:从简单任务(使用少量工具)开始训练,逐步增加任务难度和工具数量。这个方案应该如何设计课程顺序?如何评估智能体是否准备好进入下一阶段?