首页 > 其他分享 >SelfCF论文阅读笔记

SelfCF论文阅读笔记

时间:2024-01-28 17:22:21浏览次数:18  
标签:嵌入 论文 网络 笔记 用户 扰动 SelfCF dot

Abstract

讲述现存的挑战,现有的方法通常采用负抽样来区分不同的项目,也就是观察到的用户-项目对被视为正实例,未观察到的对被称为负实例,并且在一个定义的分布下进行采样以进行训练。在大数据集上进行负采样的计算成本高,所以负项目应该在定义的分布下仔细的进行抽样,避免在数据集中观察到积极的项目。但是不可避免的是从训练数据集中抽样的一些负样本在测试集中可能是正的。于是提出了一个自监督的协同过滤框架(SelfCF)

SelfCF的主要思想是增加由主干网络生成的潜在嵌入,而不是用户/项目id的原始输入,提出了三种嵌入扰动的技术。该框架支持学习没有负样本的用户和项目的信息表示

Introduction

现有的CF模型严重依赖于负抽采样术来区分不同的项目,因此负样本不是自然可用的

负抽样技术也存在一些局限性,首先是引入了额外的计算和内存成本。而且即使为用户选择了非冲突的阴性样本,这些样本也可能属于用户未来的阳性项目,因为未观察到的交互可能是真正的负面实例,也可能是缺失的值,将落在测试集中的抽样对表示为假阴性样本。

总结一下,也就是说用户没有交互的物品不一定是用户不想要的,如果把当前用户没有交互的物品当成负样本会出问题

目前我们希望能在不进行负抽样的情况下训练模型

然后介绍一下自监督学习,说基本思想是Siamese网络(连体网络)的一种变体,最大化从样本的不同扰动版本中获得表示的相似性,然后介绍一下连体网络,连体网络通常包括两个对称网络(即在线网络和目标网络),用于输入比较。然后介绍了一下只有正采样的问题,会导致崩溃的解。

Siamese网络的结构如下:

pFuAb0f.png

没有负样本的SSL的学习范式与现有的使用负样本来学习表示的范式略有不同。没有负样本的SSL打算学习一个具有增强不变表示的编码器,也就是说,它们基于连体网络结构,最小化两个正样本之间的距离。

本文提出了一个自监督协同过滤的框架,对用户和项目的潜在嵌入进行后验扰动,以获得一个对比对。在架构设计上,我们只使用了一个编码器。此外我们没有在编码前扰动输入,而是使用后验嵌入扰动生成不同但不变的对比视图。后验扰动的一个好处是框架可以将封装的主干的内部实现作为黑盒。

本文的贡献如下:

  • 我们提出了一个新的框架,SelfCF,仅仅基于观察到的积极交互来学习用户/项目的潜在表示。该框架使用后验输出扰动来生成相同用户/项目嵌入的不同增强视图,用于对比学习
  • 设计了三种扰动技术,历史嵌入,嵌入dropout和边缘剪枝来对backbone的输出进行损坏

Method

模型的大体结构如下:

pFuAcm6.png

我们的框架部分继承了SimSiam的网络结构,在我们的框架SelfCF中,目标是学习仅基于积极的用户-项目交互的用户和项目的信息性表示。用户和项目的潜在嵌入都是从在线网络中学习到的。与卷积类似,这是一种成功的归纳偏差,权重共享连接网络可以对更复杂的转换(比如数据增强)建模不变性。SelfCF中的在线网络和目标网络使用相同的参数副本以及主干来建模表示不变性。但是因为去掉了动量编码器,所以在线网络和目标网络将产生相同的输出,使得损失完全消失。

正用户-项目对在保持其表示不变性的同时很难被扭曲。我们使用嵌入扰动技术来达到同样的效果。

通过输出扰动来增强数据

SelfCF框架增强了用户和项目的输出嵌入,以生成两个对比视图,提出了三种方法来在框架中引入嵌入扰动,三种方式的表示如下:

pFuZq76.png

损失函数

用户项目对最初由一个主干网中的编码器网络f进行处理,然后将编码器的输出复制到目标网络中进行嵌入扰动。然后我们将来自在线网络的编码器的输出表示为\((e_u,e_i)=f(u,i)\)。最后使用线性预测器将输出转换为\((\dot{e}_u,\dot{e}_i)=h(e_u,e_i)\),并将其与其他视图的扰动嵌入相匹配\((\tilde{e}_u,\tilde{e}_i)=g(e_u,e_i)\)。最后损失函数为:

\(\mathcal{L}=\frac12C(\dot{e}_u,\widetilde{e}_i)+\frac12C(\tilde{e}_u,\dot{e}_i)\)

上式中的C为:

\(C(e_u,e_i)=-\frac{(e_u)^Te_i}{||e_u||_2||e_i||_2}\)

从损失函数可以看出,我们打算最大化对给定的一个用户u的扰动项目i的预测

最后我们在目标网络上停止梯度,并只在在线网络上强制反向传播损失。我们遵循停止梯度算子sg,并通过更新损失函数来实现该算子

\(\mathcal{L}=\frac12\left(C(\dot{e}_u,sg(\widetilde{e}_i))+C(sg(\widetilde{e}_u),\dot{e}_i)\right)\)

使用停止梯度算子,目标网络不接收来自\((\tilde{e}_u,\tilde{e}_i)\)的梯度。然而,在线网络中的编码器f接收\((\dot{e}_u,\dot{e}_i)\)的梯度,并将其参数化到全局最优。相反,去掉该操作符会导致在线网络学习的不稳定。我们还在在线嵌入和预测器上加入了正则化惩罚,最终的损失函数为:

\(\mathcal{L}=\frac12\left(C(\dot{e}_u,sg(\tilde{e}_i))+C(sg(\tilde{e}_u),\dot{e}_i)\right)+\lambda_1\cdot(|||e_u||_2^2+||e_i||_2^2)+\lambda_2\cdot(||h||_1^2)\)

SelfCF的伪代码如下:

pFueXbq.png

Top-K 推荐

在SSL中,我们最小化每个正交互作用之间的预测损失。直观的说,我们基于交叉预测任务来预测未来的交互得分。也就是说我们预测了项目i与u的交互概率和用户u与i的交互概率

推荐评分的计算方法为:

\(s(e_u,e_i)=h(e_u)\cdot(e_i)^T+e_u\cdot h(e_i)^T\)

由于编码器f在在线网络和目标网络之间是共享的,所以我们使用从在线网络中获得的表示来预测每个用户的前k项

标签:嵌入,论文,网络,笔记,用户,扰动,SelfCF,dot
From: https://www.cnblogs.com/anewpro-techshare/p/17993044

相关文章

  • panghu week04 笔记
    长度最小的子数组一开始想的是框定一个区间,然后如果大于等于target,从区间头弹出一个元素,从尾部append进入一个元素,发现并不能覆盖所有的区间看了题解以后,可以定尾,然后移动头部进行比较funcminSubArrayLen(targetint,nums[]int)int{slide:=make([]int,0)slid......
  • 《Confusion Graph: Detecting Confusion Communities in Large Scale Image Classifi
    论文标题《ConfusionGraph:DetectingConfusionCommunitiesinLargeScaleImageClassification》混淆图:在大规模图像分类中检测混淆社区作者RuochunJin、YongDou、YueqingWang和XinNiu来自国防科技大学并行和分布式处理国家实验室,和上一篇是姊妹篇。初读摘要......
  • Docker学习笔记05:私有库
    DockerRegistry基本流程下载DockerRegistry镜像启动Registry容器推动镜像到自建Registry查看从自建Registry拉镜像。启动镜像dockerpullregistry#运行registry映射端口挂载映射容器卷开启特权模式dockerrun-d-p5000:5000-v/opt/registry:/tmp/registry--privilege......
  • 【学习笔记】部分树上算法(概念篇)
    本文包括:轻重链剖分(done)线段树合并(done)tobeupd:长链剖分DSUontree(树上启发式合并)点分治边分治LCT有待更新本文非例题代码大多未经过编译,谨慎使用本文本来只有重剖长剖dsu,但是发现不会写,另外几个甚至更简单就带歪了.jpgpart1轻重链剖分树剖是一类算法的总......
  • 《人月神话》读书笔记2
    贯彻执行要保证项目开发概念的完整性,可以通过手册规范开发人员的工作;尽管形式化定义通常难以理解,但它可以让表达更加精确;会议可以实现开发人员、架构师等团队内部的沟通协商,会议留下的问题积攒后通过大会重新决策。为什么巴比伦塔会失败?团队内部的沟通交流将影响整个团队的开发......
  • 线段树笔记
    voidpushup(inttr){ seg[tr]=seg[tr*2]+seg[tr*2+1];}voidbuild(inttr,intl,intr){ if(l==r){ seg[tr]=a[r]; return; } intmid=(l+r)/2; build(tr/2,l,mid); build(tr/2,mid+1,r); pushup(tr);}voidpushdown(inttr,intl,intr){ if(pls[tr]==0)......
  • 《构建之法》读书笔记2
        软件件开发分为几个阶段:玩具阶段→业余爱好阶段→探索阶段→成熟的产业阶段。而在我们学习软件开发时也会经历以下几个阶段,首先是玩具阶段,这个阶段可能也就像我们高考完填报志愿时那样,对计算机有点兴趣,幻想着做出什么有意思的软件。这个时候我们对软件这个东西还是不......
  • 《构建之法》阅读笔记3
        最后,邹欣探讨了团队协作和伦理责任在软件构建中的重要性。作者认为,一个成功的软件项目不仅需要技术上的卓越,更需要团队之间的良好合作和沟通。    首先,作者分析了团队协作的关键因素,包括沟通、信任、以及分工合作等方面。他提出了一些有效的团队管理策略和方......
  • 《构建之法》读书笔记1
         《构建之法》一书由软件工程领域的专家邹欣撰写,旨在探索现代软件工程的核心理念和关键实践。软件构建作为软件开发生命周期中的关键环节,对于确保软件质量、可维护性和可扩展性至关重要。在本书的第一篇中,邹欣深入剖析了构建的本质,并提出了一系列构建策略和方法。 ......
  • 《构建之法》阅读笔记1
      《构建之法:现代软件工程》是邹欣所著的一部引人深思的著作,它引领读者深入了解软件工程的本质,并提出了许多新颖而富有洞见的观点。   在书中,邹欣首先强调了软件工程中模块化与组件化的重要性。他指出,通过将复杂的系统分解为更小的模块,我们能够更轻松地管理和维护代码......