CIKM'22 | EC4SRec:可解释引导的对比学习用于序列推荐
关注我们,一起学习~
标题:Explanation Guided Contrastive Learning for Sequential Recommendation 地址:https://arxiv.org/pdf/2209.01347.pdf 代码:https://github.com/demoleiwang/EC4SRec 会议:CIKM 2022 公司:Salesforce
1. 导读
对比学习被广泛的应用于序列推荐,以解决交互数据稀疏的问题,但现有的基于对比学习的方法无法确保通过对给定锚用户序列的一些随机增强(或序列采样)获得的正(或负)序列在语义上保持相似(或不同)。当正负序列分别为假阳性和假阴性时,可能会导致推荐性能下降。本文通过提出解释引导增强(EGA)和解释引导对比学习序列推荐(EC4SRec)模型框架来解决上述问题。EGA 的关键思想是利用解释方法来确定商品在用户序列中的重要性,并相应地推导出正负序列。然后,EC4SRec 在 EGA 操作生成的正负序列上结合自监督和监督对比学习,以改进序列表征学习以获得更准确的推荐结果。
2. 基础
2.1 问题定义
令U,V分别为用户和商品集合。用户序列表示为
。序列推荐的目标是通过已知的交互序列预测用户下一时刻可能交互的商品
2.2 序列推荐中的对比学习
主要介绍对比学习中的基础的数据增强方法,论文中还介绍了推荐学习推荐系统的具体例子DuoRec,CL4Rec,可以前往论文阅读。数据增强方法如下,
随机裁剪,即随机从原交互序列中删除一部分连续的交互序列。
随机掩码(mask),对交互序列,随机掩码一定比例的交互商品,利用一个掩码商品[m]代替那些需要掩码的商品。
随机重排,从序列中随机选取一个连续子序列,然后随机打乱它,再放回去。
随机检索,从与当前序列有相同目标商品的序列集合中随机选一个。
3. 方法
3.1 框架
如图 2 所示为所提框架,序列编码器用于将给定用户的历史商品序列表示为向量表征
,然后进行匹配预测下一个交互的商品。
与现有的序列推荐对比学习方法不同,EC4SRec 在一定轮次利用解释方法来确定用户序列,其中下一个商品由序列编码器和预测器返回。解释引导增强将利用商品重要性分数来生成用户序列的正视图和负视图,以进一步训练序列编码器和商品预测器。图 2 右侧显示了不同的损失函数和推荐损失函数,用于在不同的解释引导对比学习方法下训练模型。
更新商品重要性分数的解释方法的方案,也称为update schedule,由超参数 p 控制。对于总共有 N 轮次的模型训练,将更新安排在轮次
。例如,对于p = 3 和 N = 100,更新将安排在第 25、50 和 75 轮次。第一次更新之前的轮次(即例子中的25步之前),EC4SRec 可以采用任何好的序列推荐模型来训练初始序列编码器和项目预测器。
3.2 解释引导的重要性分数
为了获得序列中每个商品的解释引导的重要性分数,将用户序列,序列编码器SeqRec,以及对下一个商品的预测概率输入到模型无关的解释方法Expl(),Expl()计算得出重要性分数,表示为下式,
虽然任何解释方法(例如,显着性、遮挡和积分梯度)都可以用作Expl(),但这里使用显着性(Saliency)来说明每个商品的重要性得分是如何得出的。假设有一个商品embedding矩阵
。商品
的embedding向量
可以从 E 得到。
的维度 j 的重要性分数可以定义为:
对d维内的分数求和再做一下标准化就可以得到下式,
3.3 解释引导的数据增强
本节提出了五种解释引导的增强操作,三种用于生成正视图,两种用于生成负驶入。
正视图和负视图的解释引导裁剪(ecrop+,ecrop-),为了在
上执行ecrop+(或ecrop−),选择重要性得分最低(或最高)的k(或
)商品被删除以生成正(或负)视图。
**解释引导的掩码得到正负视图(emask+, emask-)**,为了对
执行emask+,选择重要性分数最低的k个商品进行屏蔽。
**解释引导的重排得到正视图(erord+)**,对序列中得分最低的k个商品重新排序,再插入到原序列中。
**解释引导的检索得到正视图(ertrl+)**,类似于前面的随机检索,先用随机检索选出一个序列,然后利用每个序列的重要性分数计算每个序列的概率,公式如下,
然后,使用概率分布对来自序列集合的解释引导检索序列进行采样。
3.4 解释引导的对比学习
3.4.1 解释引导的自监督学习
该模型可以看作是 CL4SRec 的扩展,其解释引导的增强操作为对比学习生成了正视图和负视图。损失函数由三个部分组成:(i)推荐损失,(ii)解释引导的正视图的对比损失,以及(iii)解释引导的负视图的对比损失:
和
。为了计算
,从A+中采样得到
和
(
)然后应用于
,得到两个正视图
和
。重复这一操作应用于其他所有用户和序列生成正视图,用户u的正视图集合表示为
。为了让
和
的表征彼此相近,和其他用户的表征疏远,损失函数定义为下式,
同理可以得到
,对于用户的负视图,希望其与其他用户的负视图相近,和所有用户的正视图疏远,
表示对所有用户重复上述操作后的负视图集。损失函数如下,h为序列表征
3.4.2 解释引导的监督对比学习
该模型扩展了 DuoRec 以使用解释引导增强。损失函数为下式,
是通过ertrl+增强的序列的表征。
3.4.3 结合
将上面两部分结合可得到最终的损失函数
4. 结果
相关文章
- Vue3 最长递增子序列详解
- 时间序列模型(ARIMA和ARMA)完整步骤详述「建议收藏」
- 5个时间序列预测的深度学习模型对比总结:从模拟统计模型到可以预训练的无监督模型(附代码)
- 从Transformer到扩散模型,一文了解基于序列建模的强化学习方法
- 时间序列预测——双向LSTM(Bi-LSTM)「建议收藏」
- CIKM'21序列推荐|基于区域的embedding捕获用户行为中的偏好
- CIKM'21序列推荐:时间切片+图神经网络学习用户和item的动态表征
- 2022-10-01:给定一个字符串 s,计算 s 的 不同非空子序列 的个数因为结果可能很大,所以返回答案需要对 10^9 +
- Genome Biology | iDNA-ABF: 基于多尺度深度学习的生物序列与功能语义模型实现DNA甲基化可解释性预测
- [Nature Biotechnology | 论文简读] 使用语言模型和深度学习进行单序列蛋白质结构预测
- 时间序列分析中的自相关
- CIKM'22 | 序列推荐中的多层次对比学习框架
- AAAI 2023 Oral | 对自然条件下的点云序列中手物交互的位姿追踪与重建
- Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析|附代码数据
- 速度超快!字节跳动开源序列推理引擎LightSeq
- 【数字信号处理】基本序列 ( 实指数序列 | 收敛序列 | 发散序列 )
- 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 单位脉冲序列 δ(n) 傅里叶变换 )
- 如何使用Oracle建立序列(oracle怎么建序列)
- 掌握Oracle中使用序列方法的窍门(oracle使用序列方法)
- 如何把时间序列问题转化为监督学习问题?通俗易懂的 Python 教程
- Python序列之list和tuple常用方法以及注意事项