打开网易新闻 查看精彩图片

你可能不知道,训练一个推荐系统,工程师大部分时间不是在写代码,而是在做选择题。

要不要多加一层网络?要不要换个损失函数?要不要调整学习率?每个选项背后都是一次完整的训练加验证流程,短则几十分钟,长则几个小时。一个资深算法工程师的日常,很大程度上就是不断猜测"这次改哪里可能有效",然后跑一遍实验看结果,猜错了就换个方向再试。

这几年大语言模型火了以后,很多人想到一个自然的主意:既然LLM能写代码,能读懂日志,那干脆让它自己当这个"工程师"得了。给它一个初始模型、一个数据集、一个评估指标,让它自己去改代码、跑实验、看结果、再改代码,循环往复。这类系统被称为MLE Agent

**MLE Agent**:全称是Machine Learning Engineering Agent,指的是能够自动完成机器学习工程任务的AI智能体,包括读任务描述、写训练代码、跑实验、根据结果迭代改进等一整套流程

听起来很美好,但用在推荐系统上,很快就撞上了一堵墙。

核心问题:自由发挥的代价

先说清楚这堵墙是什么。

现有的自动化机器学习工程方法,基本上分成两条路子。一条是把整个过程当成"搜索问题"来做,比如AIDE这类方法会把不同的解决方案组织成一棵树,每次贪心地选择当前最优的分支去改进,这本质上是一种树搜索。另一条路子更激进一点,比如"Reasoning-as-Gradient"这篇工作提出,不要把每次实验的反馈压缩成一个分数就完事了,应该把错误日志、训练过程中的波动、验证结果全部当成文本形式的"梯度",让LLM读懂这些信息之后,直接生成下一步该怎么改的具体方案。

这两条路子在通用机器学习任务上都有各自的道理,但放到推荐系统里,问题出来了。

推荐系统的优化空间实在太大了。序列推荐、点击率预测、观看时长预测,每一个任务背后牵扯的东西五花八门:骨干网络架构怎么选,训练目标怎么定,正则化策略怎么用,特征交互方式怎么设计,序列建模用什么机制。这不是一个有限的、可以枚举的网格搜索空间,而是一个开放式的工程决策空间。

如果放任LLM自由决定"下一步试什么",会发生什么?

论文里给出了明确的答案:候选方案的提出没有任何原则性的分配机制,但每一次实验的成本都不低。结果就是低成功率、低优化效率。换句话说,让AI在这么大的空间里"随便试试",看起来很聪明,实际上钱和时间都在打水漂。

这就像什么呢?

想象你要去一个从没去过的城市找一家好吃的餐厅,手头没有地图也没有推荐榜单,只能靠走。如果你完全随机地在城市里瞎逛,走到哪算哪,理论上你确实有可能走到那家餐厅门口,但更大概率是你逛了一整天,脚底磨出泡,还是没找到。如果不这样瞎逛,而是先问问本地人"哪个区域好吃的多",缩小范围之后再具体挑,效率会天差地别。这里"哪个区域"就是方向选择,"具体挑哪家店"才是细节执行。两者混在一起做,就是当前很多MLE Agent正在犯的错误:既要决定往哪个方向走,又要决定走多少步、怎么走,全部交给同一个决策者,结果哪个都做不好。

研究团队意识到,这两件事其实应该分开做。

RecHarness:把"选方向"和"做决定"拆成两个角色

基于这个洞察,团队提出了RecHarness

**RecHarness**:Bandit-Routed Agentic Harness的简称,直译是"赌博机路由的智能体框架",是本文提出的自动化推荐系统优化方案,核心思路是把优化过程拆成"选方向"和"生成具体方案"两步

这里的"Harness"这个词值得琢磨一下,字面意思是"马具"或者"约束装置",用在这里其实很贴切。它不是让AI天马行空地自由发挥,而是给它套上一套缰绳,规定它只能在人类划定好的几条路径里选择,然后在选定的路径里深耕细作。

具体怎么拆的?

论文把整个优化流程设计成三层结构。

第一层是人类专家定义的"优化上下文",包括这次要优化的目标是什么、用什么指标验证效果、有哪些候选的修改方向可以选。这一层完全由人来把关,相当于划定游戏规则和棋盘边界。

第二层是一个叫Bandit Router的路由器

**Bandit Router**:赌博机路由器,用统计学中的多臂赌博机(Multi-Armed Bandit)算法,根据历史实验的验证反馈来决定接下来应该把有限的实验次数分配给哪个修改方向

它的工作原理来自一个经典的统计决策问题:多臂赌博机问题。假设你面前有好几台老虎机,每台的中奖概率你都不知道,你只有有限的硬币可以投,怎么安排每一次投币才能让总收益最大?

答案是要在"已知效果不错的机器上多投"和"还没试过的机器也得试试看"之间找平衡,这就是所谓的探索与利用的权衡。RecHarness借用了这套逻辑:把每一个可能的模型修改方向(比如调整学习率、改变损失函数、增加特征)都当成一台老虎机,每次实验的验证结果好不好,就是这台机器给不给"中奖"的反馈,随着实验的积累,系统会越来越清楚该把有限的实验预算投向哪个方向。

第三层才轮到LLM登场。在路由器选定了一个大方向之后,LLM负责在这个方向内部想出具体的改进方案,并且真的把代码写出来。这时候LLM看到的不只是一个分数,还有实验的日志、报错信息、训练趋势,以及一份不断更新的"经验总结"文档。

这三层合起来,形成了一个清晰的分工:人类定义"要优化什么、可以往哪几个方向改",赌博机路由器决定"这一轮该把有限的实验次数投向哪个方向",LLM负责"在选定的方向里具体怎么改代码"。

打个比方,这就像一家公司里的三种角色。老板(人类专家)先定好这季度的KPI是提升销售额,并且规定业务团队只能从"拓展新客户""提高复购率""优化定价"这三条路子里选。资源调配部门(Bandit Router)根据过去几个月各条路子实际带来的业绩变化,决定这个月多少预算投给拓展新客户,多少投给提高复购率。具体到"怎么拓展新客户",才是一线销售(LLM)发挥创意想具体方案的地方。如果没有资源调配这一层,让一线销售自己决定预算怎么分配,很可能出现的情况是,销售员个人觉得哪个方向有前途就一股脑砸钱进去,完全不参考过去的实际效果,这正是此前那些自由发挥型MLE Agent的问题所在。

局部改良和"跳出舒适区"的双重机制

光是分层还不够,论文还处理了另一个现实问题:局部修改早晚会遇到瓶颈。

如果你一直在同一个模型架构基础上做小修小补,比如调调学习率、改改dropout比例,这类改动被称为局部微调arm

**局部arm(Local arms)**:指那些在当前模型基础上做增量式改进的修改方向,比如调整超参数、修改正则化策略,这类改动通常不会破坏原有架构的基本框架

那总有一天,这些小修小补带来的提升会越来越小,趋于饱和。这时候继续在原地打转是没有意义的,需要一次更大胆的结构性调整,比如更换整个序列编码器,或者重新设计损失函数的形式。论文把这类伤筋动骨的大改动叫做跳跃arm

**跳跃arm(Jump arms)**:指那些涉及模型结构层面重大变化的修改方向,比如更换核心的架构组件,这类改动风险更高,但也可能带来局部微调无法达到的提升空间

问题是,怎么判断"现在已经到了局部改良的瓶颈期,该考虑大改了"?

论文的做法是持续监控最近一段时间(比如最近5轮实验)验证指标的提升速度,如果这个提升速度低于某个阈值,说明当前这个"坑"已经挖得差不多了,系统就会解锁跳跃arm,允许尝试更激进的结构性修改。这个判断逻辑被称为basin-aware jump机制

**basin-aware jump(盆地感知跳跃)**:这里的"盆地"是一个借喻,指模型在当前架构框架下能达到的性能上限区域,就像山谷的谷底。当系统检测到在当前"谷底"里已经很难再有提升时,会触发跳出去尝试其他"谷地"的机制

这个设计很聪明的地方在于,即便触发了跳跃,系统也不会立刻全盘接受这次大改的结果。因为架构级别的改动往往需要一段时间的"磨合期"才能发挥出真正实力,直接换了新架构但没调好细节参数,效果反而可能比原来还差。所以论文设计了一个延迟验收机制:允许在跳跃之后再做几轮局部微调,只有当磨合之后的结果确实超过了跳跃之前的最佳成绩,这次结构性改动才算真正被采纳。

这个思路让我想起搬家这件事。

如果你现在住的房子越来越挤,家具怎么挪都腾不出更多空间了,这就是局部微调到达瓶颈的信号。这时候你决定搬到一个更大的房子,这是一次"结构性跳跃"。但搬家当天你不可能立刻感受到新家的好处,因为东西还没摆放整齐,很多柜子还没装好,生活习惯也没适应新的格局。你得给自己一段时间,把家具重新布置,把常用物品放到顺手的位置,过一阵子才能真正感受到新家是不是真的比旧家好。如果不给这段磨合期,搬家当天你就急着下结论"新家还不如旧家",那很可能是被暂时的混乱状态误导了。RecHarness对结构性跳跃的处理,正是留出了这样一段"磨合期"再做最终判断。

经验记忆:不让LLM每次都从零开始想

除了赌博机路由和跳跃机制,RecHarness还有一个不太起眼但很重要的组件,叫Experiment Skill

**Experiment Skill(实验技能文档)**:一份不断自动更新的文本记录,包含当前最优模型的状态、过去成功的修改经验、失败或被拒绝的尝试及其原因、以及最近几轮验证指标的变化趋势

这份文档的作用不是替代前面提到的赌博机路由做决策,而是给LLM在具体生成修改方案时提供参考。每一轮实验结束后,系统会自动把这一轮的结果提炼进这份文档里:如果这次修改成功了,就把"用了什么方法、效果怎样、有什么可复用的模式"记下来;如果失败了,就把"避免重复犯的错误"记下来,比如某种接口写法总是导致训练崩溃,或者某类修改试了很多次都没有效果。

这个设计解决的问题其实很现实。如果没有这份记忆,LLM每一轮生成方案的时候都是"失忆"状态,完全不知道上一轮甚至前几十轮已经试过什么、踩过什么坑,那很可能会不断重复同样的错误。这就好比一个新员工每天上班都失忆,昨天犯过的错误今天还得再犯一遍,效率可想而知。有了Experiment Skill,相当于给这个"AI工程师"配了一本随时更新的工作笔记,每次开工前先翻一翻笔记,看看以前踩过哪些坑、哪些套路管用,再动手。

值得强调的是,论文特别设计成这份文本记忆只影响LLM生成具体方案的过程,不会反过来干扰赌博机路由器的数值化决策。这个区隔是有意为之的:路由器依据的是严格的、可量化的验证分数积累,如果让文本总结随意覆盖这套数值逻辑,路由器的决策就会变得不可控、不稳定。

实验结果:从冷启动模型到多个方向的实测提升

理论说得再漂亮,最终还得看数据。

论文在两大类推荐任务上做了验证。第一类是序列推荐,用了亚马逊评论数据集里的四个子集:电影、科学仪器、电子产品、CD,在这四个数据集上测试了五种不同的模型骨架,包括GRU4Rec、BERT4Rec、NextItNet、SASRec,还有相对较新的HSTU

**HSTU**:全称Hierarchical Sequential Transduction Units,是Meta提出的一种面向生成式推荐的大规模序列转导单元,能处理万亿参数规模的序列建模任务

第二类任务是观看时长和排序预测,用的是快手的KuaiRec数据集,这是一个交互密度很高的用户视频交互数据集,测试了D2Q、TPM、GR三种模型。

结果怎么样?

在亚马逊数据集上,以HR@10(命中率)这个核心指标为例,RecHarness把相对较弱的GRU4Rec模型的平均命中率从0.2685直接拉到0.4990,提升幅度接近86%。即便是本来就比较强的HSTU模型,RecHarness依然能把它从0.4723提升到0.5317,提升超过12%。而且这个提升是在有限的实验预算下达成的,论文设定的GPU计算时间上限是43200秒,大约12个小时。

| 模型 | 基线HR@10 | RecHarness优化后 |

| GRU4Rec | 0.2685 | **0.4990** |

| BERT4Rec | 0.4066 | **0.4921** |

| NextItNet | 0.3156 | **0.4934** |

| SASRec | 0.5035 | **0.5558** |

| HSTU | 0.4723 | **0.5317** |

在KuaiRec数据集上,对相对较弱的TPM模型,RecHarness把两个衡量误差的MAE指标都降低了超过26%;对本来已经比较强的GR模型,虽然提升幅度看起来小(几个百分点以内),但四个指标全部都在往好的方向变化,说明这个框架不是只对差模型有用,对已经调得不错的模型依然有挖潜空间。

拆解实验:证明每个组件都在发挥作用

光看整体提升还不够有说服力,万一是运气好呢?论文做了细致的消融实验,专门验证到底是哪个设计在起作用。

他们固定用SASRec模型在四个亚马逊数据集上做对比,设计了四种变体:完整版的RecHarness、把赌博机路由换成纯随机选择的版本、让LLM自己根据历史文本反馈来选方向而不用赌博机路由的版本,以及完全取消预设修改方向让LLM自由发挥的版本。

结果很清楚。完整版RecHarness在验证集上的最佳表现,从初始的0.5050,到第二轮就冲到0.6125,第四轮达到0.6342,比其他三个变体都要快。

更有意思的是一个"命中率"分析。论文统计了每一轮实验里,有多少非基线的尝试真正刷新了当时的最佳记录。完整版RecHarness的命中率是47.92%,也就是接近一半的尝试都能带来提升;用随机路由替代的版本命中率只有22.45%;让LLM自己凭文本记忆选方向的版本是21.74%;完全取消预设方向、让LLM自由发挥的版本是41.67%。

这组数字说明了两件事。

第一,赌博机路由确实比随机选择和纯LLM决策更擅长找到高回报的方向,效果几乎是翻倍的。第二,虽然完全自由发挥的版本命中率也不算低(41.67%),但它找到的提升幅度偏小,平均提升是4.05%,最大提升只有10.16%,而完整版RecHarness的最大提升能达到24.00%。这说明自由发挥能碰到一些管用的小改动,但不太容易碰到那种真正带来质变的大方向。

这背后的道理其实不难理解。让LLM完全自由决定往哪改,就好比让一个刚入职的实习生随便挑一个项目做,他可能真的能找到一些小的改进点,但很难主动想到"我们应该重构整个系统架构"这种大手笔,因为没有约束和引导,思路容易发散到那些容易想到、但天花板不高的小修小补上。有了赌博机路由的引导,相当于有一个更有经验的人在旁边提示"这个方向过去几轮效果都不错,值得深挖",这样才更容易撞见真正的大改进。

真实业务场景:短视频广告系统上的7天实测

理论和离线实验都做完了,最有说服力的验证还是要看真实业务场景。

RecHarness被部署到一个大规模短视频广告排序系统里。这个系统的基线是一个已经比较成熟的生产级排序模型,用的是shared-bottom DNN架构

**shared-bottom DNN**:一种多任务学习网络结构,底层网络参数在多个任务之间共享,上层再分出不同的任务专属分支,常用于同时预测多个业务指标的场景

这套线上系统同时融合了用户侧、物品侧、组合特征,以及六组实时用户商业行为序列作为输入。

在这个真实场景里,人类专家先定义好优化目标、验证指标,划定局部arm(比如特征注入、融合位置调整、训练配置调优)和跳跃arm(比如序列编码器的结构升级)。然后RecHarness开始自主迭代。

有意思的是接下来发生的事:经过反复的局部arm尝试之后,提升逐渐见顶,路由器判断已经接近局部优化的瓶颈,于是解锁了跳跃arm,选中了"序列编码器升级"这个方向。这时候LLM开始翻阅Experiment Skill里积累的经验和历史实验记录,发现一个关键信息:现有的HSTU相关模块主要处理的是压缩过的虚拟token,并没有真正建模原始行为序列内部物品和物品之间的相互关系,而且此前很多次尝试特征交叉和融合结构的改动,都没能带来稳定的提升。

基于这个诊断,RecHarness把问题归结为"缺少序列内部的关系建模"这个结构性短板,进而生成了一个新的候选方案:对六组实时行为序列分别应用自注意力机制,把每组序列压缩成一个32维的向量,再把这六个向量拼接成一个192维的表示,注入到共享底层的排序网络里。

这个方案在离线测试中把生产环境的AUC提升了0.09个百分点。别小看这零点零几个百分点,在成熟的工业级排序系统里,这种级别的AUC提升往往意味着实打实的业务收益,因为基线本身已经经过了长期打磨,边际提升会越来越难。

紧接着做了一次为期7天、覆盖10%流量的线上A/B测试,结果显示这个候选方案把广告主价值ADVV提升了2.084%,收入提升了0.534%,曝光量提升了0.559%

**ADVV(Advertiser Value)**:广告主价值指标,用来衡量广告投放给广告主带来的商业价值

**A/B测试**:一种对照实验方法,把流量随机分成两组,一组用新方案,一组用旧方案,通过对比两组的实际效果来验证新方案是否真的有效

这个结果证明了一件事:RecHarness不只是在实验室的离线数据集上好看,它真的能在一个成熟的、经过多年打磨的工业级系统里,自主发现一个可以部署上线、并且真正带来商业收益的结构性改进。

这个案例其实还揭示了一个更深层的东西,就是那份Experiment Skill文档在真实场景里发挥的作用远超预期。它不只是记录"哪些改动成功了",更重要的是它帮助LLM做出了一次诊断性的推理,从大量失败的尝试中反推出真正的问题所在,然后针对性地给出解决方案。这种从失败中学习、定位根本原因的能力,正是很多"暴力搜索"型自动化系统缺乏的。

写在后面

读完这篇论文,最触动我的其实不是那些漂亮的提升数字,而是研究团队对"分权"这件事的坚持。他们完全可以把赌博机路由和LLM推理揉在一起,让一个更聪明的大模型同时决定方向和方案,这在技术上并不难实现。但他们偏偏选择把决策权拆开,用一个简单、可解释、几十年前就有的统计方法来管住"选方向"这一步,这是一种克制。

这让我想到一个更普遍的问题:当我们手里有一个越来越强大的通用工具(比如大语言模型)时,是不是应该让它承担所有的决策权?RecHarness给出的答案是否定的。有些决策,交给简单但稳定的统计机制反而更靠谱,LLM应该被约束在它真正擅长的地方,也就是理解上下文、生成创造性方案,而不是替代所有的判断。

论文里那个短视频广告的案例还有一个细节值得琢磨:AI是通过读历史失败记录,反推出"序列内部关系没有被建模"这个诊断的。这种从大量失败尝试里提炼出根本原因的能力,比单纯的"多试几次撞大运"要高级得多,也更接近真正的工程直觉。这是不是意味着,未来AI工程师真正的核心竞争力,不是尝试的数量,而是从失败中提炼洞察的深度?

Q&A

Q1:RecHarness是什么?

A:RecHarness是一个用于自动优化推荐系统模型的AI框架,核心设计是把优化过程拆成两步:先用赌博机算法根据历史验证结果决定接下来该往哪个方向改进,再让大语言模型在选定方向内生成具体的代码修改方案。

Q2:RecHarness和之前的自动化机器学习工程方法有什么不同?

A:以往的方法要么用树搜索一步步比较候选方案,要么完全让LLM自由决定改进方向。RecHarness的不同之处在于用统计学上的多臂赌博机方法来分配有限的实验次数,避免LLM在开放空间里盲目乱试,从而提高有限预算下的优化效率。

Q3:RecHarness在实际业务场景中效果如何?

A:在一个大规模短视频广告排序系统里,RecHarness自主发现的一个序列编码器改进方案,在7天、10%流量的线上A/B测试中,把广告主价值提升了2.084%,收入提升0.534%,曝光量提升0.559%。