文章链接:https://arxiv.org/pdf/2503.02453
机构:百度
发布时间:2025.03
参考文献:
Copyright (c) Wang-Luning. All Rights Reserved.
TIGER等通过预测下一个物品的ID(SID)的生成式召回方法相比于稠密检索方法的计算效率更高,但其将量化生成SID的过程和序列建模过程进行了分离,导致信息丢失,难以建模精细的相似性关系。
因此,COBRA(Cascaded Organized Bi-Represented generAtive retrieval)希望结合生成式方法和稠密检索方法的优势,通过一个级联的过程来结合稀疏SID和稠密向量的优势。其交替地依次生成下一个物品的SID和稠密向量表征,分别用来捕捉粗粒度的语义信息和细粒度的细节信息。先生成的SID作为粗粒度类别语义信息可以作为条件来辅助该物品稠密向量的生成,降低了稠密表征的学习难度,并促进了两种表征协同学习。在推理时结合Beam Search的思路来高效地生成一组多个候选ID,然后再通过BeamFusion分数得到兼顾准确性和多样性的召回集。
物品表征的构建:
稀疏SID的构建:COBRA将物品的属性转化成一段文字描述,压缩成一个稠密向量后通过RQ-VAE来生成它的稀疏SID表示。稀疏SID可以捕捉物品的粗粒度类别信息,为接下来的细粒度处理提供基础。这里简洁起见假设每个SID里只有1个code,而实际上也可以扩展成多个code。
稠密向量表征的构建:仍然将物品的属性(如类别文字、标题文字、品牌文字等)转化为一段文字描述,加上一个[CLS] token,进一步添加位置编码和类别编码(标识各个文字token描述的是哪个属性的信息),然后送入一个基于Transformer的Text Encoder,并拿[CLS]位置的输出向量作为该物品的稠密表征
最终,将每个物品
序列建模与训练:
用户历史交互序列由各个历史交互物品的ID和稠密向量交替而成。设第
对于下一个物品的概率建模被分解为了两步。首先基于历史交互序列
模型是一个Transformer Decoder,在生成下一个物品的ID时,将最后一层输出作为logits通过softmax后即可得到预测的ID,生成下一个物品的稠密向量表征时则直接拿最后一层输出作为其稠密向量表征
用公式表示这一过程,设历史序列
训练时,端到端的训练过程可以联合优化稀疏ID和稠密表征的预测。其中,稀疏ID的预测loss就是一个多分类loss,希望最大化每个位置的ground truth的ID的预测概率:
其中
稠密表征的loss是希望预测生成的稠密向量能够尽可能接近下一个物品的真实向量,同时尽可能远离和其他负样本的向量的距离:
生成每个物品的ground truth稠密向量表征的Encoder在该训练过程中也是可训练的,可以不断地迭代来为物品生成更好的表征。
总的loss为稀疏和稠密两部分之和:
推理过程:
在推理中也使用了由粗到精到生成思路,首先生成稀疏的IDs,然后再进一步通过生成稠密向量来修正。具体而言,首先生成一组候选ID和一组对应的稠密向量:
稀疏ID的生成:
给定用户历史序列
每个生成的ID都有一个beam score
稠密向量的生成:
对于每个ID,将它们分别接到历史序列后,再分别输入模型得到各自预测的稠密向量:
然后,使用BeamFusion策略来生成召回物品集。对于预测得到的每个候选ID
其中
然后,针对每个ID召回候选集中的每个物品
其中
最后,每个候选物品都得到自己的BeamFusion分数后,再在全局选出Top-K个分数最高的,作为最终召回物品集