(WSDM 2024)Unified Pretraining for Recommendation via Task Hypergraphs

Unified Pretraining for Recommendation via Task Hypergraphs

(WSDM 2024)

采用数据集:

在这里插入图片描述

源码:https://github.com/mdyfrank/UPRTH

一、提出问题

​ 由于ID的不同,在一个数据集中的用户-物品交互记录的预训练结果(pretrain)很难转移到另外的数据集上,在另一方面,通过在一个数据集上的预训练和微调(finetune)很容易导致过平滑。在以往的推荐系统中,自然语言模型是一种预训练方式,不过这种方式带有偏见,只预测流畅和语法正确的文本从而进行推荐,不仅如此,将数据转化为纯文本也会引入不少的噪声。因此对于预训练框架来说,设计一个统一的学习模式,有效处理不同需求和任务之间的微小差别是非常重要的。

二、解决方案

​ 提出了一个基于任务超图的统一预训练框架(URPTH),为了确保预训练中自监督学习任务的统一性,将所有任务归纳于在任务超图中预测节点是否属于对应超边,不仅如此,还设计一个TA层(Transitional Attention)去动态地学习预训练任务(次要)和推荐任务(主要)的关联程度,从而调节预训练任务带给主推荐任务的影响。

三、具体过程

在这里插入图片描述

1. Embedding Layer

​ Embedding表示为 E ∈ R d × ( ∣ U ∣ + ∣ I ∣ ) E\in R^{d\times (|U|+|I|)} ERd×(U+I),初始embedding表示为 E t r e c u E^u_{t_{rec}} Etrecu E t r e c i E^i_{t_{rec}} Etreci,通过预训练阶段,先验知识(embedding)可以被下游推荐任务所利用。

2. 任务超图构建

​ 对于每一个预训练任务,设计一个任务超图,将所有任务分为三大类,推荐、关系预测和节点属性预测。举例说明:对于推荐任务,如果多个用户共同购买一个物品,那么这些用户被一条超边所连接;对于关系预测,以物品节点来说,让一种同质关系本身作为一条超边,如果物品之间有某种同质关系,那么这些物品被一条超边所连接;对于属性预测,在一个分类任务中,属于一个类别的节点被一条超边所连接。

3. TA层

​ 为了用各种各样的预训练任务来改善主推荐任务的效果,动态学习它们之间的关联度是非常重要的,因此设计一个TA层确保模型分配了合适的注意力给每一个任务,从而有效的使先验知识从预训练阶段转换到主推荐任务,接下来详细介绍通过预训练用户embedding从物品相关辅助任务中将知识转移到推荐任务的过程:

3.1 超边初始化

​ 对于一个以物品节点构建的超边(超边上的点代表购买该物品的用户),通过聚合用户embedding来初始化超边的embedding:
e t r e c ϵ = 1 ∣ N ϵ ∣ ∑ u ∗ ∈ N ϵ e t r e c u ∗ e^{\epsilon}_{t_{rec}}=\frac{1}{|N_{\epsilon}|}\sum_{u^*\in N_{\epsilon}}e^{u^*}_{t_{rec}} etrecϵ=Nϵ1uNϵetrecu
​ 其中, e t r e c ϵ e^{\epsilon}_{t_{rec}} etrecϵ表示超边 ϵ \epsilon ϵ的暂时表示, N ϵ N_{\epsilon} Nϵ表示与超边相连接的节点集合, e t r e c u ∗ e^{u^*}_{t_{rec}} etrecu表示经过 l l l层TA层的用户embedding输入。

3.2 特定任务的特征变换(含注意力)

​ 首先计算出用户偏好与每一个特定任务的注意力,然后生成融合通过该任务预训练的先验知识形成的超边embedding。

​ 注意力计算:
a t ϵ = σ ( ∑ t ∈ T α t i ⋅ e t i ) a_t^{\epsilon}=\sigma(\sum_{t\in T}\alpha_t^i\cdot e_t^i) atϵ=σ(tTαtieti)

α t i = e x p ( e t r e c ϵ ⋅ e t i / d ) ∑ t ∗ ∈ T e x p ( e t r e c ϵ ⋅ e t ∗ i / d ) \alpha_t^i=\frac{exp(e^{\epsilon}_{t_{rec}}\cdot e^i_t/\sqrt{d})}{\sum_{t^*\in T}exp(e^{\epsilon}_{t_{rec}}\cdot e^i_{t^*}/\sqrt{d})} αti=tTexp(etrecϵeti/d )exp(etrecϵeti/d )

​ 其中, a t ϵ a_t^{\epsilon} atϵ表示物品节点 i i i通过所有与之有关的预训练任务生成的基于预训练任务的embedding, α t i \alpha_t^i αti表示节点 i i i在任务 t t t中得到的注意力系数, e t i e_t^i eti表示经过特定预训练任务 t t t得到的节点 i i i的embedding, σ \sigma σ是一个激活函数。

​ 得到最终的超边embedding表示为:
q t ϵ = e t r e c ϵ + γ a t ϵ q^{\epsilon}_t=e^{\epsilon}_{t_{rec}}+\gamma a_t^{\epsilon} qtϵ=etrecϵ+γatϵ
γ \gamma γ是一个超参数,控制预训练任务的影响。

3.3 节点更新

​ 由于超边更新,对应的用户节点也要被更新:
e t r e c ′ u = 1 ∣ N u ∣ ∑ ϵ ∈ N u q t ϵ e_{t_{rec}}^{\prime u}=\frac{1}{|N_u|}\sum_{\epsilon\in N_u}q^{\epsilon}_t etrecu=Nu1ϵNuqtϵ
N u N_u Nu为与该用户连接的超边集合。

4. 预测与优化

​ 预测采用内积:
y t r e c ( u , i ) = e t r e c u ⋅ e t r e c i y_{t_{rec}}^{(u,i)}=e_{t_{rec}}^u\cdot e_{t_{rec}}^i ytrec(u,i)=etrecuetreci
​ 采用alignment损失优化:
L r e c = ∑ ( u , i ) ∈ D r ∣ ∣ e t r e c u − e t r e c i ∣ ∣ 2 L_{rec}=\sum_{(u,i)\in D_r}||e_{t_{rec}}^u-e_{t_{rec}}^i||^2 Lrec=(u,i)Dr∣∣etrecuetreci2
D r D_r Dr表示用户-物品交互。

​ 对于基于超图构建的关系和属性预测,采用内积计算节点与超图的预测评分:
y t ( v , ϵ ) = e ( v , t ) ⋅ e t ϵ y_t^{(v,\epsilon)}=e_{(v,t)}\cdot e_t^{\epsilon} yt(v,ϵ)=e(v,t)etϵ
​ 然后采用BPR损失优化:
L t = ∑ ( v , ϵ , ϵ ′ ) ∈ D a − l o g σ ( y ^ t ( v , ϵ ) − y ^ t ( v , ϵ ′ ) ) L_t=\sum_{(v,\epsilon,\epsilon ^\prime)\in D_a}-{\rm{log}}\sigma(\hat{y}_t^{(v,\epsilon)}-\hat{y}_t^{(v,\epsilon^\prime)}) Lt=(v,ϵ,ϵ)Dalogσ(y^t(v,ϵ)y^t(v,ϵ))
​ 最后的总的损失定义为:
L = β ⋅ L r e c + ( 1 − β ) ⋅ ∑ t ∈ T L t + λ θ ∣ ∣ θ ∣ ∣ 2 2 L=\beta\cdot L_{rec}+(1-\beta)\cdot\sum_{t\in T}L_t+\lambda_{\theta}||\theta||_2^2 L=βLrec+(1β)tTLt+λθ∣∣θ22

四、实验结果

​ 以其他的一些预训练框架(GCC、SGL-PreRec和AttriMask)对比。

在这里插入图片描述

​ 以主流的推荐模型用和不用UPRTH框架作对比:

在这里插入图片描述

​ 结果均表示本论文提出的预训练框架UPRTH是有效的。

五、pretrain task和downstream task

1. pretrain task

​ 预训练表现在模型参数上,使得模型训练不需要再从0或者随机初始化开始训练,首先从大量的低成本数据中学习到其中的共性,再把其中的共性移植到特定的任务中,再使用相关领域的少量标注数据进行微调,可以大大提高训练效率(拿别人训练好的模型用)。

2. downstream task

​ 即真正想解决的任务,通过一些公开的数据集进行预训练之后,通过微调,模型才可以用于下游任务。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值