随着我在强化学习各个领域逐渐深入的工程实践后,我发现奖励函数才是你真正要关注的事情,很多时候大家都是直接用环境,根本不关心环境中奖励函数是怎么构建的,也很少有人去优化奖励函数。
理想情况下,有了高质量的奖励函数,基本上可以告别RL中的探索难题,因为你只需要贪心的跟着奖励引导,进行策略求解即可。但其实这些都没那么简单,因为奖励非常容易存在误导性,也就是策略的实际表现和累积reward不成正比。我举个例子,假如我们让一个robot去操控一个物体,奖励都是正数,如果设置不到位,你的算法很可能会出现完成任务又坍塌的问题,企图不终止游戏来骗奖励。(当然解决方法其实很多,例如不做截断)
熟悉我的好兄弟们都知道,我是做演化强化学习(ERL)的(Survey放到这一段结尾),这个方向最早被定义的有点狭窄,主要是因为18年Tumber的第一篇工作,也就是将ERL定位到了EA与RL用来做策略参数优化。
但其实不然,任何结合了EA与RL的混合算法都应该是ERL工作,怎么结合都可以。然后我们再回过来看一下奖励函数生成这个领域,其实最早做的人很少,reward shaping倒是很多,但是通常都是治标(内在奖励修修补补)不治本(核心奖励完全没变)。随后一篇直接生成奖励函数code的工作出现了,Eureka。
你如果初看Eureka,会觉得这不就是一个Reward Agent吗?但是仔细深入后,你会发现,这不就是ERL吗?用演化算法基于LLM做上层奖励函数的直接生成,下层用RL做求解。这就是之前我们ERL survey中的协同优化啊,属于是将一个任务求解问题拆解成了两部分,演化优化奖励,RL优化策略。(我马上就把这个加到survey里面去!)
仔细读过Eureka后,你会发现,除了灵巧手转笔的吸睛demo外,里面有很多insight,其中一个核心就是演化的引入,随着代数增加,性能稳定提升。Eureka不是第一个做奖励生成的,但是确实影响力最高的工作(更早一些的应该是Text2reward)。作为一个RL工作,一年多引用就破了400,仅仅一套算法代码Github 3k star,雀氏牛波。
http://arxiv.org/abs/2401.11963
作为一个ERL人,看到这么make sense的方向,怎么能不做?既跟着具身热点,又是RL领域的痛点,做,必须做。这种研究性的东西最好玩了!
回到正题,无论他的技术栈是什么样的,我想强调的是,奖励函数的优化是重中之重,是一个非常值得研究的方向,随着coding LLM的快速发展,我们能做的变得越来越多,需要更多的青年才俊涌入,如果我们解决了奖励问题,那么你策略学习效率会爆炸无敌的快。唠叨这么多了,下面就是正文了,代码还没整理,属于是一坨的状态,(各种事情太忙了Orz),等我Clean之后立马开源。
(ICML 2025)R*: Efficient Reward Design via Reward Structure Evolution and Parameter Alignment Optimization with Large Language Models
论文链接:https://openreview.net/forum?id=qZMLrURRr9¬eId=EsMfHkyMrs
背景与动机
在深度强化学习(DRL)中,奖励信号是重中之重。奖励信号设计得好, 根据信号引导求解就可以快速解决学习策略。然而,奖励设计非常困难,传统方法依赖人工设计或专家演示,成本高且易陷入次优;一些后续方法如IRL,RLHF等都需要较强的前提条件或者人工介入。
近年来,大语言模型(LLMs)展现出了广泛的领域知识和出色的编程能力。一些研究尝试利用 LLMs 直接生成奖励函数的代码,从而显著减少人工工作量。然而,单纯依赖 LLM 所生成的奖励函数仍然面临诸如搜索空间庞大、鲁棒性有限等挑战。
与此同时,进化强化学习——一种结合进化算法(EAs)与强化学习(RL)的方法——在提升探索效率和学习鲁棒性方面取得了显著进展,并已广泛应用于多个领域。在此背景下,Eureka[1]将 ERL 中的协同优化(Synergistic Optimization)思想应用于奖励函数生成任务:使用EA来进化一组由 LLM 生成的奖励函数种群,同时采用RL训练策略以进行评估,从中选择最优奖励函数。尽管 Eureka 在多项任务中展示了最先进的性能,但仍存在两个主要的局限:
- 贪婪利用:每次迭代仅基于当前最优的奖励函数进行改进,这可能导致次优结果。其他潜在有价值的候选奖励函数在未被充分利用的情况下就被舍弃。
- 参数赋值不准确:奖励函数通常包含多个参数,例如不同奖励成分的权重或系数。仅依赖大语言模型(LLM)Zero-shot地直接设置这些参数,而这往往不够准确,导致奖励函数可能无法提供精确的指导。
R* 的两大核心思路
图1 R* 算法流程示意图
本工作提出基于LLM的自动奖励生成方法,R*。R*将奖励函数设计拆解为奖励结构演化与参数对齐优化,同时解决上述难题。
1:奖励结构演化(Reward Structure Evolution)
种群初始化:首先基于大语言模型生成一个奖励函数族群(Population),其中每个奖励函数包含若干「奖励模块」,例如:Reward = distance_reward + speed_reward + grasp_reward (分别对应距离模块、速度模块、抓取模块)。(图1左上角)
种群评估:为每个奖励函数配置一个RL agent,通过ISSAC GYM进行并行训练,最终policy的胜率作为种群中个体的得分(即fitness),基于此选择出表现最好的个体。(图1左下角)
种群优化:
- LLM优化提升:基于最好个体,通过 LLM 的反思机制优化奖励函数。例如,增加必要的奖励模块,删除无效奖励模块,优化已有奖励模块;(图1左上部分)
- 模块级交叉:引入模块层面交叉(Module Crossover),维护好的奖励函数,从中选择多个高质量父代,通过交换模块生成新个体,从而高效探索结构空间(更强的利用与搜索能力,且不需要额外API调用)。(图1中间部分)
2:参数对齐优化(Parameter Alignment Optimization)
判别函数种群生成:利用LLM生成一组「判别函数」(Critic Functions),每个判别函数对轨迹状态进行逐步打分,输出 {-1,0,+1} 标签,判定哪一个state更优,注意函数生成过程不需要人参与,与奖励函数生成流程相似,提供必要的环境代码,成功标准即可;(图1右上角)
投票机制:我们在RL训练完成后,采样多条轨迹,多个判别函数分别进行两两对比,给出两条轨迹中对应state之间的优劣标签,仅在半数以上一致时才采纳,确保标注质量,这样避免了基于单个判别函数存在的潜在标注错误问题;(图1右下角)
偏好轨迹片段提取:从连续一致标签中提取子轨迹,构建偏好数据集;
参数对齐优化:基于自动化构建的偏好数据集,采用Pairwise Preference Loss对 LLM 给出的初始参数进行微调,使最终奖励函数能更准确地区分轨迹优劣。(图1中下部分)
实验结论:
设定:对比Eureka, Human(人类设计的奖励函数),Sparse(稀疏奖励函数),使用GPT-4o作为backbone。
- R*最终性能更优(Figure 2),收敛速度更快(Figure 3)。
- 模块交叉显著提升结构探索效率:实验发现,最佳个体有超过 50% 来自模块交叉生成,而非纯 LLM 直接改进(Figure 4)。去掉交叉后性能明显下降(Figure 6),但过度依赖交叉(比例过高)同样会影响多样性,需保持平衡。
判别函数投票机制保证参数标注质量:相比直接让 LLM(仅文本描述)或 VLM(视觉输入)给出轨迹优劣的比较,R* 的判别器族群在 Franka-Cabinet、Shadow-Hand-Kettle 数据集上正确率达 100%(Figure 7 对比)。这主要还是由于LLM和VLM本身能力的限制,幻觉现象非常严重,迭代三次询问可能得到三个不同的回答。VLM则很容易完全无法区分差别很大的对比图。
总结
这里就不搞那些有的没的了,如果你也想做ERL或者奖励生成,欢迎交流,我们一起做一些有趣的研究,让ERL的风吹向远方。
另外,为什么我觉得ERL有趣,因为ERL才是真正的仿生:进化+学习,我们一代一代的科研玩家,一轮一轮的科研浪潮又何尝不是一轮一轮的进化与学习呢?
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。