CIKM'21 CBML | 基于聚类的元学习序列推荐方法

2022-09-19 11:25:30 浏览数 (1)

title:CBML: A Cluster-based Meta-learning Model for Session-based Recommendation link:https://dl.acm.org/doi/pdf/10.1145/3459637.3482239 from:CIKM 2021

公式太长可以左右滑动

1. 导读

本文这主要是用于会话推荐的推荐方法,该方法主要针对冷启动方面,提出了对应的解决方式。主要包含两个方面,分别是基于自注意力转换模式学习和基于聚类的元学习

自注意力部分还是集中在挖掘序列之间的关系的部分,缓解冷启动问题还是在元学习部分。考虑聚类,加入冷启动的商品被划分到了某一个聚类当中,那么我们就可以采用这个聚类中的信息来促进冷启动商品的预测,主要是这样的思想,具体见4.3。

2. 问题定义

去重后的商品集合为

V={v_1,...,v_{|V|}}

,匿名会话集合为

U={u_1,...,u_{|U|}}

,每个会话里包含了一组点击序列

u_i={x_1,...,x_m}

,按时间排序,其中

x_t in V

表示t时间点击的商品。会话推荐就是基于序列

u_i

预测

x_{m 1}

可能的商品,从所有商品中,选出预测概率top-n的。

3. 元学习设置

把会话看成一个任务。将会话集合划分为训练集

T^{train}

和测试集

T^{test}

,对于每个序列

u_i={x_1,...,x_m} in T^{train} cup T^{test}

,生成m-2个子序列如下,这些作为支持集

D^{train}_u

,原序列作为查询集

D_u^{test}
({x_1},x_2),({x_1,x_2},x_3),...,({x_1,...,x_{m-2}},x_{m-1})

4. 方法

4.1 概览

如图所示为模型的整理流程,首先,IF-SAN集成了一个基于商品的自注意力块和一个基于特征的自注意力块来捕获在商品方面和特征方面的会话的转换模式,以获得用户更细粒度的顺序意图;针对冷启动,利用元学习为模型提供更好的初始参数。

4.2 序列推荐模型

本文所提的IF-SAN包含:商品级和特征级的embedding层,包含参数

theta^e

;商品级自注意力块和特征级自注意力块,参数

theta^s

,预测层,参数

theta^{pre}

4.2.1 embedding层

用户序列

u={x_1,...,x_n}

,n是预先设置好的,如果序列长度小于n,则用0填充。然后look-up层将向量转换为embedding

e_{x_i}

。对于商品的属性,采用同样的方式对得到属性的embedding,

a_i={vec(r_i),vec(b_i),vec(l_i)}

,他们分别表示商品的类型,品牌和卖家的稠密表征。由于不同属性对最终的决策用不同的影响,因此此处作者采用vanilla注意力机制,求其加权和,公式如下,

alpha_i=softmax(W^fa_i b^f)
e_{a_i}=alpha_ia_i

4.2.2基于特征/商品的自注意力层

用自注意力机制挖掘特征-特征/商品-商品的转换模式商品和特征的这两个模块计算方式是一样的,只是输入不一样,这里所说的特征就是商品的属性表征。如图所示为其计算流程,可以发现和transformer的编码层有点类似。具体这里不做过多介绍,看图就一目了然了。为了捕获用户的长期兴趣和短期兴趣,将多层SAN后得到的输出

F_{ua}^l

和最后一个非0的特征表征

e_{a_m}

(商品部分也一样)按比例结合得到最终的表征

S_{ua}^l

,其中w为可学习参数。

S_{ua}^l=w_aF_{ua}^l (1-w_a)e_{a_m}

4.2.3 预测层

将商品和特征得到的最后表征

S_{ux}^l,S_{ua}^l

拼接得到

S_u in mathbf{R}^{2d}

,经过FC与需要判断的商品的embedding

e_{v_i}

做点积计算分数。

hat{y}_{ui}=FC_{theta^{pre}}(S_u)e_{vi}^T

4.3 基于聚类的元学习优化

这部分主要是用元学习和参数

phi

(这里包括后续的g,w等)来缓解冷启动问题,主要包含两部分:任务聚类和聚类感知的参数门。

  • 前者利用软聚类方法在训练会话中生成簇,由于相似的用户具有相似的偏好,表明了密切相关会话之间的泛化,每个会话都可以获得一个聚类增强表示,其中包含会话被归类到的集群的共享特征
  • 后者将全局共享参数的初始化引导到每个聚类,使得初始化可以为属于该集群的所有会话服务。

4.3.1 任务聚类

尽管已经存在针对推荐问题的元学习方法和聚类方法,但没有人将这两种方法的优点结合起来。会话中的冷用户没有足够的记录来获得足够的偏好。而聚类方法可以帮助在相似的会话之间迁移共享知识,而元学习方法可以通过多个会话学习通用知识,这些知识可以快速适应新会话。因此,适合将聚类方法与元学习方法结合来解决冷启动问题。首先,为每个会话分配聚类,对上面拼接得到的

S_u

经过FC得到查询向量

q_u

,公式如下,其中w为可学习参数,

W_q in mathbf{R}^{2d times d}

q_u=W_qS_u b_q

然后,通过下式计算软分配概率

p_u^k

,其中g为每个聚类的中心,K是设置好的超参数,表示聚类数量。

p_{u}^{k}=frac{exp left(leftlangle q_{u}, g_{k}rightrangleright)}{sum_{k=1}^{K} exp left(leftlangle q_{u}, g_{k}rightrangleright)}

最后,会话u的聚类增强表征计算公式如下,其中

cdot

是惩罚。

C_u=sum_{k=1}^K{p_u^kcdot g_k}

4.3.2 聚类感知的参数门

由于不同的会话源自不同的分布(表示不同的偏好或爱好),因此使用单个全局共享参数来推荐所有会话是不合理的。因此作者在采用上述两种表征的同时,设计了一个聚类感知参数门来引导全局共享的初始参数为每个会话提供合适的初始参数以实现更好的性能。参数门计算公式如下,其中

oplus

表示拼接,

FC^{sigma}

表示用sigmoid函数做激活函数的全连接层。

o_u=FC^{sigma}(S_u oplus C_u)

参数变为:

theta^e_u leftarrow theta^e, theta^s_u leftarrow theta^s, theta^{pre}_u leftarrow theta^{pre} cdot o_u

因此最后的预测为下式:

hat{y}_{ui}=FC_{theta^{pre}_{u}}(S_u oplus C_u) cdot e_{v_i}^T

4.3.3 局部更新

在元学习中,我们的目标是通过基于单个会话的支持集最小化推荐的预测损失来更新每个会话的局部参数。在聚类感知参数门中引导会话的全局共享初始参数后,我们可以在局部更新推荐器参数以最小化会话

0 人点赞