Advertisement

论文阅读《Towards Universal Sequence Representation Learning for Recommender Systems》

阅读量:

目录

      • 论文阅读《Towards Universal Sequence Representation Learning for Recommender Systems》
        • 摘要
    • 问题形式化

    • 方法论

      • 通用物品表示学习
      • 通用序列表示学习
      • 参数高效微调
    • 实验结果

    • 总结

论文阅读《Towards Universal Sequence Representation Learning for Recommender Systems》

这是一篇由中国人民大学和阿里合作,发表在KDD 2022的文章。作者侯宇蓬是加州福利亚大学·圣迭戈的博士,本科和研究生就读于中国人民大学。他的主要研究方向主要是围绕着大语言模型和推荐系统展开。他的导师Wayne Xin Zhao,赵鑫是中国人大 AI box实验室的负责人。

摘要

以往的序列推荐都是通过显示的item id来进行序列表征学习,以此来进行用户偏好的捕获。虽然这样的方法已经取得了相当优秀的表现, 但是由于显示建模item id的限制,这些方法很难转移到新的场景中去。此外,已有的序列表征学习方法往往很难处理交互很少的冷启动物品。为了解决这样的问题,作者提出了UniSRec。该方法利用item的相关描述文本来学习跨不同推荐场景的可转移item表示。

  • 为了学习通用的item表示,设计了一个基于参数化白化(parametric whitening)和专家混合增强适配器(mixture-of-experts enchanced adopter)的轻量级项目编码体系结构。
  • 为了学习通用sequence表示,通过采样多域负样本来引入两个对比预训练任务。
问题形式化

一个用户的历史行为序列:s = \{i_1,i_2,\cdots,i_n\},并且历史行为序列中的每个物品关联唯一的物品id,且都有对应的描述文本:t_i = \{w_1,w_2,\cdots,w_c\}w_j是共享词汇表中的单词,c表示描述文本的截断长度。

在这里,每个序列包含了用户在某个特定领域的所有交互行为,用户可以在不同的领域或平台上生成多个行为序列。由于不同领域之间存在很大的语义差距,我们不能简单地混合用户的行为数据。相反,我们将用户的多个交互序列视为不同的序列,而不显式地维护每个序列的用户id。注意,与其他基于预训练的推荐方法不同,在我们的方法中,item id只是辅助信息,我们主要利用项目文本来派生可推广的id表示。除非指定,否则项目id不会用作我们方法的输入。任务的输入就是用户的历史序列和物品的描述文本信息,输出的是通用的物品表示和通用序列表示,并以此来进行推荐任务预测。

具体的来说:

  1. 首先根据物品id输入对应的描述文本信息t_i = \{w_1,w_2,\cdots,w_c\}至大语言模型,经过处理得到通用的物品表示。
  2. 根据用户序列s = \{i_1,i_2,\cdots,i_n\},输入对应的物品表示至对比学习任务中,输出通用的序列表示,并以此进行推荐任务。
方法论

UniSRec框架图如下:
在这里插入图片描述

通用物品表示学习

基于预训练语言模型的文本项目编码
作者利用Bert模型利用项目的文本描述信息来学习通用的文本表示来表示项目,参考代码实际是用的hugging face中的bert-base-uncased这个模型。具体地,如下:$$
x_i = BERT([[CLS];w_1,\cdots,w_c])\tag{1}

其中$x_i$是第一个输入的token([CLS])的最终隐藏向量,“[;]”符号表示连接操作。 2. 基于参数白化的语义转换 作者认为直接从PLM中获得的语义表示并不能直接应用于推荐任务。已有的研究发现BERT在一般文本中诱导出非光滑的各向异性语义空间,当将多个领域的项目文本描述信息混合在一起,并且各领域之间语义差距很大时,这种情况会变得更加严重。 受基于白化方法的研究的启发,作者对原始BERT表示进行了简单的线性变换,以获得各向同性的语义表示。具体地、如下:

\tilde{x_i} = (x_i - b) \cdot \mathbf{W}_1\tag{2}

作者在白化变换中加入了可学习的参数$\mathbf{W}_1$和$b$,以提高在未知领域的泛化能力。 作者在这提出,出于效率考虑,没有引入复杂的非线性架构。 3. 基于MoE-enhanced适配器的域融合与自适应 经过白化变换,目前可以学习到各向同性的语义表示。而因为不同领域之间通常存在着很大的语义差距,为了消除不同域之间的语义差距,一种直接的方式是将原始BERT嵌入映射到一些共享的语义空间,可是这样做将导致迁移域偏差的表示能力有限。为此作者给出的方案是,引入多个(G个)白化转化模块作为专家,然后构建基于参数化路由器的MoE(mixture-of-expert)增强适配器融合多个域的表示。具体地,如下:

v_i= \sum_{k=1}^{G}g_k \cdot \tilde{x}_i^{(k)}\tag{3}

g = Softmax(x_i \cdot \mathbf{W}_2 + \delta)\tag{4}

\delta = Norm() \cdot Softplus(x_i \cdot \mathbf{W}_3)\tag{5}

$\tilde{x}_i^{(k)}$是第k个白化模块的输出,$g_k$是门控路由器对应的权重。 在进行权重计算的时候,采用原始的BERT的表示作为输入,是因为原始表示中包含了域特定的语义信息。作者结合可学习的参数矩阵$\mathbf{W}_2$、$\mathbf{W}_3$自适应调整专家权值。同时为了平衡专家负载,利用Norm()产生随机高斯噪声,由参数$\mathbf{W}_2$控制。 作者提到MoE增强适配器的三个优点:1)通过学习多个白化变换来增强单个项目的表示;2)不需要跨领域的直接语义映射,而是利用可学习的门控机制自适应地建立语义相关性,用于领域融合和自适应。3)轻量级适配器在适应新领域时赋予了参数高效微调的灵活性。 ###### 通用序列表示学习 由于不同的领域通常对应不同的用户行为模式,简单地混合来自多个领域的交互序列进行预训练可能效果不佳。而且,这很可能导致跷跷板现象,即从多个特定领域的行为模式中学习可能会发生冲突。作者的解决方案是引入两种对比学习任务,分别是序列-物品对比学习和序列-序列对比学习,这可以进一步增强不同领域在获取项目表征时的融合和适应。 1. 自注意力序列编码 给定一个通用的物品表示序列,作者利用自注意力架构(Transformer),编码输入的物品表示序列

f_j^0 = v_i + p_j \tag{6}

F^{l+1} = FFN(MHAttn(F^l))\tag{7}

其中$p_j$表示第j位置的绝对位置向量。$F^l=[f_0^l;\cdots;f_n^l]$是第l层中序列的n个物品表示的拼接表示。最终得到序列的表示为$F^{l+1}$ ![在这里插入图片描述](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/juEaRxGnck3ht0VZdiAs2gW7HT8r.png) 2. 序列-物品对比学习:旨在建模序列上下文和下一个物品的内在相关性。与以往的下一项预测任务不同,对于给定的序列,作者采用跨域项目作为负样本。具体的,同一batch内的item看作负样本,因此负样本中会包含其他域的物品,即跨域负样本。这种方法可以增强语义融合和跨域自适应,有助于学习通用序列表示。 给定一个bath B个训练样本,每个训练实例是一对序列上下文和正的下一个项目即$\{,\cdots,\}$,序列-物品对比损失函数如下:

\ell_{S-I} = -\sum_{j=1}^{B}log\frac{exp(s_j \cdot v_j/\tau)}{\sum_{j'=1}^{B}exp(s_j \cdot v_{j'}/\tau)}\tag{8}

$\tau$是温度参数。由于批是随机构建的,批内负实例$\{v_{j'}\}$将包含来自多个域的混合项。 3. 序列-序列对比学习:通过对多域交互序列进行对比学习,旨在区分增强序列和多域序列的表示。考虑了两种增强策略:1)Item drop:在原序列中随机drop固定比例的item。2)Word drop:随机drop掉item描述文本中的单词。给定一个目标序列$s_j$,进行了增强策略之后的序列$\tilde{s}_j$被认为是正样本,而同一批中其他的序列被认为是负样本$s_{j'}$。序列-序列对比损失函数如下:

\ell_{S-S} = -\sum_{j=1}^{B}log\frac{exp(s_j \cdot \tilde{s}j/\tau)}{\sum{j'=1}^{B}exp(s_j \cdot s_{j'}/\tau)}\tag{9}

由于批是随机构建的,批中的负实例自然包含来自多个域的序列。 4. 多任务学习:在预训练阶段,作者使用多任务学习策略联合优化两个对比损失函数:

\mathcal{L}{PT} = \ell{S-I} + \lambda \cdot \ell_{S-S}\tag{10}

###### 参数高效微调 为了适应新的领域,以前基于预训练的推荐方法通常需要对整个网络架构进行微调,这既耗时又不灵活。由于本模型可以学习交互序列的通用表示,作者的想法是固定主要架构的参数,同时只微调来自MoE增强适配器的一小部分参数,以纳入必要的适应。具体地说,考虑两种微调设置,基于目标域中的项目id是否可以访问,要么是归纳式(Inductive)的,要么是直推式(Transductive)的。 1. Inductive setting:考虑推荐来自全新未见域的新物品,无法获知物品ID。给定目标域的训练序列,首先将序列上下文$(i_1 \to i_t)$和候选物品$i_{t1}$编码到通用表征$s$和$v_{t+1}$,下一个物品的预测概率定义为:

P_{I}(i_{t+1}|s) = Softmax(s \cdot v_{i_{t+1}})\tag{11}
这个过程中需要调优的参数是eq(2)中的b和$\mathbf{W}_r$ 2. Transductive setting:针对近乎所有商品都在训练集出现的场景。此时在学习通用文本表示的基础上,同时学习商品 ID 表示。并简单将通用文本表示和 ID 表示加和并进行预测。具体地,利用ID表示$e_{i_{t+1}}$和文本表示$v_{i_{t+1}}$,下一个物品的预测概率为:
P_T(i_{t+1}|s) = Softmax(\tilde{s} \cdot (v_{i_{t+1}} +e_{i_{t+1}}))\tag{12}

对于每种设置,作者通过使交叉熵损失函数达到最优的效果来微调MoE增强适配器的参数。经过微调之后,通过Eqn(11)、Eqn(12)来预测下一个物品的概率分布。 ##### 实验结果 ![在这里插入图片描述](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/xWQuXvqLTPDy5FhNUsRKAioOl3dk.png) ##### 总结 该篇文章发表在KDD会议上,对于如何使用大语言模型来进行推荐提出了一个很好的框架,想法很好,利用PLM强大的语义提取能力,根据物品的描述文本来学习生成对应的物品表示。同时针对跨域的实际场景,提出了消除各个域之间gap的方法,再通过对比学习进行进一步的特征融合,整体的设计很棒。只不过论文中关于参数微调一块描述的不是特别详细,并没有详细指出直推式的预测下一项物品概率的时候的微调参数是哪些。

全部评论 (0)

还没有任何评论哟~