news 2026/10/1 4:22:29

生成式推荐新范式:端到端可学习分词如何突破物品表示瓶颈

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
生成式推荐新范式:端到端可学习分词如何突破物品表示瓶颈

我最近在系统地扫生成式推荐方向的论文,坦白讲,大多数工作还停在"把LLM套到推荐上"的层面:要么把物品ID塞进词表,让语言模型去预测;要么用文本描述作为物品的软标识。这类做法都有个共同的问题——物品对语言模型来说仍然是"生词",模型对物品的理解完全取决于人工设计的标识,而不是推荐任务本身。直到我读到ETEGRec这篇论文,才看到一条不一样的思路:把物品分词这件事本身也交给系统来学。标题里的"端到端"和"可学习"不是噱头,它确实是在重新定义生成式推荐里最底层的那一环——物品如何被表示成token。如果你也在做生成式推荐、序列推荐,或者对LLM与推荐系统的结合点感兴趣,这篇论文值得仔细读。

1. 生成式推荐先把"物品语言化"这一关过了

1.1 传统推荐系统的ID范式与它的天花板

在聊ETEGRec之前,得先说清楚我们到底在解决什么问题。过去十几年的推荐系统,基本是ID的天下。每个用户、每个物品分配一个全局唯一的编号,然后把这个编号映射成稠密向量(embedding),靠协同过滤信号学交互模式。这个范式非常成熟,工业界至今仍是主流,但有几个结构性问题越来越明显。

一是冷启动。新物品没有交互记录,它的ID embedding就是随机的,模型很难给出合理的推荐。二是跨域迁移。换一个平台、换一个品类,ID空间就全变了,之前学到的embedding基本作废。三是可解释性。ID本身不携带任何语义信息,推荐结果的解释只能靠事后牵强附会。

这些问题的根源在于,ID是一种"人为指定"的标识,它跟物品本身的内容属性完全没有关联。语言模型火了之后,很多人想的是:能不能用文本描述来替代ID?比如把物品的标题、类别、属性拼接起来,当作一种"语义ID",让语言模型去处理。这个思路确实缓解了冷启动和跨域问题,但代价是——文本描述的质量决定了推荐的上限。物品标题可能是冗长甚至误导的广告语,商品属性可能残缺不全。而且更关键的是,文本语义和用户行为偏好并不总是对齐的。用户购买一个物品,很大程度上看的是行为层面的协同信号,而不是文本层面读起来像不像。

1.2 语言模型视角下的"物品分词"到底是什么

生成式推荐的基本范式,是把推荐任务重写成序列生成任务。给定用户的历史交互序列(每个交互对应物品的某种token序列),模型自回归地生成下一个物品的token序列,然后拿生成的token序列去解码出具体的物品。

这里就出现了一个此前很少被认真对待的问题:**物品应该被表示成什么样的token序列?**如果你用过中文分词工具,很容易理解这个问题的微妙之处。同一个句子,按字切分、按词切分、按子词切分,后续语义分析的难度完全不一样。"武汉市长江大桥"这种经典歧义,就是分词粒度不当造成的。物品也一样——一个物品该被拆成几个token?每个token代表什么语义粒度?这些token之间的组合规则是什么?

早期工作最常见的做法是"直接复用",把物品直接映射成一个special token(类似[ITEM_123]),或者把文本描述截断成固定长度的token序列。前者本质上是把ID搬进了语言模型,后者则是让NLP模型去做一件它设计初衷之外的事——理解推荐语料。两者都没有把"分词"当作一个可以优化的环节来对待。

1.3 可学习分词和智驾端到端的思路同源

这里我想提一个热词:智驾端到端。最近关于"端到端"的讨论很多,其实核心思想是一致的——把原来分阶段处理、各自优化的模块,打通成一个整体来联合优化。智驾里,传统方案是感知、预测、规划分模块pipeline,每个模块单独调优,最后串起来却会出现误差累积和梯度割裂;端到端方案干脆把整条链路塞进一个大模型,让系统自己学习如何从传感器信号直接输出驾驶决策。

推荐里的"端到端可学习物品分词"也是同样的逻辑。传统做法是:先按NLP规则或启发式方法把物品转成token(分词这一步是外部固定的),然后再训练推荐模型;分词质量差,推荐模型再努力也很难补回来。ETEGRec的方案是:让分词器(tokenizer)和推荐器共享梯度、联合训练,分词的表征方式本身被推荐任务引导着去演化。推荐器学得不好,分词器要背锅,分词器的参数也得跟着调整——这正是"端到端"三个字的关键含义。

2. ETEGRec的框架里,哪些组件在"可学习"

2.1 整体架构:从连续表示到离散token再回到连续空间

ETEGRec的框架可以拆成三块来看:物品编码器、可学习分词器、生成式推荐器。我按数据流的顺序捋一遍。

物品编码器的作用是把一个物品映射成连续的语义表示。这里的输入可以是任何模态的特征——文本描述、图片向量、类别属性等,甚至可以是ID embedding。它本质上是给物品一个"初始语义坐标",好让分词器有料可用。这个编码器不需要特别复杂,能承载物品的内容信息就行,因为在训练过程中它的表示会被推荐信号持续修正。

可学习分词器是整个论文最核心的模块。它把物品的连续表示转换成离散token序列。这里要注意的是,它不是简单地做"最近邻量化"或"固定聚类"。具体实现上,论文设计的是**多码本(multiple codebooks)**机制:每个物品的连续表示被映射到若干个码本上,每个码本选出最匹配的一个codeword(码字),最终得到的token序列就是这些码字索引的组合。可以把它想象成做菜:一道菜(物品)需要从肉类、蔬菜、调料几个维度的"码本"里各选一种,组合起来就是一个完整的菜单描述(token序列)。

为什么要用多码本,而不是直接映射成单个token?因为单个token只能表达"这是哪个物品",表达不了物品之间的内在结构。多码本则让token序列携带了"这个物品属于什么类别""有什么属性""在语义空间中处于什么位置"等多层次信息,这对于后续推荐器的推理是决定性的。

生成式推荐器负责消费用户历史交互的token序列,自回归地预测下一个物品的token序列。它的结构可以是Transformer decoder,也可以是任何一种序列模型。它的输入输出都是token级别的,预测完一组token之后,我们再用分词表把token解码回物品ID,完成推荐。

2.2 "可学习"到底体现在哪个环节

一句话概括:整个分词器(含码本和映射函数)的参数,全部参与反向传播,由推荐任务的损失函数来驱动更新。

这和传统做法的本质区别在于目标函数。传统的分词是独立于推荐目标完成的,比如用深度聚类算法把物品embedding聚成几百类,每类给一个token。聚类目标追求的是"同一类的物品表示相近",但没有人保证"同一类的物品,用户行为也相近"。

ETEGRec的做法是让推荐器的交叉熵损失直接指导分词器更新。推荐器预测下一个物品的token序列,预测错了,梯度回传到分词器,分词器就会调整自己的码本、调整映射函数,让物品的token表达方式更有利于推荐器的预测。**分词器不是为了"表示得好"而学,而是为了"推荐得准"而学。**这是整个架构的灵魂。

2.3 双向训练:推荐引导分词,分词也影响推荐

论文里还强调了"双向"的概念,这在很多解读里容易被忽略。双向指的是:不仅推荐器要适应分词器给出的token序列,分词器也要反过来适应推荐器的预测需求。这不是一句空话,它体现在训练策略上。

具体而言,训练是交替进行的:先固定分词器,训练推荐器,让推荐器学会消费当前的token序列;再固定推荐器,训练分词器,让分词器生成更有利于推荐器预测的token序列。这就像一个翻译官和助手之间的磨合:翻译官先按自己的方式翻译,助手学着猜;过一阵子,助手告诉翻译官"你这种翻译让我的猜测准确率上不去了,换种表达方式",于是翻译官调整措辞,助手重新适应,循环往复直到两者配合达到最佳。

这个交替训练的过程,让分词器和推荐器互相迁就、共同进化,而不是单方面让推荐器迁就一个固定的分词方案。方向对了,后面所有实验结果才有解释力。

3. ETEGRec和ID类、语义ID类方法相比,改的是底层逻辑

3.1 三种物品表示方案的直观对比

很多解读把ETEGRec归为"语义ID方法"的升级版,这个说法不够准确。它和之前的方法相比,改的不是某个组件,而是整条设计逻辑。我列了一个对比表,方便大家看差异。

方案物品标识如何产生分词是否参与训练对推荐目标是否自适应跨域/冷启动能力
传统ID embedding人工分配ID,查表映射否否(ID不承载特征)弱
文本语义ID(如FD)基于NLP规则/特征工程否(分词固定)否(取决于文本质量)中
生成式推荐的ID映射(如TIGER)逐级聚类生成索引否(聚类固定)方向对齐,但无法端到端调优中
ETEGRec可学习分词由推荐信号驱动自动生成是(端到端)是(直接对齐推荐目标)较强

传统ID的问题是"标识没有含义",文本语义ID的问题是"含义不由推荐决定",早期生成式推荐用的聚类式编码(比如逐级VQ-VAE)则卡在"分词环节没法通过推荐损失来直接优化"。ETEGRec试图把这些坑一次性填掉。

3.2 为什么说"端到端"比"两段式"在误差传导上更优

两段式方案(先分词,再训练推荐器)有一个工程师都懂的问题:误差传导被截断。分词阶段产生的错误,在推荐阶段会被当作既成事实接受下来,推荐器只能在不完美的输入之上做有限修正。典型的例子:分词把两个本来行为模式完全不同的物品硬分到同一个token类别里,推荐器看到的历史记录就会包含大量噪声,无论怎么调注意力权重,这个噪声都消不掉的。

ETEGRec的端到端联合优化,让分词器能感知到"这种错误的物品划分方式正在拉低推荐准确率",于是下一轮迭代里它就会把这两个物品切分到不同的token上。误差不是单向传导,而是双向反馈。这个设计在数学上等价于把一个分阶段的优化问题改成了联合优化问题,解空间大了很多,整套系统也更容易逼近全局最优。

我个人的理解是,这其实也回应了智驾端到端领域的核心争论:分模块pipeline的每个模块各自最优,并不等于系统整体最优;只有让所有模块共享同一个优化目标,系统才有可能跳出"局部最优拼凑"这个陷阱。推荐系统虽然规模远小于智驾,但逻辑是一致的。

3.3 语义ID常踩的坑ETEGRec怎么避开

我做序列推荐方向的时间不算短,对文本语义ID方案一直保留态度。问题在于文本语义和用户行为偏好的"错位"。

举个例子,一个电商平台上有两款耳机,一款主打"降噪、办公、长时间佩戴舒适",另一款主打"低音、电竞、线控麦克风"。从文本语义看,这两款耳机在NLP向量空间里可能相距很远,但在用户行为数据里,它们经常被同一批用户先后购买。当分词器完全基于文本生成时,模型就倾向于认为这两款耳机"完全不同",于是推荐时给出的是语义近似但行为未必相关的商品。这恰恰是推荐系统最忌讳的。

ETEGRec的可学习分词器,因为码本参数是在推荐损失驱动下更新的,它可以学到"行为上相近的物品,即使文本差异大,也应该在token空间中靠得近"。换句话说,语义信息只是初始化的线索,最终的分词规则由行为数据来定。这种"先有语义冷启动、再通过推荐反馈纠偏"的方式,比纯文本语义ID要稳得多。

4. 训练与实现细节里那些容易被跳过、却决定成败的环节

4.1 离散token无法反向传播怎么处理

文章读到这,很多人会问一个很实在的问题:从连续表示到离散token,中间存在一个不可导的"取样"或"argmax"操作,梯度怎么传?这是所有做离散化工作的通用难题。

论文里采用的路数是比较常见的:编码器输出连续向量,通过码本距离计算得到最匹配的码字索引,这一段的梯度用直通估计器(straight-through estimator)来近似。也就是说,前向传播时我们走离散的码字索引,反向传播时直接把梯度"穿透"到编码器的连续输出上,假装没经过离散这一步。这个技巧在VQ-VAE系列工作里被验证过多次,属于这个领域的标准操作。

但要注意,直通估计只是个工程妥协,它不是免费的。它会让梯度信号带上噪声,码本和编码器之间的更新经常出现不同步。实践里常见的补救措施是加一个commitment loss,强制编码器输出和码本保持匹配,同时用小学习率更新码本,避免码本漂移。

4.2 码本坍缩:多码本分词最难缠的问题

做量化类模型的人对码本坍缩(codebook collapse)一定不陌生。具体的现象是:训练一段时间后,某些码本里大部分codeword都闲置了,只有少数几个codeword频繁被选中,token序列的多样性急剧下降。

为什么这对ETEGRec尤其致命?因为如果码本坍缩了,所有物品的token序列在部分维度上完全一致,分词就退回了"少数几个token加一个特殊ID"的原始状态,多码本设计的价值直接归零。

针对这个问题,我个人能想到的合理手段有几种:一是在训练早期对codeword做随机初始化增强;二是引入码本正交性约束,强制多个码本各司其职、语义不重叠;三是使用对抗式的commitment loss变体,让码本的利用率尽量均匀。论文是否用了其中某一种或全部手段,得看原版实现,但作为复现者,这几手我都建议加上,否则实验很容易出现"前期效果猛如虎,跑了几天后漂移归零"的情况。

4.3 交替训练的节奏与初始化策略

前面说过,论文的核心训练方式是"先固定分词器训推荐器,再固定推荐器训分词器"的交替循环。这里有个工程问题:交替的粒度怎么定?是一个batch交替一次,还是一个epoch交替一次?

交替太频繁,两个模块都在移动目标,训练不稳定;交替太稀疏,收敛速度又太慢。基于我自己的复现经验,稳妥的做法是以epoch为单位交替,且分词器的学习率要比推荐器小一个量级左右。原因很好理解:分词器改的是整个表示体系的"底层编码规则",动得太猛会让推荐器努力积攒的上下文知识瞬间失效;而推荐器只是在这个规则之上做拟合,对变化的容忍度更低。谁动得快、谁动得慢,这个节奏很微妙。

另外,初始化也很关键。可学习分词器起步时完全是一张白纸,如果直接拿随机化的码本上手训练,早期token序列基本是乱序的,推荐器根本无从学起。合理的初始化方案是:先用物品的内容特征(比如文本embedding)跑几轮预训练,让物品的token序列初步具备语义区分度,然后再进入端到端联合训练阶段。预训练解决的是"起步阶段别乱跑",联合训练解决的是"跑起来之后往对的方向调"。

4.4 推理阶段生成物品token的序列长度问题

生成式推荐在推理时,推荐器逐token生成预测结果。物品被分词成多个token,意味着一个交互项被摊成多个生成步,序列长度会成倍放大。

这对工业落地的挑战是实实在在的:生成延迟直接和经济收益挂钩。为了限制成本,论文的做法是在推理阶段施加一个约束——生成的结果必须能在分词表中完整解码出一个合法物品。更实用的做法是结合束搜索(beam search),在解码前几步只保留那些"能映射到真实物品"的候选路径。我的一些朋友在复现时也采取了"提前截断+候选重排"的策略:先宽束搜索生成若干候选token序列,再用一个轻量级的打分公式对候选物品做重排。这样既保住了生成式推荐"端到端生成"的特色,又避免了逐token解码在工业场景下不可用的问题。

5. 从论文的评估与消融能读出哪些信号

5.1 评测结果里真正值得关注的是"相对提升的一致性"

论文的离线评测,我重点看了它和几个代表性的baseline的对比:标准序列推荐模型、基于聚类的生成式推荐基线、基于文本语义ID的基线。整体结论是:ETEGRec在公开数据集上的推荐准确率指标有明显的提升,而且在较长交互历史的用户分组上优势更大。

这里我感觉信息量很大。长序列用户意味着用户交互中包含了丰富的物品组合信息,对分词器来说,这种复杂的共现模式更考验它捕捉物品关系的能力。传统ID方法在长序列场景下往往受限于ID embedding的表达瓶颈,而ETEGRec的token序列因为带有语义结构,推荐器可以更容易地从长历史中提到"用户喜欢的模式"。

另一个我注意到的点是,并不是所有数据集上都赢了。在一些品牌效应很强、用户忠诚度极高的场景里(比如美妆品类,用户反复买同一品牌),可学习分词的优势会被削弱——因为这种场景下ID就够用了,复杂的语义结构带来的增益不大。这提醒了我们:端到端可学习分词也不是万能的,它更适合物品语义丰富、用户行为多样化的场景。

5.2 消融实验告诉我们的三个结论

消融实验是对设计决策最直接的验证。我记得比较清楚几个关键的消融方向。

第一个是去掉端到端联合训练,改为固定分词器只训推荐器。效果掉得不少,这说明"分词器被推荐目标持续修正"这件事确实在起作用,而不是单纯多了一组参数在给模型提容量。

第二个是去掉多码本设计,退化成单码本。效果同样下降。这验证了多码本能让token序列携带多维度语义信息,而不是简单地增加token长度来换取表达能力。

第三个是替换初始化特征。用纯随机初始化代替内容特征预训练,效果显著变差。这说明"内容特征是起点,行为反馈是终点"这一设计逻辑是对的。如果一上来就让分词器盲学,搜索空间大到不现实;只有先给一个有语义含义的起点,推荐信号才能高效地把表示往行为对齐的方向拉。

5.3 如果要复现,我建议盯住哪几个指标

复现这类工作,我个人的建议是不要只看推荐准确率。至少要盯住三组指标:

  • 分词质量指标:比如码本利用率、token序列的平均重复率、不同物品token序列之间的距离分布。这些指标能帮你判断分词器是否正常工作。
  • 推荐性能指标:常规的Recall、NDCG系列。
  • 训练稳定性指标:每个epoch的推荐器loss波动幅度、码本更新频率。如果波动太大,大概率是交替训练节奏没调好,得回头改学习率。

很多时候模型效果崩了,不是架构问题,而是码本已经坍缩了但你还在傻傻地跑T+1个epoch。训练过程中周期性地看码本利用率和token分布的多样性,能省下大量无效调参时间。

6. 这篇论文没解决、但我认为必须正视的问题

6.1 生成式推荐的效率瓶颈依然存在

端到端可学习分词让物品表达变得更丰富,代价是序列变长、解码变慢。论文本身主要在离线评测上论证效果,但在线推荐的延迟约束下,逐token生成的方式和传统双塔检索的差距仍然巨大。一种缓释思路是先端到端训练、后蒸馏:把训练好的生成式推荐器作为teacher,蒸馏出一个轻量的检索模型用于线上,把可学习分词的表达优势迁移过去,同时保证响应速度。这个思路虽然不是论文内容,但我认为和论文的主旨走向完全一致。

6.2 新物品上线时的"再分词"机制

冷启动问题在可学习分词框架下有个变体:训练完的码本,如何为一个新物品生成token序列?它能直接用训练好的编码器+分词器走一遍前向,但前提是——这个新物品的内容特征在编码器看来不是完全陌生的。如果新物品包含了从未见过的属性组合,映射出的token序列可能落入码本中稀疏甚至空白的区域,推荐器会变得无所适从。更务实的做法是常驻一个"兜底"策略,比如给新物品临时生成一组基于语义近邻的伪交互,先把它映射到码本的热区,再逐步靠用户反馈修正。

6.3 可解释性:分词本身是不是一个天然的"推荐理由"

最后说一点我自己比较兴奋的方向。物品分词将物品拆成了几个token,每个token对应码本中的一个语义类别。如果我把推荐器预测出的下一个物品token序列打开看一眼,实际上就能做到一种粒度很细的解释:模型不是因为"用户之前买了A所以推荐B",而是因为"用户的历史物品中都包含了某个语义码字,而推荐物品的这个码字和它一致"。

这种解释不需要额外的归因工具,而是内生在表示里的。论文里没有专门讨论这条线,但我觉得这是可学习分词在可解释推荐上最大的潜在价值。剩下的问题就是怎么把码本中每个码字的含义用自然语言描述出来,让用户真正能看懂。

如果你打算入这个方向的坑,我建议不要只停留在复现论文结果上。试着把码本可视化出来,看看同一码字下聚集了哪些物品,再把用户的历史token序列和推荐结果的token序列拼在一起看,你可能会发现一些论文里没有写、但对业务非常有洞察力的规律。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 4:22:13

用Python与Twilio搭建短信通知系统:从监控告警到验证码

半夜手机突然震动,屏幕上跳出“服务器CPU使用率超过90%,请立即处理”的短信。这个场景对于任何一个运维或者独立开发者来说都不陌生。项目不大,但价值极高:用Python调用Twilio的API,几十行代码就能搭起一套可靠、可扩展…

作者头像 李华
网站建设 2026/10/1 4:22:11

Java面试官实录:三轮问答揭开高并发候选人的真实水平

我见过不少简历很唬人的Java候选人,但很少见到简历和实际水准能差成蔡虚昆这个程度的。上个月我作为技术面试官,面了一位自称“精通Java、擅长高并发、在电商核心链路摸爬滚打三年”的后端开发。看完简历我挺兴奋,聊完第一轮我挺失望&#xf…

作者头像 李华
网站建设 2026/10/1 4:22:07

AI工业控制系统完整搭建指南:架构、模型与PLC协同实战

2026年,再聊AI工业控制系统,很多人第一反应是“无人工厂”“黑灯车间”这种概念片画面,但说实话,我在现场做设备改造这些年,更愿意把它理解成一件能落地的事:让原本靠老师傅经验调的PID、靠人工巡检发现的异…

作者头像 李华
网站建设 2026/10/1 4:21:49

LLM工程师实战成长路线图:从工具使用到系统工程能力

1. 这不是“转行指南”,而是一份LLM工程师的实战成长路线图2026年想成为LLM工程师?先别急着下载PyTorch、clone HuggingFace仓库、背《The Illustrated Transformer》——这些动作本身没错,但如果你只停留在“会装环境”“能跑通demo”的层面…

作者头像 李华
网站建设 2026/10/1 4:21:27

Hermes v0.10.0 Tool Gateway 实战:智能体工具调用的统一网关与MCP接入

Hermes v0.10.0 的 Tool Gateway 发布有一阵子了,我在自己维护的几个智能体项目里跑了跑,又翻了翻社区里的反馈,感觉这版更新确实戳中了不少人的痛点。尤其这两年大家做 agent 越做越深,最后都会撞到同一个问题上:模型…

作者头像 李华
网站建设 2026/10/1 4:20:55

Jev模型24小时撬动13%团队迁移:接入Codex实操与避坑

上周四下午,我们技术群里突然有人甩了一条新闻链接,大意是某个叫 Jev 的新模型上线 24 小时,就有 13% 的付费团队连夜迁移过去。群里瞬间炸了锅,有人问 "Jev 是什么",有人已经开始搜官网申请入口&#xff0c…

作者头像 李华