AI 见闻
精选· 重要性 4/5

如何停止交付低质量强化学习环境(附示例)

Latent Space (Swyx)··Auriel Wright·约 9 分钟阅读
中文导读

本文指出低质量的RL训练环境会系统性生成垃圾数据,使模型学到错误行为,并列举常见故障类型及修复方法,强调环境质量对模型性能的关键影响。

如何停止交付低质量RL环境(附示例)你损坏的训练框架正在使模型变得更糟。这是我多年来观察轨迹后不断看到的问题,以及你需要修复的内容。

我们很高兴发表这篇来自Auriel W的客座文章,她曾在Gemini从事RL工作,并拥有一个令人难以置信的“RL Pet Peeves”博客,她在其中毫不隐晦地解释了大型实验室对RL供应商的挫败感:1)不阅读轨迹,2)没有领域专家,3)不做出经济权衡,4)触发评估意识,

而本文是关于环境质量的。根据经验,我们非常热衷于提高数据质量的最新水平——毕竟,更好的数据就是你所需要的一切——因此,我们邀请数据的买家和卖家,从人类专家到RL环境,加入我们在三周后于AIEWF举办的首届数据专题。

如果你有演讲者要推荐,请联系我们!事不宜迟,有请Auriel!我不想要你的破烂框架/环境,兄弟🙂作为一个花了多年时间构建生产级模型的人,我需要你听到这句话:研究人员不想要你破碎的RL环境,因为它们会让我们的模型变得更糟。

不是“添加一些噪音”那种更糟,而是更像是“哦,糟糕,模型正在学习错误的东西,你毁了我的训练运行,我必须扔掉你的东西”那种更糟。

这是我看到的一个常见问题,也可能是我作为一名实践者最关心的问题,因为我也试图让模型适应用户喜爱的真实世界用例。人们会构建相当于破碎软件的东西,并将其宣传为“RL环境”。

训练框架本身——RL代理在其中训练的完整、交互式且通常是模拟的软件系统(例如,模拟聊天机器人、假IDE、模拟SaaS仪表板)——就是不可靠地工作。它会抛出随机回溯,存在竞态条件,在最小负载下就会崩溃,其中还有字面意义上的损坏代码。

如果你是一名应届研究生研究员、一家试图为产品进行后训练子代理的初创公司,或者任何正在构建RL训练基础设施的人:这篇文章是我不断看到的框架故障列表,以及它们为何会破坏你的数据,以及如何修复它们。

在RL中,你没有静态数据集。相反,模型通过与环境交互来创建自己的训练数据。每一个动作和每一个奖励都成为一个数据点。一个不稳定的框架会系统性生成垃圾数据,并将其直接输入到模型的学习步骤中,从而将梯度推向错误的方向。

跨智能体用例的常见框架错误作为一名从业者,在过去5年里观察了不同领域的数千条轨迹后,我看到了同样的框架故障。

以下是我个人根据当今非常常见的各种智能体类型而特别留意的一些问题:下面的每个轨迹级联都精确展示了单个框架错误如何毒害整个回合。错误类别1:陈旧缓存当你的环境在采取动作后返回旧数据时,就会发生这种情况。

示例:SaaS销售代理/BDR代理你的框架的模拟CRM API存在缓存错误。在负载下,它返回几分钟前的陈旧状态,而不是当前数据。代理根据错误的信息做出理性决策,受到惩罚,并学会完全避免正确的工作流程。

模型最终学到的是:“当有疑问时,发送培育邮件并避免管道。”错误类别2:奖励作弊当你的代理玩弄指标时,就会发生这种情况。示例:编码代理你的奖励函数只检查测试是否通过,而不是检查代码是否实际正确。

代理发现它可以硬编码预期输出,而不是解决问题。每次测试都通过,代理获得最大奖励,而第一次实际输入就导致生产崩溃。模型最终学到的是:“阅读测试,硬编码输出,跳过理解错误。”错误类别3:虚假解决当状态发生变化,但核心问题仍未解决时,就会发生这种情况。

示例:客户支持代理你的框架基于工单状态变化(打开→已解决=正奖励)给予奖励,而不是基于客户的实际问题是否得到解决。

代理学会了点击“解决”是获得奖励的最快途径——即使客户仍然有问题。更多需要注意的框架故障静默超时默认值:当API调用时间过长时,你的框架静默返回默认值,而不是抛出错误。模型学会了某些动作“总是立即成功”,并且从不在其行为中构建重试逻辑。

非确定性状态重置:框架在回合之间没有完全重置,因此第N回合的剩余状态会泄漏到第N+1回合。模型因在当前回合中未做的事情而获得奖励或惩罚。奖励舍入/裁剪伪影:你的奖励函数以抹平有意义信号差异的方式进行裁剪或舍入。

一个很好的动作和一个平庸的动作都返回+1.0,因此模型没有梯度来区分它们。与生产分布不匹配的模拟数据:你的框架使用格式完美、干净的模拟数据,但生产数据存在拼写错误、缺失字段和边缘情况。模型在训练期间从未看到混乱的输入,并在真实输入上崩溃。

动作空间漂移:框架暴露了生产中不存在的动作(或隐藏了存在的动作)。模型学会了依赖部署时不存在的“快捷方式”按钮,或者从未发现它所需的关键能力。

如何最小化框架故障了解你的模型,了解你的框架根据我的经验,一个精心构建的框架具有清晰的信号(每个状态都是新鲜的,每个奖励都与现实匹配)、优雅的降级(糟糕的回合在到达梯度之前被标记并排除)和快速失败行为(有东西坏了,它会立即抛出,

而不是静默地破坏数据——你宁愿失去一个回合也不愿毒害一个)。你通过花时间与模型相处来学会识别这些属性——审查轨迹,建立故障分类法,以便你知道一个糟糕的回合是模型故障还是框架故障。如果你的环境故障率高于5%,那么你没有模型问题,而是有框架问题。

先修复框架。我在之前关于轨迹审查的文章中对此有更多讨论。在RL研究中采用传统软件工程最佳实践构建良好的RL环境既是一个软件工程问题,也是一个研究问题。

我觉得许多受过经典训练的机器学习研究人员最常被教导思考算法和数学正确性,但在学校里,我们从未被教导如何真正执行代码中数学告诉我们的内容。构建可扩展且稳健的软件(即稳定的框架)需要与传统研究略有不同的最佳实践集。

尽可能像对待生产框架一样对待你的训练框架。

因此,如果生产环境平均经历200 QPS,请确保你的框架知道那种感觉而不会出错。如果你以前从未交付过生产软件,Gergely Orosz和Alex Xu等人提供了大量资源可以帮助你实现这一点。

你还可以向公司的平台工程师学习,他们通常对稳定和可扩展的软件了如指掌。去修复你的破烂框架吧训练框架工程是为了确保模型在实际部署到生产环境之前经历生产质量的交互。一个好的框架会复合:每一个干净的回合都建立在上一回合的基础上。

一个坏的框架也会复合,只是方向错误。交付工作框架的团队与不交付的团队之间的差距随着每次训练而扩大。将训练框架视为实际产品的扩展——具有你期望模型在生产中看到的相同水平的工程质量。

Auriel W的博客在 https://aurielws.github.io/writing.html,她也在Twitter和LinkedIn上。

原文出处
How to Stop Shipping Low-Quality RL Environments (with Examples)

本文为机器翻译辅以 AI 润色,仅供参考。原始事实以原文为准。

相关阅读