记得给 “应用机器学习” 添加星标,收取最新干货
作者:香港城市大学, 哈尔滨工程大学 张持
今天跟大家分享一篇来自于哈尔滨工程大学、香港城市大学、山东大学提出的序列推荐文章,已被ICDE 2024会议录用。该文章从一种全新的角度,即如何缓解由于单一序列信息有限所导致的过降噪和欠降噪问题(OUPs),研究序列推荐中的序列去噪问题。具体地,该文设计了一种全新的SSDRec框架,在序列去噪之前显式地施行序列增强,缓解OUPs并提升推荐性能。
论文地址:https://arxiv.org/html/2403.04278v1
代码:https://github.com/zc-97/SSDRec
在序列推荐场景中,用户的交互序列可能含有噪声项(如意外交互),这会妨碍模型准确学习用户的真实偏好,并影响推荐性能。虽然现有的序列去噪方法能移除部分噪声项以生成去噪序列,但这种方法在识别噪声时依赖于学习序列信息。在单一的原始序列中(尤其是短期序列),可供学习的信息有限,且缺少用于准确标识噪声项的监督标签。这可能导致显式去噪方法产生不稳定的结果,并引发过去噪和欠去噪问题(over-denoising and under-denoising problems,简称OUPs)。
如上图所示,在ML-100K数据集上,作者通过在原始序列中(过滤掉评分小于3的项目)随机插入不同数量的用户未交互过的项目(5,10,15,20)来模拟噪声,并将这些扰动过的序列输入到不同的序列去噪方法中,以此验证过度去噪和欠去噪问题(OUPs)的存在。他们通过计算插入的噪声项目中有多少被错误地保留,以及原始序列中的项目有多少被错误地删除,来衡量欠去噪率和过去噪率。研究结果显示,两种最新的序列去噪方法(HSD和STEAM)都存在OUPs的问题。
为了缓解过度去噪和欠去噪问题(OUPs),作者提出了一种自增强方法,通过在去噪前显式地插入项目来丰富序列信息。然而,单一序列中的交互相比于整个项目集是有限的,若无额外特征指导,选择合适的项目变得困难。另外,随着问题规模(即序列长度)增大,插入项目的复杂性亦随之增加,因而在序列的每个位置插入项目是不现实的。这就带来了两个独特的技术挑战:(1)选择哪些项目进行插入?以及(2)在目标序列的哪些位置进行插入?
针对上述挑战,作者设计了一种新颖的SSDRec框架,采用三阶段学习范式。具体地:
①第一阶段,设计了一个全局关系编码器,以数据驱动的方式学习用户和项目之间的多方面关系。这些关系作为跨序列的先验知识,指导后续阶段。
②第二阶段,提出了一个自增强模块,包括一个位置选择器和一个项目选择器,选择合适的位置和项目来生成增强序列。此模块旨在优化去噪过程,避免过度复杂化。
③第三阶段,采用了一个分层去噪模块来识别所有潜在的噪声。该模块首先过滤掉第二阶段引入的错误增强项,细化增强序列,然后逐步锁定目标序列中的潜在噪声,提高去噪可靠性。
为展示SSDRec对缓解OUPs以及推荐的影响,作者提供了一个案例研究,如下图所示。在ML-100K数据集上,对于用户ID 164的交互序列,作者展示了其最近六项交互。与HSD方法相比,SSDRec通过在序列中插入项目ID 433和251,避免了将项目ID 552错误地识别为噪声,同时正确地识别出项目ID 5和625为噪声,从而缓解了过去噪和欠去噪的问题。对于用户实际的下一项ID 207,原始序列与增强序列的得分非常接近(-0.96对-0.95),表明增强序列并未显著地改变原始序列语义。而经过SSDRec去噪后的得分显著高于HSD处理后的得分(0.89对0.56),这说明SSDRec生成的序列可以更准确地反映用户的真实偏好。
方法
SSDRec框架的组件
① 多关系图的构建;(第一阶段)
② 嵌入层;
③ 全局关系编码器;
④ 自增强模块;(第二阶段)
⑤ 分层去噪模块;(第三阶段)
⑥ 序列推荐。具体如下图所示:
1 多关系图结构:学习用户与项目的复杂模式、提供先验信息
如下图所示,作者构建了一种包含两类节点,五类关系的多关系图。
用户-项目交互关系(无向):如图3(a)所示,用户交互过某一项目,则图中有一条该用户与项目之间的无向边。边的权重为该用户交互此项目的次数。
项目转换关系 (有向):如图3(b)所示,至少一位用户顺序地交互过和两个项目,则图中有一条由项目指向项目的有向边。边的权重为,其中记录的是两个项目在某一序列中的距离,为的长度。
项目不兼容关系关系 (无向):如图3(c)所示,如果和不为转换关系,且这两个项目有一个非空的公共的转换关系项目集合,其中 ,则图中有一条和之间的无向边。边的权重为。
用户相似关系(无向):如图3(d)所示,如果用户和交互过相同的项目,则图中有一条用户和之间的无向边。边的权重为。
用户不相似关系(无向):如图3(e)所示,如果和不是为相似关系,且这两个用户有一个非空的公共的相似关系用户集合,其中,则图中有一条和之间的无向边。边的权重为。
2 嵌入层:将ID独热编码映射为稠密向量
分别表示项目以及用户的嵌入。
3 全局关系编码器:从多关系图中挖掘复杂模式
该部分由5个编码层所组成,用于独立地从构建的多关系图中学习项目、嵌入的表征:
项目转换关系编码层:通过为入边和出边分配不同的权重,学习有向的项目转换关系表征
其中是步长为1卷积核为的卷积操作,是拼接操作, 是可训练参数.
项目不兼容关系编码层:聚合不兼容关系,学习项目不兼容关系表征
用户-项目交互关系编码层:学习用户-项目交互行为,生成用户表征和项目表征
在该层中,作者使用了基于LightGCN的聚合方式实现用户-项目交互关系的消息传递。
用户相似关系编码层:学习用户相似关系表征
用户不相似关系编码层:学习用户不相似关系表征
关系融合层:融合不同的项目关系、用户关系生成最终的多关系项目表征与用户表征
4 自增强模块:选择目标序列中的位置、选择待插入项目、生成增强序列
作者设计了一个位置选择器和一个项目选择器,用于选择序列中插入项目的位置和待插入的项目。
位置选择器:选择目标序列中插入项目的一个位置
该选择器包括一个序列性判别器和一个相似性判别器,用以确定目标序列中一个需要插入项目的位置
① 序列性判别器:判别目标序列中项目序列性的不一致分数
② 相似性判别器:判别目标序列中项目相似性的不一致分数
根据上述两个判别器得到的不一致分数,生成序列中待插入位置的分布,并通过Gumbel-softmax得到0-1分布硬编码
项目选择器:选择插入序列位置的两个项目
作者向目标序列位置的前后分别插入项目(表征)
生成增强序列:
5 分层去噪模块:过滤不可靠的增强、识别序列中所有潜在噪声、生成去噪序列
为了过滤SSDRec第二阶段(增强序列)可能引入的额外噪声,作者设计了一个分层去噪模块,逐渐地修正增强序列并剔除序列中所有的噪声。
其中是SSDRec第二阶段的位置选择器,用于判别插入的项目是否为噪声,为任一显式序列降噪模型,用于识别并剔除序列中所有的噪声,生成去噪序列。
6 序列推荐:生成序列表征用于推荐下一项
其中为任一深度序列推荐模型,根据最终的去噪序列学习表征并推荐下一项。
实验
作者在实验部分主要回答六个研究问题:
① SSDRec是否适用于主流序列推荐模型;
② SSDRec是否优于最新的序列去噪方法;
③ SSDRec不同阶段对最终推荐性能的贡献;
④ SSDRec的效率;
⑤ SSDRec的可解释性;
⑥ SSDRec对超参数的敏感性;
1 数据集
评估指标:HR@{5,10,20}, NDCG@{5,10,20},MRR@20
2 对比实验
对比方法:
① 序列推荐方法:GRU4Rec,Caser,NARM,STAMP,SASRec,BERT4Rec
② 隐式序列去噪方法:FMLP-Rec
③ 显式序列去噪方法:DSAN, HSD,STEAM
③ 序列去偏方法:DCRec
3 消融实验
4 模型效率实验
5 案例研究
6 超参实验
最后,作者研究了在不同数据集上,用于Gumbel-softmax的温控系数对于性能的影响
(https://www.zhihu.com/people/aml_cityu)