推荐系统的道法术器:自然模态与LLM为师
2025-9-20
| 2026-11-11
字数 2724阅读时长≈ 7 分钟
最近被马斯克的Optimus机器人的手震撼了一下,这和很多把电机直接塞在机械手里的方案不同,执行器已迁到前臂,像人类一样,通过‘缆索’驱动手指”。虽然这是有难度的方案,但是看起来上限极高,有望见到机器人拥有和人类一样的灵活的双手。常见的机械手方案,看起来就像选错了技术路线,随着时间推移,一定是落后的。
notion image
在自动驾驶上,马斯克觉得纯视觉就够了,国内造车新势力觉得说毫米波雷达没用的非傻即坏。后者理解也没问题,就是多一种模态总不会更差,如果处理多模态的能力上来,是不是上限更高。这个就像我们往推荐模型里塞特征(分分类也可以叫模态),那更多总是更好的吧。当然,一般否定的理由是雷达的成本,如果视觉算法能力上来,加上视觉模态自然简单,这个将是一个低成本的方案。
这两个例子看似是相反的:一个是追求复杂度和高上限,不计短期成本,一个是追求简单自然单模态,考虑长期成本。你能找到一个统一的思维方式:
  • 对齐那个最自然的模态:交通规则和标志就是为视觉设立的,视觉就是最低成本和最极致的自然模态
  • 找一个强大的对象模仿:这个对象就是“人”,人手是足够强大的,对齐的方案有足够高的上限和清晰的预期。
这两点在推荐系统里也不例外(拿马老师开了一下头)。
使用最自然的模态
之前有讲过推荐系统的道法术器。道是方向,法是规律和原理,术就是算法模型,器是工程架构。他们之间的关系是并行的,缺一不可,并非踩一捧一,但往往更多人关心的是术与器,对道和法的关注不多。这里讲的是我最近理解的推荐系统的“道”,使用最自然的模态。
这里的“模态”(modality)指信息的类型/通道——即数据由哪种感知或记录方式产生,需要怎样的编码器与表示。可以粗略理解成,推荐系统模型输入的格式,或者样本和特征组织的形式。
之前有个提问说,为啥GNN不行。我的回答是,它是一个人为构造出来的模态,并不是天然存在,图需要人的定义,非常依赖领域经验,并且工程成本极高。也就是模态不够自然。
那推荐系统现在的主流模态自然么?我们主流的样本是(User,Item,Context,Action)的元组,User,Item上组织了非常重的特征,比如统计/交叉,这些特征是天然不存在的,来自于领域经验,User侧有一类特殊的模态就是用户序列,它其实是相对自然的,但是他并不是模态的主体,在建模的时候往往预先被pooling成一个向量表征再与其他特征做交互。
记录下用户所有的历史的(User,Item,Context,Action),它就是一个序列,但是User里又带着一个序列特征。之前讲过它在长序列下会产生相当大的IO浪费问题,今天换个角度,正是因为推荐系统使用的模态不够自然,才有这样的重复与浪费,并且不自然的模态本身就被隐式地拉低了上限。
Meta的生成式工作,无论他是否work,都是尝试重新塑造推荐系统模态的工作,是突破性的。即把用户的样本组织成一条序列,使用最自然的模态建模和推理。
大家的模型Scaling Up工作习惯上还是沿着两条老路分别做,用户序列的拉长与模型复杂化,特征交叉的叠层加深与模型复杂化。举个例子,过去是Concat(DIN+UI特征)->MLP&LHUC,现在是Concat(Transformer序列+UID特征)->XXMixer/Transformer,序列变长也建模也变复杂了,但模态并没有改变,它是一个配角,给上层特征交互提供了几个pooling后的表征。
我们的系统里,序列已经是一个主角,主体是一个标准的Transformer中,传统的特征交叉变成了丢进去多token作为Query与序列和特征自身交互。并且我们相信,只要序列足够长和丰富,模型足够宽和深,丢进来的特征会慢慢变成只需要几个ID。序列主体的One Transformer排序改造,相比生成式推荐,虽然不彻底,但是他非常容易成为基线,并且逐步扩展到上下游链路。
其实NLP和CV也有类似的发展,只是大家都忘记了。最早的NLP喜欢用词袋模型,其实就是一个人工统计出来的非自然模态,现在就是原文输入了;CV原来也有SIFT特征,VLAD->SVM,后面直接图像完整输入了。
使用最自然的模态,把推荐系统的模态重塑,做序列为主体的建模,开辟出更高的上限。
找一个最强的老师
马斯克的Optimus机械手和纯视觉方案,都有一个统一的思维模式,就是以“人”为标准。而推荐系统最好的老师就是LLM。以NLP为师并不新鲜,比如有了Bert就立即有Bert4Rec,感觉还是学的不够彻底。对齐了序列模态和Transformer Decoder-Only结构,剩下的工作就是彻彻底底地抄!抄就有技术深度和业务产出,还有什么比这个更简单和激动人心的么?
去年,面了一个meta的同学,他是鄙视生成式的,他说生成式没用,问他啥有用,他说8K序列入图。推荐系统超长序列一般利用trick来减少入图长度,他实打实的8k序列入图,这个工程要求极高。为啥能做到呢?工程上能支持LLM的超长Context,就能支持推荐8k行为序列入图,人家LLM用的是torch,推荐也是torch!如果你用一个decoder-only的模型结构,那不就是完美适配LLM工程了。
再看看当时我们的系统,基于tensorflow,而且是老版本模改的企业版本,搞一个Flash Attention要几个月的时间。所以,必须切torch,未来对齐LLM开源生态;工程上做改造,下苦功no more trick,实打实地去拉长序列长度,改造样本的组织方式。
“法术器”上借力
推荐系统的研究,很多都是停留在“术”上,拼凑出来一个网络,然后你用了work或者不work。我们说技术深度是“知其所以然”,这是“法”的范畴。
比如最早SASRec(Self-Attentive Sequential Recommendation)这个工作,有人跟我讲说没用,我在数据集上复现,我发现l2-norm或温度系数是有效的,这里l2正则系数大了,基本变成avg pooling,就没有效果,系数大了,很容易变成one-hot,效果还不如avg pooling。所以要精确控制attention的激活在不大不小的范围里,才能拿到效果。
这其实是一个模糊的认知,LLM领域关于attention scale的研究就更加清晰地展现了规律。比如监控MaxLogit,其实就是避免attention坍缩。苏剑林的《从熵不变性看Attention的Scale操作》, 《从梯度最大化看Attention的Scale操作》,从理论推导给出scale指导。
对齐了LLM,因为有一批试图解释局部规律的研究者,推荐系统也能在“法”上借力,把推荐系统迭代从“拿来和验证是否work”的经验主义,变成理解部分原理的确定性推导。我们也会发现,很多trick能有效,可能就是因为模型还不够深不够宽,甚至是有些情况下Transformer理解不到位,参数设置的不对,“法”就是避免在“术”上的经验主义驱动。
“术”和“器”上能抄的也不少。抄Pre-Train,减少具体任务的样本量依赖;抄怎么做长度外推,训练用1k长度,推理直接上8k用户行为序列。
推荐系统始终存在SSB的问题,导致潜在的feedback loop。一般通过召回上做全域样本和IPW纠偏,全链路启发式规则做多样性/发现性/冷启动来对抗feedback loop。
生成式推荐或生成式排序,follow LLM的post-training过程,如果能将用户Long Term Value融合到list/session的生成上,或者将用户的列表反馈或人工标注的体验偏好作为reward自然融合进序列生成,就会有更好的效率和体验/长期价值的平衡。强化学习策略的随机采样过程,就是对SSB的突破,把多样性/发现性/冷启动的启发式策略变成更高效的概率采样。
结尾
大概总结下,从道法术器的维度上,“道”是对齐最自然的模态,把推荐的模型架构和样本设计和LLM对齐,然后在“法”上借力让推荐脱离经验主义,在开源的生态上可以充分享受“术”和“器”的成果。
  • 推荐系统
  • LLM
  • OneTrans 推荐系统对齐序列处理与特征交叉从信息瓶颈视角聊聊推荐系统
    Loading...
    目录