阅读笔记--2022-SIGIR-Improving Micro-video Recommendation via Contrastive Multiple Interests

本文主要是介绍阅读笔记--2022-SIGIR-Improving Micro-video Recommendation via Contrastive Multiple Interests,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

阅读笔记–Improving Micro-video Recommendation via Contrastive Multiple Interests

paper: https://arxiv.org/abs/2205.09593

1. Motivation

随着微视频创作者和观看者的快速增加,如何从大量的数据中向观看者做出个性化的推荐开始受到越来越多的关注。然而,现有的微视频推荐模型依赖于昂贵的多模态信息,学习的是整体兴趣嵌入,不能反映用户在微视频中的多重兴趣( multiple interests)。

最近,对比学习也被引入到推荐中,如顺序推荐、基于图神经网络的推荐等,实现了去偏和去噪,解决了表征退化和冷启动问题,提高推荐精度。

所以本文想通过对比学习的方式来提升微视频的推荐,提出了CMI模型。

2. Challenge

  • 如图1所示,用户对旅游和宠物都感兴趣,用户未来的交互可能涉及其中的任何一个兴趣.因此,更合理的方法是学习multiple disentangled interest embeddings(分离的用户兴趣嵌入),每个兴趣嵌入代表用户兴趣的一个方面,然后根据学习到的multiple disentangled interest embeddings为用户生成推荐。

  • 在微视频场景下,微视频是自动播放的,正向交互中存在噪声,有时用户无法判断是否喜欢该微视频,直到微视频播放完毕。然而,现有的微视频推荐模型和多兴趣推荐模型都没有利用对比学习来减少正交互中噪声的影响。

3. Method

3.1 问题定义
  • user sets U \bold U U , item sets : V \bold V V注:这里的item指的是 micro-video) , 用一个三元组 ( i , j , t ) (i, j,t) (i,j,t) 表示user u i u_i ui 在时间戳 t t t 时和 micro-video v j v_j vj之间的交互。

  • 对于一个特定的user u i ∈ U u_i\in \bold U uiU, 它在一段时间内的历史交互序列表示为: s i = [ v i 1 , v i 2 , . . . , v i ∣ s i ∣ ] s_i =[v_{i1},v_{i2},...,v_{i|s_i|}] si=[vi1,vi2,...,visi]其中,视频按用户 𝑢 𝑖 𝑢_𝑖 ui与视频交互的时间戳按升序排序。

  • 其次,学习每个用户的多个兴趣嵌入( multiple interest embeddings),表示为: [ u i 1 , u i 2 , . . . , u i m ] [u_i^1,u_i^2,...,u_i^m] [ui1,ui2,...,uim] 。然后,对于每个兴趣嵌入,我们计算每个候选微视频的余弦相似度,并召回K个相似度最高的微视频,最终可以召回 m K mK mK个微视频(因为有m个 interest embedding)。最后对这 m K mK mK个视频按余弦相似度降序排序,选出前K个微视频推荐给用户。

  • 整体模型图如图二所示:

3.2 Multi-interest and General Interest Encoders

我们假设用户对某一类item的偏好形成了用户的兴趣。因此,我们假设有 𝑚 𝑚 m个categories of items,为这 𝑚 𝑚 m个类别设置可学习的隐式嵌入(category embedding [ g 1 , g 2 , … , g 𝑚 ] [g_1,g_2,…,g_𝑚] [g1,g2,,gm]。再结合用户 u i u_i ui 的历史交互序列: S i = [ v i 1 , v i 2 , . . . , v i ∣ s i ∣ ] S_i =[v_{i1},v_{i2},...,v_{i|s_i|}] Si=[vi1,vi2,...,visi](这里的 v i k v_{ik} vik指的是通过了embedding layer得到的item embedding)。使用余弦相似度计算item embedding和category embedding之间的相似性,从而判断出该item属于哪个category。

  • 用公式1 计算item 𝑣 𝑖 𝑘 ∈ S 𝑖 𝑣_{𝑖𝑘}\in S_𝑖 vikSi匹配类别 𝑙 𝑙 l 的得分:

w i k l = g l T v i k ∣ ∣ g l ∣ ∣ 2 ∣ ∣ v i k ∣ ∣ 2 w_{ik}^l=\frac {g_l^Tv_{ik}}{||g_l||_2\space ||v_{ik}||_2} wikl=gl2 vik2glTvik

  • 接下来,用公式2计算item 𝑣 𝑖 𝑘 ∈ S 𝑖 𝑣_{𝑖𝑘}\in S_𝑖 vikSi 分配到类别 𝑙 𝑙 l 的概率 p i k l p_{ik}^l pikl:( ϵ \epsilon ϵ是为了避免过拟合而设置的小于1的超参数)

p i k l = e x p ( w i k l / ϵ ) ∑ l = 1 m e x p ( w i k l / ϵ ) p_{ik}^l=\frac {exp(w_{ik}^l/\epsilon)}{\sum_{l=1}^m exp(w_{ik}^l/\epsilon)} pikl=l=1mexp(wikl/ϵ)exp(wikl/ϵ)

  • 然后,就可以用公式3计算对应item category l l l 的 user interest u i l \bold u_i^l uil

u i l = ∑ k = 1 ∣ s i ∣ p i k l v i k u_i^l=\sum_{k=1}^{|s_i|}p_{ik}^l \space v_{ik} uil=k=1sipikl vik

注意:在执行类别赋值时,我们可能会遇到两种退化情况:

  1. 每个item属于不同类别的概率相同或相似。造成这种退化的原因是学习到的 item category embeddings彼此相当相同
  2. 某一种 item category主导了整个item嵌入空间,这意味着所有项目都属于这个类别。

为了避免以上情况: 我们将category embedding和item embedding都约束在一个单位超球内,即 ∣ ∣ g i ∣ ∣ 2 = ∣ ∣ v ∗ ∣ ∣ 2 = = 1 ||g_i||_2=||v_*||_2==1 gi2=v2==1,并约束每两个 category embeddings为正交,构造正交性损失如式4所示。
L o r t h = ∑ i = 1 m ∑ j = 1 , j ≠ i m ( g i T g j ) 2 L_{orth}=\sum_{i=1}^m\sum_{j=1,j\neq i}^m(g_i^T\space g_j)^2 Lorth=i=1mj=1,j=im(giT gj)2
除了编码用户的多种兴趣之外,我们还使用GRU(引用别人的方法)对用户一般兴趣的演化进行建模,实现用户的一般兴趣 u i g = G R U ( [ v i 1 , v i 2 , . . . , v i ∣ s i ∣ ] ) u_i^g=GRU([v_{i1},v_{i2},...,v_{i|s_i|}]) uig=GRU([vi1,vi2,...,visi])

3.3 Contrastive Regularization

我们认为部分交互中隐含的用户兴趣与所有交互中隐含的用户兴趣是相同的。因此,我们采用随机抽样的方法进行数据增广。

给定用户 u i u_i ui 的历史交互序列 s i = [ v i 1 , v i 2 , . . . , v i ∣ s i ∣ ] s_i =[v_{i1},v_{i2},...,v_{i|s_i|}] si=[vi1,vi2,...,visi],我们从 s i s_i si 中采样 m i n ( μ ∣ s i ∣ , f ) min(\mu_{|s_i|},f) min(μsi,f) micro-videos并仍然按照 s i s_i si中的顺序形成一个新的序列 s i ′ s_i^{'} si (注: μ \mu μ 表示采样率, f f f 表示默认值为100的最长序列长度) 。通过对 𝑠 𝑖 𝑠_𝑖 si进行两次随机抽样,我们得到两个序列 s i ′ s_i^{'} si s i " s_i^{"} si"

然后将这两个序列feed 进two multi-interest encoders 从而学得两组用户兴趣(user interests): U i ′ = [ u i 1 ′ , u i 2 ′ , . . . , u i m ′ ] \bold U_i^{'}=[u_i^{1'},u_i^{2'},...,u_i^{m'}] Ui=[ui1,ui2,...,uim] U i " = [ u i 1 " , u i 2 " , . . . , u i m " ] \bold U_i^{"}=[u_i^{1"},u_i^{2"},...,u_i^{m"}] Ui"=[ui1",ui2",...,uim"] ,如公式5所示:
U i ′ = M u l t i _ I n t e r e s t _ E n c o d e r ( s i ′ ) U i " = M u l t i _ I n t e r e s t _ E n c o d e r ( s i " ) \bold U_i^{'}=Multi\_ Interest\_Encoder(s_i^{'}) \\ \bold U_i^{"}=Multi\_ Interest\_Encoder(s_i^{"}) Ui=Multi_Interest_Encoder(si)Ui"=Multi_Interest_Encoder(si")
然后,我们构建一个对比的多兴趣损失( contrastive multi-interest loss)如下:
L c l ( u i k ′ , u i k " ) = − l o g e s i m ( u i k ′ , u i k " ) e s i m ( u i k ′ , u i k " ) + ∑ s − ∈ S − e s i m ( u i k ′ , s − ) − l o g e s i m ( u i k ′ , u i k " ) e s i m ( u i k ′ , u i k " ) + ∑ s − ∈ S − e s i m ( u i k " , s − ) L_{cl}(u_i^{k'},u_i^{k"})=-log \frac{e^{sim(u_i^{k'},u_i^{k"})}}{e^{sim(u_i^{k'},u_i^{k"})}+\sum_{s^-\in S^-}e^{sim(u_i^{k'},s^-)}}-log \frac{e^{sim(u_i^{k'},u_i^{k"})}}{e^{sim(u_i^{k'},u_i^{k"})}+\sum_{s^-\in S^-}e^{sim(u_i^{k"},s^-)}} Lcl(uik,uik")=logesim(uik,uik")+sSesim(uik,s)esim(uik,uik")logesim(uik,uik")+sSesim(uik",s)esim(uik,uik")
这里的 u i k ′ ∈ U i ′ u_i^{k'}\in \bold U_i^{'} uikUi u i k " ∈ U i " u_i^{k"} \in \bold U_i^{"} uik"Ui" 对应the 𝑘-th micro-video category。对于任意一种interest embedding u i k ′ ∈ U i ′ u_i^{k'}\in \bold U_i^{'} uikUi of user u i u_i ui,我们构造一个正样本对 ( u i k ′ , u i k " ) (u_i^{k'},u_i^{k"}) (uik,uik"), 然后用 u i k ′ u_i^{k'} uik 构造 2 m − 2 2m-2 2m2个负样本对和 2 m − 2 2m-2 2m2 个用户的interest embedding u i h ′ ∈ U i ′ u_i^{h'}\in \bold U_i^{'} uihUi u i h " ∈ U i " u_i^{h"}\in \bold U_i^{"} uih"Ui"

通过数据增强和对比的多兴趣损失,用户兴趣学习对特定的正交互不再敏感,从而减少了有噪声的正交互的影响,实现了正交互去噪。

3.4 Loss Function
  • 用户 u i u_i ui 对候选item v t v_t vt的交互分数被预测为: c i t = m a x 0 < k ≤ m ( u i k t v t / ϵ + u i g T ) c_{it}=max_{0<k\leq m}({u_i^{kt}v_t/\epsilon}+{u_i^{g}}^T) cit=max0<km(uiktvt/ϵ+uigT)

  • 在训练过程中,对于用户 u i u_i ui的每一个正样本 v p i v_p^i vpi,我们需要从完整的微视频中随机抽取从未互动过的微视频 n n n 作为负样本。但是,为了避免较高的采样成本,给定一个正样本,我们只采样一个负样本,即 𝑛 = 1 𝑛= 1 n=1。另外,我们将同一个batch里其他用户的正采样item和负采样item作为负样本,从而形成负样本集 N \bold N N,然后我们采用以下交叉熵损失作为损失的主要部分:

L m a i n ( u i , v p i ) = − l n e x p ( c i p ) ∑ v ∗ ∈ N ∪ v p i e x p ( c i ∗ ) L_main(u_i,v_p^i)=-ln\frac {exp(c_{ip})}{\sum_{v_*\in{\bold N\cup v_p^i}}exp(c_{i*})} Lmain(ui,vpi)=lnvNvpiexp(ci)exp(cip)

  • 最后,我们的损失函数如下所示,其中𝜆*是正则化系数:

L = L m a i n + λ c l L c l + + λ o r t h L o r t h L=L_{main}+\lambda_{cl}L_{cl}++\lambda_{orth}L_{orth} L=Lmain+λclLcl++λorthLorth

4. Experiments

  • 数据集:
image-20220527113126456
  • 总体表现

image-20220527112104240

  • 消融实验1–各个变体的影响
    • CMI-CL:CMI移除了 contrastive multi-interest loss
    • CMI-G : CMI without the general interest encoder.

从表3中,我们发现模型变量的性能严重下降。这证实了对比学习对多兴趣推荐的可行性和有效性,并表明候选item是否匹配一般用户偏好也很重要。

  • 消融实验2–兴趣数量的影响

我们依次设置兴趣数为[1、2、4、8、16],进行实验。实验结果如表4所示。可以看出,当兴趣数为8时,CMI的性能最好,而不是1。这证实了在微视频推荐场景下提取多重兴趣点的必要性和有效性。

image-20220527112545620

这篇关于阅读笔记--2022-SIGIR-Improving Micro-video Recommendation via Contrastive Multiple Interests的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/293531

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个