TLDR: 本文针对序列推荐所面临的数据稀疏和噪音的问题,提出了一种基于元优化的对比学习框架用于序列推荐任务MCLRec。该框架通过引入可学习的模型增强模块,一方面缓解了随机数据增强很难泛化的问题,另一方面通过提取更丰富的信息用于对比学习辅助任务缓解了数据稀疏和噪音的问题,同时减少了对batch size参数设置的依赖。实验验证了所提出框架的有效性。
论文:arxiv.org/abs/2304.07763v1 代码:github.com/QinHsiu/MCLRec
首先总结了当前序列推荐研究中所面临的两个主要研究挑战。
a) 序列推荐一直面临数据稀疏和噪音的问题,已有的工作通过引入对比学习来缓解上述问题,但是他们大都依赖于随机的数据增强的方式,需要很多的经验知识,这导致在面临不同的数据集的时候很难做到泛化;
b) 已有基于对比学习的模型因为数据增强的不确定性,导致其需要较大的batch size才能取得较好的效果;
针对上述问题,本文提出利用可学习的模型增强方法来自动学习特征的重要性,首先我们在原有的基于数据增强的模型(CL4SRec)的基础上引入模型增强器,通过联合数据增强和模型增强来抽取更多有用的信息用于对比学习辅助任务;另外因为引入了增强器板块,导致目标优化的策略有所变化(encoder主要是学习更好的item和user表示用于推荐任务,augmenter主要是从视图中抽取信息含量更加丰富的特征用于对比学习),因为有多个目标,直接使用联合训练可能会得到次优的结果[1],因此我们进一步提出使用元优化的思想交替更新两个板块的参数。
本节首先给出问题定义,随后重点介绍本文所提出的算法模型以及优化算法。
问题定义: 序列推荐的目标是根据用户的交互历史,为用户推荐其下一个时刻可能产生交互的物品,例如用户的交互历史为[鞋子、裤子、皮带、帽子、眼镜],下一个时刻用户可能交互的商品为“衣服”。
为了缓解上述问题,我们提出了一种用于序列推荐的对比学习框架,也即MCLRec,整个框架如下图所示:
该框架主要以下包含三个部分:
i. 模型增强器,如下图所示中红色折现中的两个增强器,我们在原有的基于数据增强的对比学习的框架上引入了可学习的模型增强板块,因为多层感知机的简单性和易用性,我们在后续所有实验中所使用的增强器都是使用的MLP来作为我们的模型增强器;
ii. 基于元优化的训练策略,因为引入了模型增强器,我们现在主要有两部分的参数需要更新,首先是用于推荐任务的编码器,还有用于抽取特征的模型增强器,因为这两个部分的优化的目标存在差异(编码器主要是为了学习更好的物品和用户表示用于推荐任务,增强器主要是为了从输入视图中抽取信息含量更加丰富的特征用于对比学习任务),这相当于一个多任务框架,直接使用联合学习优化两个部分的参数可能会导致两部分模型都最终趋于次优的结果,因此我们进一步提出使用元优化的策略来交替更新两个模块之间的参数,元优化的框架如下所示:
iii. 因为引入模型增强的缘故,我们在计算对比损失的时候同一个视图可能会参与计算两次对比损失(论文中一共有四个对比损失函数),这导致会存在一种可能就是其中两个对比损失函数会使得某一视图变换的方向不一致,我们通过实验也发现直接训练会导致原本是正样本对的两个视图表示趋于分散(参看论文中图2)。因此我们讨论得出应该添加一个正则项,这个正则项主要目的是约束模型增强所生成的视图让每两个对比视图中正样本对与负样本对不要相差太大,趋于一个中性范围。
其中表示对比视图,表示正样本对的相似度,表示负样本对的相似度,表示正样本对中相似度的最小值与负样本对中相似度的最大值中的最小值,同理,表示两者之间的最大值,这里的正则最终是让正样本之间的相似度不要太相似,负样本对不要太分散,使得两者都趋于一个中性范围。
我们在三个公开的数据集上进行了实验,本文所提的模型MCLRec超过了先前的所有的基于对比学习的序列推荐的方法。
同时我们还做了数据稀疏、数据噪音、batch size相关的实验,这些实验进一步表明了我们模型的有效性。
[1] Zhuoliang Kang, Kristen Grauman, and Fei Sha. 2011. Learning with Whom to Share in Multi-task Feature Learning. In ICML. 521–528.