文章链接:https://arxiv.org/pdf/2409.12740
机构:字节
发布时间:2024.09
Copyright (c) Wang-Luning. All Rights Reserved.
HLLM(Hierarchical LLM)架构用于增强序列推荐系统,是将LLM引入推荐系统的早期尝试,并没有像HSTU那样针对推荐情境做复杂的模型架构/序列建模方面的改进,主要是为了初步探索预训练LLM在推荐情境中的应用潜力。
具体而言,其包含2个LLM,分为Item LLM和User LLM两部分,前者用于从一个item的文字描述中提取其内容特征并压缩到一个embedding中,后者则利用这些特征基于用户交互历史来预测用户未来的兴趣。
在传统的基于ID的序列建模模型中,embedding参数通常很大,而真正用于计算的模型参数较小,但相对浅层的神经网络难以建模复杂多样的用户兴趣。
而将LLM引入推荐系统后,早期工作通常将用户行为序列以文本的方式输入LLM中,由于通常需要若干文字tokens才能描述一个item,且预测一个item需要decode若干个文字tokens,这就造成序列长度过长,而且每预测一个新item就要forward很多次。另外,将用NLP数据预训练的、具备了世界知识的LLM微调后迁移到推荐系统中,相比于从头拿推荐数据训练的模型是否存在优势?以及scaling law是否在推荐系统中成立?这些问题都还没有定论。
因此,HLLM首先使用一个Item LLM作为特征提取器来将物品文字描述压缩为一个简单的embedding向量,使得每个物品都可以用一个“token”来表示,然后再将用户交互历史中每个物品的token组成的序列输入另一个User LLM中,实现对用户历史的建模并预测下一个物品。其重点在于:1)将(Item)LLM作为一个特征提取器来通过物品的文字描述生成一个简洁的embedding,然后再用于后续的用户历史建模,相比于传统ID-based的方法在训练和推理上效率更高;2)尝试将预训练好的LLM迁移到推荐系统中使用,观察模型的世界知识是否对推荐任务(Item LLM的特征提取和User LLM的序列建模与预测)也有帮助。
对于用户
Item LLM:
作为一个特征提取器,用于从每个物品的文字描述中提取出它的特征。具体而言,其将物品[ITEM]特殊token后输入模型中:[ITEM]位置的输出hidden state [CLS]token的输出通常也被作为包含整个序列信息的压缩表征)
User LLM:
将用户历史序列中的每个物品
HLLM既可以用作生成式推荐也可以用作判别式推荐:
生成式推荐:
训练阶段采用NTP作为目标,也即生成下一个物品的embedding。这种建模形式类似于HSTU中的召回应用。
具体而言,在每个位置使用InfoNCE loss,希望尽可能拉近每个位置预测的embedding和真实embedding之间的相似度,同时拉远预测的embedding和其他负样本embedding(负样本从当前用户历史序列以外的数据集中随机采样):
其中,
判别式推荐:
也即精排模型的输入策略:输入用户历史序列和target item,输出一个判别分数(如CTR)。这种建模形式类似于HSTU中的精排应用。
具体而言,引入target item的时机分为两种:
Early Fusion直接把target item的embedding连接到用户历史序列的后边并一起输入User LLM。这样能够更充分地实现用户历史序列和target item之间的交互,所以效果一般更好。但很难同时应用于多个候选item,每个候选item都要单独和用户历史序列连接后重新输入一遍LLM,效率较低(和RAG中reranker效率低的原因相同)。
Late Fusion先让用户历史序列自己通过User LLM,然后在预测头的位置再引入target item。相当于先得到用户历史序列独立建模的结果,然后再把它复用到各个候选item上做判别,因此相对来说效率更高,但效果一般更差。
判别式推荐的目标就是一个分类任务,例如对于二分类任务可以使用BCELoss:
当然,也可以同时引入NTP Loss作为一个辅助loss,和判别loss一起构成完整的loss:
具体的训练过程分为3步:
stage 1:对Item LLM和User LLM进行联合训练,采用判别损失函数。为了加速训练,用户历史序列长度被截断为150
stage 2:使用上一阶段训好的Item LLM产生所有item的embedding并进行存储,然后继续单独训练User LLM。该步将历史序列长度扩展到了1000
Stage 3:此时HLLM训练完毕,Item LLM和User LLM产生的embedding可以作为增强特征集成到现有的DLRM(召回/排序)中,和其他现有特征融合后即可进一步用于线上DLRM的流式训练中。(从这个视角看,HLLM本质上是用LLM做了一个强大的特征提取器,实践中通常是把它产生的特征集成到现有DLRM中,而不是直接用HLLM做预测)
实验结论中,基于预训练LLM做微调的效果优于从头开始训练。模型规模有1B和7B两种(7B是把Baichuan2-7B分别用做User和Item LLM)。