前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CMI:结合对比学习和多兴趣挖掘的微视频推荐

CMI:结合对比学习和多兴趣挖掘的微视频推荐

作者头像
秋枫学习笔记
发布2022-09-19 10:12:43
5740
发布2022-09-19 10:12:43
举报
文章被收录于专栏:秋枫学习笔记

关注我们,一起学习~

标题:Improving Micro-video Recommendation via Contrastive Multiple Interests 链接:https://arxiv.org/pdf/2205.09593v1.pdf 会议:SIGIR 2022 公司:MX Media

1. 导读

本文主要关注微视频的推荐方面的一篇短文,现有的微视频推荐模型依赖于多模态信息,并且学习的embedding无法反映用户对微视频的多种兴趣。本文结合对比学习提出提取对比多兴趣并设计微视频推荐模型 CMI。CMI 从用户的历史交互序列中为每个用户学习多个兴趣embedding,其中隐式正交微视频类别用于解耦多个用户兴趣。此外,构建对比多兴趣损失,以提高兴趣embedding的鲁棒性和推荐的性能。

2. 方法

用户集合表示为U,商品集合为V,用户u在时间t与商品v交互可以表示为

(u_i,v_j,t)

,给定用户

u_i

,其交互序列可以表示为

s_i=[v_{i1},...,v_{i|s_i|}]

,用户的多个兴趣表征可以表示为

[\mathbf{u}_i^1,...,\mathbf{u}_i^m]

,然后,对于每个兴趣embedding,计算每个候选微视频的余弦相似度,并召回具有相似度最高的K个微视频,即总共召回了mK个微视频。最后,从召回的微视频中,根据余弦相似度选取topK个微视频。

2.1 多兴趣和一般兴趣编码器

本文认为商品的类别用户兴趣的基础。假设有m种全局类别并设置可学习的隐式embedding为

[g_1,...,g_m]

。对于交互序列

s_i

中的商品,通过embedding层依次得到每个商品的embedding,得到

\mathbf{S}_i=[\mathbf{v}_{i1},...,\mathbf{v}_{i|s_i|}]

。使用商品embedding和类别embedding之间的余弦相似度作为衡量商品

v_{ik}

属于类别

l

的分数。公式如下,

w_{i k}^{l}=\frac{\mathbf{g}_{l}^{T} \mathbf{v}_{i k}}{\left\|\mathbf{g}_{l}\right\|_{2}\left\|\mathbf{v}_{i k}\right\|_{2}}

然后归一化得到相应的概率,

p_{i k}^{l}=\frac{\exp \left(w_{i k}^{l} / \epsilon\right)}{\sum_{l=1}^{m} \exp \left(w_{i k}^{l} / \epsilon\right)}

然后可以得到商品类别

l

对应的用户兴趣

\mathbf{u}_i^l

\mathbf{u}_{i}^{l}=\sum_{k=1}^{\left|s_{i}\right|} p_{i k}^{l} \mathbf{v}_{i k}

在执行类别分配时,可能会遇到两种退化情况。

  • 每个商品具有相同或相似的属于不同类别的概率。造成这种退化的原因是学习到的商品类别embedding很相似。
  • 所有商品都属于同一类。

为了避免退化情况,将类别embedding和商品embedding都约束在一个单位超球面内,即

\left\|\mathbf{g}_{i}\right\|_{2}=\left\|\mathbf{v}_{*}\right\|_{2}=1

,并将两两类别的embedding约束为正交,公式如下,

\mathcal{L}_{o r t h}=\sum_{i=1}^{m} \sum_{j=1, j \neq i}^{m}\left(\mathbf{g}_{i}^{T} \mathbf{g}_{j}\right)^{2}

除了对用户的多种兴趣进行编码外,还使用 GRU 对用户的一般兴趣的演变进行建模,获得用户的一般兴趣

\mathbf{u}_i^g=GRU([\mathbf{v}_{i1},...,\mathbf{v}_{i|s_i|}])

2.2 对比正则项

部分交互中隐含的用户兴趣与所有交互(所有交互的意思是整个交互序列

s_i

)中隐含的用户兴趣相同。因此,采用随机抽样来得到不同的子序列,从而获得增广的数据。具体来说,给定用户

u_i

的历史交互序列

s_i=[v_{i1},...,v_{i|s_i|}]

,从

s_i

中采样

\min(\mu|s_i|,f)

个微视频,并根据它们在

s_i

中的顺序形成一个新序列

s_i'

,其中μ是采样率,f是最长序列长度默认值为 100。通过随机采样

s_i

两次,得到两个序列

s_i'

s''_i

。然后将这两个增强序列馈送到两个多兴趣编码器,以学习两组用户兴趣,即

\mathbf{U}_{i}^{\prime}=\left[\mathbf{u}_{i}^{1 \prime}, \mathbf{u}_{i}^{2 \prime}, \ldots, \mathbf{u}_{i}^{m \prime}\right]

\mathbf{U}_{i}^{\prime \prime}=\left[\mathbf{u}_{i}^{1 \prime \prime}, \mathbf{u}_{i}^{2 \prime \prime}, \ldots, \mathbf{u}_{i}^{m \prime \prime}\right]

,可以表示为下式,

U_i'=\text{Multi-Interest-Encoder}(s_i')
U_i''=\text{Multi-Interest-Encoder}(s_i'')

然后,构建一个对比多兴趣损失。对于用户

u_i

的任何兴趣embedding

\mathbf{u}_i^{k \prime} \in \mathbf{U}_i'

,构造一个正对

(\mathbf{u}_i^{k\prime},\mathbf{u}_i^{k\prime \prime})

,用

\mathbf{u}_i^{k'}

和其他2m-2个兴趣embedding构造2m-2个负样本对。由于m通常不会太大,因此上述负对的数量是有限的。给定

\mathbf{u}_i^{k \prime}

,利用同一批次中每个其他用户的兴趣embedding来构建额外的负对。综上,设训练batch为B,batch size为|B|,对于每个正对,有2m(|B| − 1) + 2m − 2 = 2(m|B| − 1) 个负对,形成负集

S^-

。损失函数如下所示,

\operatorname{sim}(\mathbf{a}, \mathbf{b})=\mathbf{a}^{T} \mathbf{b} /\left(\|\mathbf{a}\|_{2}\|\mathbf{b}\|_{2} \tau\right)
\begin{aligned} \mathcal{L}_{c l}\left(\mathbf{u}_{i}^{k \prime}, \mathbf{u}_{i}^{k \prime \prime}\right)=&-\log \frac{e^{\operatorname{sim}\left(\mathbf{u}_{i}^{k \prime}, \mathbf{u}_{i}^{k \prime \prime}\right)}}{e^{\operatorname{sim}\left(\mathbf{u}_{i}^{k \prime}, \mathbf{u}_{i}^{k \prime \prime}\right)}+\sum_{\mathbf{s}^{-} \in \mathcal{S}^{-}} e^{\operatorname{sim}\left(\mathbf{u}_{i}^{k \prime}, \mathbf{s}^{-}\right)}} \\ &-\log \frac{e^{\operatorname{sim}\left(\mathbf{u}_{i}^{k \prime}, \mathbf{u}_{i}^{k \prime \prime}\right)}}{e^{\operatorname{sim}\left(\mathbf{u}_{i}^{k \prime}, \mathbf{u}_{i}^{k \prime \prime}\right)}+\sum_{\mathbf{s}^{-} \in \mathcal{S}^{-}} e^{\operatorname{sim}\left(\mathbf{u}_{i}^{k \prime \prime}, \mathbf{s}^{-}\right)}} \end{aligned}

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

2.3 损失函数

用户

u_i

和候选商品

v_t

的预测方式为

c_{i t}=\max _{0 < k \leq m}\left(\left\{\mathbf{u}_{i}^{k T} \mathbf{v}_{t} / \epsilon\right\}\right)+\mathbf{u}_{i}^{g T} \mathbf{v}_{t}

。在训练过程中,对于用户

u_i

的每个正样本

v_p^i

,从所有微视频中随机抽取从未交互过的n个微视频作为负样本。为了避免高采样成本,给定一个正样本,只采样一个负样本,即n为1。此外,将同一批次中其他用户的正样本商品和负样本商品作为负样本,从而形成负样本集N。然后采用以下交叉熵损失函数,公式如下,

\mathcal{L}_{\text {main }}\left(u_{i}, v_{p}^{i}\right)=-\ln \frac{\exp \left(c_{i p}\right)}{\sum_{v_{*} \in\left\{\mathcal{N} \cup v_{p}^{i}\right\}} \exp \left(c_{i *}\right)}

总损失函数为下式,

\mathcal{L}=\mathcal{L}_{main}+\lambda_{cl}\mathcal{L}_{cl}+\lambda_{orth}\mathcal{L}_{orth}

3. 结果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.1 多兴趣和一般兴趣编码器
  • 2.2 对比正则项
  • 2.3 损失函数
相关产品与服务
批量计算
批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档