SFCNR论文阅读笔记

Self-supervised Contrastive Enhancement with Symmetric Few-shot Learning Towers for Cold-start News Recommendation论文阅读笔记

Abstract

现存的问题:

​ 如今,新闻的传播速度快于消费速度。这与快速的新闻周期和延迟更新一起,导致了具有挑战性的新闻冷启动问题。同样,由于用户参与度有限,用户冷启动问题也长期阻碍着推荐工作。(也就是传统的冷启动问题)

提出方法:

​ 为了解决这两个问题,我们在自监督对比增强的基础上推出了用于冷启动新闻推荐的对称少量学习框架(SFCNR)。在训练过程中,我们的方法采用对称少量学习塔(SFT)将温暖的用户/新闻属性转换为其行为/内容特征。我们设计了两种创新的特征对齐策略来加强塔的训练。随后,在推理过程中,该塔通过个性化门控网络,利用塔存储的先验知识,为冷用户/新闻生成虚拟特征。

Introduction

​ 零点学习(Zero-Shot Learning,简称 ZSL)在计算机视觉领域已得到广泛应用 ,它的出现为解决冷启动难题带来了希望。ZSL 的核心是通过利用辅助信息(如属性或上下文),从已知类别推断出未知类别的知识,从而为后者生成样本。同样,在冷启动场景中,有限的历史交互数据阻碍了针对新用户和新项目的模型训练。因此,将 ZSL 的想法扩展到冷启动推荐中是有意义的

  • 传统的ZSL模型的缺点:线性模型(如 LLAE)可能难以有效处理复杂的映射,而用零点冷启动模块取代排序模型往往只能解决冷启动问题,却牺牲了热用户和项目的性能。此外,MAIL 和 GAZRec 等方法都忽视了用户和条目之间的直接协作,零点塔的分离会导致信息分布的不均衡。此外,简单地对齐虚拟特征和原始特征可能会导致过拟合问题。
  • 传统的ZSL管道的缺点:以往的 zeroshot 方法通常只在推理过程中区分冷热用户/项目。冷用户/冷项目的原始特征会被生成的特征取代,而热用户/热项目则保留其原始特征。然而,这些研究主要集中在纯冷用户和纯冷项目的场景上,在现实世界中很少见。我们认为,尽管冷用户很少,但他们的原始行为对于描述兴趣至关重要。同样,对于冷新闻来说,虽然上下文细节可能难以捕捉,但新闻标题和实体等离散内容特征仍然是重要的描述因素。

​ 因此,一个同时解决用户和新闻冷启动问题的统一框架对于有效的新闻推荐至关重要。为了克服 ZSL 在解决冷启动问题方面的局限性,我们在本文中提出了一种用于冷启动新闻推荐的对称快速学习塔(SFCNR)。我们的模型包括三个塔:基础推荐塔、用户冷启动塔和新闻冷启动塔。基础推荐塔可以是任何高性能的新闻推荐模型。对于对称的少量学习塔(SFT),我们将其作用分为两个阶段:训练(先验知识存储)和推理(先验知识传递)。在训练过程中,我们通过一个属性编码器、一个虚拟特征编码器和一个通过对比学习增强的特征对齐网络,将用户和新闻属性转换为虚拟表征。

​ 具体来说,为了加强冷启动学习塔训练,我们将虚拟表征与原始表征进行内部和外部对齐。我们引入了两种新的对齐方法:面向内容的对齐(内部)和面向任务的对齐(外部)。在推理方面,冷启动学习塔通过存储的知识生成虚拟表征,然后通过个性化门控机制平衡虚拟表征和原始表征。重要的是,我们的框架与模型无关,无需改变原始模型结构。

​ 本文的贡献如下:

  • 我们提出了一种称为 SFCNR 的与模型无关的框架,它能在不修改原始推荐模型结构的情况下,有效提高用户和新闻冷启动情景下的推荐性能。
  • 在模型方面,我们利用自监督学习和监督学习的概念,提出了两个创新的对齐方式,确保冷启动塔有效地学习精确的、量身定制的虚拟特征表征,以便进行推荐。
  • 在管道方面,我们强调了冷用户和冷新闻原始特征的重要性,并提出了基于原始表征学习质量进行加权融合的个性化门控机制。

Method

​ 在本节中,我们首先介绍基本的推荐塔。然后,我们探索了冷启动学习塔(SFTs)。最后,我们描述了如何使用少镜头学习来训练SFT。

整体的框架

​ 我们的模型结构如下图所示,由三个主要模块组成:基础推荐塔、用户冷启动学习塔和新闻冷启动学习塔,简称为对称少量学习塔(SFT)。

pk7NE01.png

​ 基础推荐塔可以是任何优秀的新闻推荐模型,它通过考虑用户行为和新闻内容生成最终推荐。为了解决冷启动问题,我们引入了额外的用户冷启动学习塔和新闻冷启动学习塔,它们是对称设计的。SFT 利用热用户和新闻的属性特征来学习虚拟表征。然后利用学习到的虚拟表征来增强对冷用户和新闻的推荐。这种方法有效地解决了新闻推荐中的冷启动难题。

​ 在管道方面,我们的模型采用了个性化的门控机制来融合原始特征和虚拟特征。这确保了在增强虚拟特征的同时保留原始信息,有效缓解了冷启动问题。在模型方面,我们采用对比学习来改进虚拟特征的学习。通过抽取负样本,我们可以捕捉到与行为/内容特征和属性特征相关的重要信息,从而实现高效训练。

基础推荐塔

基础推荐

​ 性能最佳基线的新闻和用户编码器用于生成新闻内容和用户行为的表征。对于不同类型的用户和新闻,我们分别生成用户表示(u)和新闻表示(n),如公式 2 所示。

\(\mathbf{u}=\begin{cases}\mathbf{u}_b&\text{flagu}=1,\\Gate(\mathbf{u}_b,\mathbf{\hat{u}_b})&\text{flagu}=0\end{cases}\quad\mathbf{n}=\begin{cases}\mathbf{n}_c&\text{flagn}=1,\\Gate(\mathbf{n}_c,\mathbf{\hat{n}_c})&\text{flagn}=0\end{cases}\)

其中,𝐺𝑎𝑡𝑒 (-) 表示个性化融合单元,可选择用虚拟信息增强原始信息。当 𝑓𝑙𝑎𝑔𝑢 = 0 或 𝑓𝑙𝑎𝑔𝑛 = 0 时,即用户或新闻是冷的时,它将自动激活。u𝑏 和 n𝑐 可以是任何类型用户和新闻的行为表示和内容表示,而 uˆ𝑏 和 nˆ𝑐 则是冷用户和冷新闻的虚拟表示。

个性化的门控机制

​ 我们认为,冷用户的原始行为非常重要,因为没有噪音的原始行为更能说明用户的兴趣。同样,对于冷新闻来说,尽管缺乏上下文信息,但一些离散的新闻内容特征,如标题和实体,对于描述新闻仍然至关重要,不应被忽视。总之,我们认为原始用户表征反映了真实的用户行为,而虚拟用户表征则暗示了潜在的用户行为,新闻也是如此。

​ 传统方法直接用生成的表征代替冷用户或冷物品的表征,从而忽略和浪费了真实信息。我们提出了一种个性化融合机制(𝐺𝑎𝑡𝑒 (-)),以保留原始信息并利用潜在信息对其进行增强。

​ 就用户而言,我们首先评估原始表征学习的质量:

\(\alpha_u=\mathbf{sigmoid}(\mathbf{q}^\mathrm{T}(\mathbf{W}_u\times\mathbf{u}_b+\mathbf{b}_u)),\)

​ 最终,通过对原始特征表示(u𝑏)和虚拟特征表示(uˆ𝑏)的加权融合,得到最终的表示,如下所示。新闻也将以同样的方式被融合起来。

\(\mathbf{u}=\alpha_u*\mathbf{u}_b+(1-\alpha_u)*\mathbf{\hat{u}_b}.\)

基本训练

​ 这里就不多解释了,还是传统的训练方式

\(\mathcal{L}_{rec}=-\sum_{i\in\mathcal{S}}\log\left(\frac{\exp\left(\hat{y}_i^+\right)}{\exp\left(\hat{y}_i^+\right)+\sum_{j=1}^K\exp\left(\hat{y}_{i,j}^-\right)}\right).\)

对称少镜头学习塔

​ 对称的少镜头学习塔由两个主要部分组成:用户冷启动学习塔和新闻冷启动学习塔。它们的结构完全相同,都包含一个属性编码器和一个虚拟特征生成器,为冷用户或冷新闻创建虚拟特征表征。此外,虽然两个塔是独立构建的,但它们之间存在潜在的联系。为了生成高质量的虚拟特征,我们设计了两种特征对齐方式,即面向内容的特征对齐和面向任务的特征对齐。

属性特征的构造

​ 对于用户u,我们将用户ID和其偏好的新闻类别作为用户属性Au,因为数据集中没有通用属性,所以选择新闻的主题T和子主题S等粗粒度的属性来描述类别,\(A_u=\begin{bmatrix}T_1,S_1\ldots,T_{|B|},S_{|B|}\end{bmatrix}\),|B|是用户行为的数量。

​ 对于新闻n,因为缺乏上下文信息,将新闻的ID和离散的内容特征,例如标题W,实体E,主题T和子主题S视为新闻属性,即\(A_n=[W_1,\ldots,W_M,E_1\ldots,E_L,T,S]\)

虚拟特征生成

在用户冷启动塔中,我们通过属性编码器(Gu)生成属性特征(u𝑡)的表示。具体来说,属性编码器首先嵌入类别和用户 ID,然后通过全连接层进行非线性变换,最后执行加权融合的关注机制。

\(\mathbf{u}_t=\mathbf{ATT}(\mathbf{MLP}_a(\mathbf{Emb}_u(\mathbf{A}_u))\parallel\mathbf{MLP}_{id}(\mathbf{Emb}_{id}(\mathbf{ID}_\mathbf{u}))),\)

​ 然后通过虚拟行为编码器 (𝑉𝑢) 生成用户虚拟表示 (\(\hat{\mathbf{u}_b}\))

\(\hat{\mathbf{u}_b}=\mathrm{Tanh}(\mathrm{MLP}_{u_1}(\mathrm{LeakyReLU}(\mathrm{MLP}_{u_2}(\mathbf{u}_t)))).\)

在新闻冷启动塔中,我们采用类似的属性特征生成和虚拟特征编码方法,得出新闻虚拟特征表征(\(\hat{\mathbf{n}_c}\))。为了区分新闻属性特征和内容特征,我们偏离了语言模型中通常的多头关注机制。相反,我们将标题和实体词视为新闻标签,采用嵌入层和多层感知器进行处理。

​ 后面的计算公式与用户冷启动塔相似,这里就不多解释了。

内容导向的特征对齐

​ 在传统方法中,仅对齐虚拟特征和原始特征可能会导致过度拟合和表征不足。为此,我们引入了一种以内容为导向的特征对齐方法,利用对比学习对虚拟特征和原始特征进行内部对齐。

​ 具体来说,对于生成的虚拟特征(\(\hat{\mathbf{u}_b}\)),我们将从高斯分布(N (0, 1))中随机生成的噪声向量(z𝑢 ∈ R𝑑 )作为负样本,与属性特征表示(u𝑡 ∈ R𝑑 )一起作为负样本。原始特征(u𝑏)作为正样本。选择使用属性特征作为负样本的目的是区分它们,确保转换的可行性。

​ 面向内容的对齐损失函数如下:

\[\mathcal{L}_{c_u}=-\mathbb{E}_{u\in\mathbf{U}_w}\left[\frac{\exp(sim(\hat{\mathbf{u}_b},\mathbf{u}_b)/\tau)}{\exp(sim(\hat{\mathbf{u}_b},\mathbf{z}_u)/\tau)+\exp(sim(\hat{\mathbf{u}_b},\mathbf{u}_t)/\tau)}\right]. \]

​ 其中U𝑤表示温暖用户。由于有大量的点击行为,我们只利用温暖用户样本来训练用户冷启动学习塔。

​ 同样,我们用类似的思路来训练新闻冷启动学习塔

\[\mathcal{L}_{\mathcal{c}_n}=-\mathbb{E}_{n\in\mathbf{N}_w}\left[\frac{\exp(sim(\hat{\mathbf{n}_c},\mathbf{n}_c)/\tau)}{\exp(sim(\hat{\mathbf{n}_c},\mathbf{z}_n)/\tau)+\exp(sim(\hat{\mathbf{n}_c},\mathbf{n}_t)/\tau)}\right], \]

任务导向的特征对齐

​ 在传统方法中,零点塔的划分会导致虚拟特征与原始特征之间的信息分布存在差异,从而导致推荐性能达不到最优。为了解决这个问题,我们提出了一种监督任务,用于生成更符合行为和内容分布的虚拟特征,同时在推荐任务中表现出色。

​ 具体来说,我们的任务导向配准方法采用了与基础推荐相同的负采样策略,以保证模型训练的效率,并使用交叉熵损失函数来实现任务导向特征配准

\[\mathcal{L}_{v}=\sum_{u\in\mathbf{U}_{\mathbf{w}}and n\in\mathbf{N}_{\mathbf{w}}}-\log\left(\frac{\exp(\mathrm{y}(\hat{\mathbf{u}_{b}},\hat{\mathbf{n}_{c}^{i}}))}{\exp(\mathrm{y}(\hat{\mathbf{u}_{b}},\hat{\mathbf{n}_{c}^{i}}))+\sum_{j=1}^{K}\exp(\mathrm{y}(\hat{\mathbf{u}_{b}},\hat{\mathbf{n}_{c}^{j}}))}\right) \]

​ 其中y(·)表示由点积实现的虚拟特征预测器,

训练技巧

​ 我们的模型采用端到端训练方法,以确保各模块之间的协同效应。总体损失函数是各损失函数之和。

\(\mathcal{L}=\mathcal{L}_{v}+\mathcal{L}_{\mathrm{c}_{n}}+\mathcal{L}_{\mathrm{c}_{u}}+\mathcal{L}_{rec}.\)

​ 具体来说,冷启动学习塔分为两个阶段:训练和推理。在训练阶段,只使用有温度的用户和新闻来训练塔。在推理阶段,采用个性化门控机制,将原始特征与虚拟特征相结合。然后将这些融合表征应用于冷用户和新闻,以提高冷启动场景下的推荐性能。此外,通过在整个数据集上进行训练,对推荐塔的参数进行微调,以增强模型对不同用户和新闻特征的适应性。

总结

​ 整篇文章讲的还是很清晰的,这里按照框架图来总结一下。

​ 首先是基本推荐塔,这个没什么好说的,就是正常的新闻编码用户编码,这里多了一个门控单元,说是门控,其实也就是用来融合原始特征表示和后面生成的虚拟特征表示,系数用原始融合特征来生成。

​ 然后是少镜头学习塔。首先是属性特征的构造,构造用户和新闻的属性,然后就是属性表示的生成,采用注意力网络,利用前面构造的用户属性作为输入。之后生成虚拟的特征表示,用前面的属性表示作为输入。

​ 之后就是利用自监督学习来对学习到的这些表示进行对齐,首先是内容导向的特征对齐,就是使得生成的虚拟表示与原始表示尽可能近,离随机表示以及中间生成的属性表示尽可能远。然后是任务导向的特征对齐,就是感觉是使得交互过的用户新闻之间的距离尽可能近。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/758695.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷P10693

洛谷P10693 好奇怪的题目编号 思路提取input 11 2 13 4 5 3 7 9 9 11 11 12 output 9以人造数据为例。 首先我们让\(i\)\(\to\)\(a_i\)连边,整个分三种情况(对应图中三部分)。第一部分:\(i\)坐到了\(a_i\)(\(a_i\)\(\le\)\(n\))这个位置,那么\(a_i\)就没有地方坐了,他只…

WSL默认安装目录

我当前在win11下进行以下操作,其它系统版本有问题可以留言一、安装WSL前提条件:我们需要保证你的操作系统版本满足 **Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 ** 才能使用以下命令。 启用适用于 Linux 的 Windows 子系统:打开powershel…

【日记】坏了,0721 真成为柚子厨的标记了(418 字)

正文今天是 7 月 21 号,0721,然后柚子社入驻 B 站了,开始我以为是整活,结果发现是真的。草,这下 0721 真成柚子厨纪念日了。有点难绷又有点好笑。睡觉的一天。我原以为 14:30 睡到 16:30 差不多了,結果一觉睡到 17:30。草。我想着周末,也就没设闹钟了,睡到什么时候随缘…

京东员工达近52万人!阿里的2倍、拼多多的30倍

据最新数据显示,京东员工总数已接近52万人。这一数字是阿里巴巴的2倍、腾讯的5倍、拼多多的30倍。对比其他互联网公司普遍以降本增效为主基调,京东的员工数量反而增加。过去一年增加了66445人,近两年总计增加13万人。据最新数据显示,京东员工总数已接近52万人。这一数字是阿…

线段树优化建图一种编号方式的理解

int id(int l,int r) {return (l+r)|(l!=r);} //代码1证明思路:引导并说明某种做法发生冲突的情况,并证明修改后不会发生冲突 首先让我们考虑如果为 int id(int l,int r) {return (l+r);} //代码2会出现什么冲突,如图此时 [1,3] 与 [2,2] ,[1,5] 与 [3,3] 冲突结论1:线段树…

力扣-动态规划全解

目录动态规划斐波那契数列-EASY爬楼梯-EASY使用最小花费爬楼梯-EASY不同路径-Middle不同路径II-Middle不同路径 III-HARD整数拆分-MID*不同的二叉搜索树-MID背包问题-理论基础分割等和子集-EASY最后一块石头的重量 II-MID目标和-MID *一和零-MID*53-最大子数组和-中等918-环形子…

能源公司 Turcomp 通过 NocoBase 实现敏捷、安全开发

深入了解 Turcomp 如何利用 NocoBase 加快开发进度,并符合安全要求。NocoBase 是一个极易扩展的开源无代码开发平台。完全掌控,无限扩展,助力你的开发团队快速响应变化,显著降低成本,不必投入几年时间和数百万资金研发,只需要花几分钟部署 NocoBase。 NocoBase 中文官网 …

宝塔安装wordpress,ftp

宝塔安装好ftp, 在后台配置账户 状态: 服务器回应不可路由的地址。使用服务器地址代替,遇到这类报错,是filezilla配置问题, 只需要

Qt+OpenCascade开发笔记(一):occ的windows开发环境搭建(一):OpenCascade介绍、下载和安装过程

前言Open CASCADE是由Open Cascade SAS公司开发和支持的开源软件开发平台,旨在为特定领域快速开发程序而设计。它是一个面向对象的C++类库,提供了丰富的几何造型、数据交换和可视化等功能,成为许多CAD软件的核心组件。  本篇描述下载和安装过程。 OpenCascade(OCC)概述O…

自定义过滤器

代码实现: from flask import Flask,render_templateapp = Flask(__name__)def get_top3(list): #返回列表前三个return list[:3] #方式一:注意一个过滤器 app.jinja_env.filters["get_top"]=get_top3#方式二 @app.template_filter(get_qu) def get_qu(lis): #返…

在构建Docker时执行yum -y install gcc报错解决方案

1、在构建docker时,执行yum -y install gcc报一下错误 2、解决方案:更换镜像 执行以下指令: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 3、…

Dos 解决端口占用

三步走: 第一步:netstat -ano | findstr 你要解决的端口号 第二步:tasklist | findstr 查看到的进程号 第三部:taskkill /f /t /im 进程名