1. 前言
现有推荐系统主要还是依赖 ID Embedding,这导致在长尾内容和冷启动场景中效果欠佳。随着近年来 LLM 的突破性进展,利用 LLM 强大的内容理解能力辅助推荐被认为是缓解该问题的一个有效途径。

现阶段很多文献都是基于'Rec-to-LLM'的思路来实现的,这种方法通常将推荐域(目标域)的 User-Item 交互数据转换成 LLM 开放世界(源域)的文本格式,并设计特定任务的提示,将推荐数据转换为会话格式,以兼容 LLM 的处理模式。但是,这种方法存在比较多的缺点:
计算效率太低: 推荐场景下用户的行为序列是非常长的,LLM 在处理这么长的用户行为序列非常低效,无法满足业务落地应用的性能要求。
灾难性遗忘: 推荐系统是 User-Item 的协同数据主导的,而 LLM 学习的是开放世界知识,这两类知识信息存在非常大的差异,这样基于用户行为数据去微调 LLM 常会导致灾难性遗忘开放世界知识。
性能下降: LLM 的预训练目标是下一词元预测,而推荐系统依赖 User-Item 的协同,这种训练目标上的不一致性,使得 LLM 不能很好的适应推荐任务。
为了克服这些问题,作者提出了基于'LLM-to-Rec'的思路的 LEARN 方法(Llm-driven knowlEdge Adaptive RecommeNdation)。这种方法使用 LLM 做特征抽取,让抽取出来的信息去适应推荐系统本身的训练目标,更好的兼容推荐系统并满足实际业务落地的性能要求。
2. 方法
作者所提 LEARN 方法的整体框架如下图所示,它是一个双塔结构的模型。

可以看到,这里会将用户历史行为序列将时间排序后再截断成两部分,前面部分称为历史交互序列,作为用户塔的输入,后面部分作者把它称为 target 交互序列,会作为 Item 塔的输入。
2.1 User 塔
用户塔由两个模块组成,分别是内容抽取模块和偏好对齐模块,如下图所示:

2.1.1 内容抽取模块 (简称 CEX)
对于用户行为序列中的每个 Item,先按下图的提示组织其文本描述 (包括标题、类别、品牌、价格、关键词和属性):

然后,将这些 Item 描述输入到参数冻结的预训练 LLM(论文使用了 Baichuan2-7B) 中,然后再将最后一层的隐含向量做 AvgPooling 后得到该 Item 最后的内容表征。
2.1.2 偏好对齐模块 (简称 PAL)
使用前面处理的用户历史行为内容表征序列为输入,先通过内容映射层做维度变换,再将它们输入到类似因果注意力机制的 Transformer 编码器中,最后使用线性映射降维 (至 64 维) 得到 User Embed。
2.2 Item 塔
Item 塔以为输入,同样也是先过前面的内容抽取模块 (CEX),只是后面这里有 3 个变种:

变体 1: 采用与 User 塔相同的架构和权重,都使用了因果注意力机制,只是这里不是处理用户历史交互序列,而是 Target 交互序列
变体 2: 同样也是采用与 User 塔相同的架构和权重,只是把因果注意力机制替换成只关注自己的内容本身的自注意力机制
变体 3: 使用内容 Embed 作为 Item Embed,直接跳过对齐模块
这样,变体 1 相当于让 User 塔与 Item 塔去做 sequence-to-sequence 的对齐,变体 2 相当于让 User 塔与 Item 塔去做 sequence-to-item 的对齐,而变体 3 相当于要让可学习的 User 塔去匹配冻结 LLM 输出的 Item 塔,属于 Rec-to-LLM 的模式。
在训练时,变体 1 会将整个用户 Target 交互序列作为输入,而变体 2 和变体 3 则是独立处理 Target 交互序列的每个 Item。而在推理时,这 3 个变体都只输入单个 Item 去生成 Item Embedding。
后面的实验效果上,变体 1>变体 2>变体 3。变体 3 最差挺好理解的,毕竟是 Rec-to-LLM 的范式,而变体 1 比变体 2 好,作者的解释是"We believe that LEARN with ItemTower(a), which uses sequence-to-sequence alignment, allows the model to better capture long-term user interests compared to the sequence-to-item alignment used in ItemTower(b)"。笔者认为变体 1 和变体 2 在现有数据集方式下的比较本身就不公平。作者的数据集是直接拆分出了前后两个 seq,那变体 1 使用了因果注意力机制自然是能更好的适配这种 seq-2-seq 的数据,而变体 2 更接近 next item prediction 的模式,本身就不是很兼容,如果把数据集处理成能兼容 next item prediciton 的方式,变体 2 的效果不一定会比变体 1 差,只能说是,在作者设定的训练数据集的处理方式下,变体 1 会比变体 2 更适配训练数据。而之所以使用拆分成前后两个序列,主要是因为下面作者的训练 Loss(Pinterest 提出的 dense all action loss) 是用了从前后两个序列采样去做对比学习的训练方式。
2.3 训练目标
在 Loss 上,作者使用 PinnerFormer 的 dense all action loss。具体的,作者会从同一用户的历史交互序列中采样了若干 Item(默认为 10),再从该用户的 Target 交互序列中采样了若干 Item(默认为 10),总共构造出若干正样本 pair,再与同一批次中其他用户的 Target Item Embedding 构造出数量为共的负样本 pair。这里的采样策略下面会介绍。
再使用对比学习计算对应的 Loss:
2.4 采样策略
在短视频场景下,用户交互序列是非常长的,作者做了前面两阶段采样:
Stage1: 从完整的用户历史/目标交互中执行随机抽样,作为用户塔的输入,确保用于建模用户兴趣的数据是无偏的。
Stage2: 在构造正负样本 pairs 时,使用样本加权采样方式以提高近期交互 Item 的采样概率,因为这更能反应用户的当前兴趣并且与用户偏好的 Target Item 更相关。这里第 i 个 Item 的采样概率设为:p_i = 1 / sum(e^(-lambda * d(i,j)))。其中,N,超参 alpha 和 beta 分别设置为 10 和 10000,而是从 Stage1 采样后的序列长度。
2.5 如何在精排中使用
前面的双塔框架是用于召回,作者还将这些 User Embed 和 Item Embed 用于精排模型做特征增强化,不过这里不是直接拿它去使用,而是在前置环节做了适配,用了 CVR 任务来辅助学习这里的融合机制,具体见下图:

这里有意思的地方是,为什么是 CVR 任务,而不是 CTR 任务呢。这里笔者的理解是,由于这里的输入主要是商品详情页的内容信息,这些内容信息与转化肯定是更相关,但是如果是图片这种容易骗点击的模态信息的话,那监督信号就应该用 CTR 了,个人理解,有不同看法欢迎评论区留言。
3. 实验部分
相比于 5 月份在 arxiv 第 1 次提的版本,这次 AAAI 的版本在实验对比上更详实了,但没再和 HSTU 做对比了,有些耐人寻味。
3.1 整体效果
与各 baseline 模型的对比

NDCG 指标

LLM embedding 对比 ID embedding 以及 bert 生成的 Embedding

PAL 模块不同规模参数的 LLM 的表现

3.2 消融实验
是否有偏好对齐模块,以及是否加 Item tower 的消融实验。

不同对齐策略以及采样策略的消融实验

3.3 在线 AB 实验
精排模型的 AUC 指标

拆分冷启和长尾的提升

整体 CVR 和收入提升

