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

DGCF论文阅读笔记

时间:2024-03-14 18:45:54浏览次数:24  
标签:嵌入 DGCF 论文 用户 笔记 意图 mathbf 感知 我们

Abstract

​ 提出问题:目前的嵌入函数利用用户-项目关系来丰富表示,从单个用户-项目实例发展到整体交互图。然而,他们在很大程度上以一种统一的方式建模这些关系,而忽略了用户对采用这些物品的意图的多样性,这可能是为了打发时间,为了感兴趣,或为像家庭这样的人购物。这种建模用户兴趣的统一方法很容易导致次优表示,无法建模不同的关系,也无法解开表示中的用户意图

​ 提出方法:在这项工作中,我们特别关注用户项关系的用户意图。因此,我们设计了一个新的模型,解耦图协同滤波(DGCF),以解开这些因素,并产生解耦表示。具体来说,通过为每个用户-项目交互的意图分布进行建模,我们迭代地细化了意图感知的交互图和表示。同时,我们鼓励不同意图的独立。这导致了解耦表示,有效地提取与每个意图相关的信息

Introduction

​ 我们认为先前建模用户-项目关系的方式不足以发现解开的用户意图。关键原因是现有的嵌入函数无法区分用户对不同项的意图——它们要么将用户-项交互视为一个孤立的数据实例,要么将其统一组织为交互图中的一条边来训练神经网络。

pFcOZtO.png

​ 一个潜在的事实被忽略了:一个用户通常有多个意图来采用某些项目;此外,不同的意图可能会激发不同的用户行为。以图1的右边为例,用户观看电影i1是为了打发时间,而不关心i1的属性(如导演)是否与她的兴趣相匹配;另一方面,你与i2的互动可能主要是由她对导演的特殊兴趣驱动的。如果不触及这一事实,之前对用户-项目关系的建模是粗粒度的,它有几个限制:

1)不考虑实际的用户意图很容易导致次优表示;

2)由于噪声行为(如随机点击)通常存在于用户的交互历史中,混淆她的意图使表示对噪声交互的稳定性较弱;

3)用户意图会模糊,并会在表示中高度纠缠,导致可解释性差。

​ 在认识到用户-项目关系的重要作用和先前嵌入函数的局限性后,我们专注于在更细粒度的用户意图层次上探索关系,以解开表示中的这些因素。直观地说,有多种意图会影响用户的行为,比如打发时间、兴趣匹配或为家庭等人购物。我们需要学习每个用户行为的一个关于用户意图的分布,总结每个意图的信心是用户采用一个项目的原因。通过联合分析所有历史交互的分布情况,我们可以得到一组具有意图感知能力的交互图,从而进一步提取出用户意图的信号。

​ 然而,由于存在以下挑战:

  • 如何明确地呈现在一个表示中与每个意图相关的信号是不清楚的,而且仍未被探索;
  • 解耦的质量受意图之间独立性的影响,这需要定制的建模。

​ 在这项工作中,我们开发了一个新的模型,解耦图协同过滤(DGCF),以在用户意图的粒度上解开用户和项目的表示。特别是,我们首先将嵌入的每个用户/项目分割到块中,以潜在的意图耦合每个块。然后,我们应用了一个具有邻居路由和嵌入传播机制的图解耦模块。更正式地说,邻居路由利用节点-邻居亲和力来细化意图感知图,突出了用户和项目之间有影响的关系的重要性。反过来,在这些图上嵌入传播更新节点的软件嵌入。通过迭代地执行这种解耦操作,我们建立了一组具有意图感知能力的图和分块表示。同时,引入了一个独立的建模模块,以鼓励不同意图的独立性。具体来说,一个统计度量,距离相关,被用于意图感知表示。作为这些步骤的结束,我们得到了解耦表示,以及意图的解释图。

​ 我们进一步深入分析了DGCF的解耦表示法关于解耦和可解释性。更具体地说,我们发现所发现的意图可以作为维生素来表示——也就是说,即使是少量的意图,也可以达到类似的性能,而任何意图的缺乏都会严重阻碍结果。此外,我们使用侧边信息(即用户评论)来帮助解释在意图感知图中捕获了哪些信息,并试图理解意图的语义。

​ 简而言之,本文的主要贡献如下:

  • 我们强调了在协作过滤中不同的用户-项关系的重要性,而对这种关系的建模可以导致更好的表示和可解释性。
  • 我们提出了一种新的模型DGCF,它在用户意图的更细粒度上考虑用户-项目关系,并生成解耦表示。

Task Formulation

​ 我们制定了我们的任务,它包括两个子任务:

​ 1)在用户意图的细粒度级别上探索用户-项目关系,

​ 2)生成可解耦的CF表示。

探索用户-项目关系

​ 直观地说,一个用户的行为会受到多种意图的影响,比如打发时间、匹配特定兴趣,以及为家庭等人购物。以电影推荐为例,用户在电影i1上花费时间,因此可能不太关心i1的导演是否符合她的兴趣;然而,你看了i2,因为它的导演是你感兴趣的一个重要因素。显然,不同的意图对激励用户的行为有不同的贡献。

​ 为了对用户和项目之间这种更细粒度的关系进行建模,我们的目标是学习每个行为的用户意图上的分布A(u,i),如下所示:

​ \(\mathbf{A}(u,i)=\Big(A_1(u,i),\cdots,A_K(u,i)\Big),\)

​ 其中,Ak(u,i)反映了第k个意图的置信度,这是用户u采用第i项的原因;k是控制潜在用户意图数量的超参数。联合检查与特定意图k相关的分数,我们可以构造一个意图感知图Gk,它被定义为\(G_k=\{(u,i,A_k(u,i))\}\),其中每个历史交互作用(u,i)代表一条边,并被分配给Ak(u,i)。此外,还建立了一个针对Gk的加权邻接矩阵Ak。因此,我们建立了一组意图感知图G = {G1,···,GK }来呈现不同的用户-项关系,而不是在之前的工作中采用的统一关系

生成解耦表示

​ 我们进一步的目标是利用所发现的意图,为用户和项目生成解耦的表示——即,提取与单个意图相关的信息,作为表示的独立部分。更正式地说,我们的目标是设计一个嵌入函数f(·),以便为用户u输出一个解耦的表示eu,它由K个独立的分量组成:

\(\mathbf{e}_u=(\mathbf{e}_{1u},\mathbf{e}_{2u},\cdots,\mathbf{e}_{Ku}),\)

​ 其中eku是useru的第k个潜在意图影响;为了简单起见,我们使这些组件具有相同的维度,\(\mathbf{e}_{k\textit{u}} \in \mathbb{R}^{\frac{d}{K}}\)。值得强调的是,对于\(k\neq k'\),eku应该独立于ek’u,从而减少语义冗余,鼓励信号最大限度地压缩信号。为此,每个分块表示的eku都建立在意图感知图Gk之上,并综合了相关的连通性。类似地,我们可以为第i项建立表示ei。

Method

模型的结构图如下:

pFgPhWt.png

​ 我们现在提出了解耦图的协同滤波,称为DGCF,如图2所示。它由实现解耦的两个关键组件组成:

​ 1)图解耦模块,首先将每个用户/项目嵌入到块中,耦合每个块的意图,然后将一个新的邻居路由机制整合到图神经网络中,从而解开交互图,细化意图感知表示;

​ 2)独立建模模块,采用距离相关性作为正则化器,以鼓励意图的独立性。DGCF最终产生具有意图感知解释图的解耦表示。

图解耦模块

​ 我们开发了一个GNN模型,称为图解耦层,它将一个新的邻居路由机制合并到嵌入传播中,从而更新这些图的权值。这允许我们区分每个用户-项目连接的不同重要性分数,以细化交互图,进而将信号传播到意图感知块。

意图感知的图嵌入初始化

​ 与主流的CF模型中仅参数化用户/项目ID作为整体表示的不同,我们另外将ID嵌入分离到K个块中,将每个块与潜在的意图关联起来。更正式地说,这种用户嵌入被初始化为:

\(\mathbf{u}=(\mathbf{u}_1,\mathbf{u}_2,\cdots,\mathbf{u}_K),\)

​ 其中u∈Rd为ID嵌入来捕获u的内在特征,$$\mathbf{e}_{k\textit{u}} \in \mathbb{R}^{\frac{d}{K}}$$是u对第k个意图的分块表示。

​ 类似地,\(\mathbf{i}=(\mathbf{i}_1,\mathbf{i}_2,\cdots,\mathbf{i}_K)\)。此后,我们分别采用随机初始化对每个块表示进行初始化,以确保在训练开始时意图之间的差异。值得强调的是,我们与主流CF基线设置了相同的嵌入大小(比如d = 64),而不是将模型参数加倍

意图感知的图初始化

​ 我们认为,之前的工作不足以描述行为背后的丰富用户意图,因为它们只使用一个用户-项目交互图或齐次评级图来展示用户-项目关系。因此,我们为K个潜在意图定义了一组分数矩阵\(\{\mathcal{S}_k|\forall k\mathrm{~}\in\{1,\cdots,K\}\}\)。聚焦于一个有意图感知的矩阵Sk,每个条目Sk(u,i)表示用户u和项目i之间的交互。此外,对于每个交互作用,我们可以构造一个分数向量\(S(u,i)~=~(S_1(u,i),\cdots,S_K(u,i))~\in~\mathbb{R}^K\)。我们统一初始化每个分数向量如下:

​ \(\mathbf{S}(u,i)=(1,\cdots,1),\)

​ 它假定在建模开始时意图的贡献相等。因此,这种得分矩阵Sk可以看作是意图感知图的邻接矩阵。

图解耦层

​ 每个意图k现在包括一组分块表示,\(\{\mathbf{u}_k,\mathbf{i}_k|u\in\mathcal{U},\mathfrak{i}\in I\}\),它专门化了它的特征空间,以及一个由Sk表示的特定交互图。在独立的意图渠道中,我们的目标是从用户和项目之间的高阶连接中提取有用的信息,超越ID嵌入。为此,我们设计了一种新的图解耦层,该层配备了邻居路由和嵌入传播机制,其目标是区分每个用户-项连接在沿着其传播信息时的自适应角色。我们对这样的层g(·)的定义如下:

\(\mathbf{e}_{ku}^{(1)}=g(\mathbf{u}_k,\{\mathbf{i}_k|i\in\mathcal{N}_{u}\})\)

​ 其中,\(\mathbf{e}_{ku}^{(1)}\)是从u的邻居那里收集与意图k相关的信息;Nu是u的一跳邻居(即u所采用的历史项目);上标(1)表示一阶邻居

迭代更新的规则

迭代更新规则的示意图如下:

pFgFPjf.png

​ 然后,如图所示,采用路由机制:首先,我们采用嵌入传播机制,基于意图感知图更新意图感知嵌入;然后依次利用更新的嵌入来细化图并输出意图分布。特别地,我们设置了T个迭代来实现这种迭代更新。在每次迭代t中,\(s_k^t\)和\(u_k^t\)分别记忆邻接矩阵和嵌入的更新值,其中t∈{1,2、···、T},T为末尾迭代。

交叉意图的嵌入传播

​ .在迭代t中,对于目标交互作用(u,i),我们有一个分数向量,为\(S_k(u,i)|\forall k\in\{1,\cdots,K\}\}\)。为了得到它在所有意图上的分布,我们通过softmax函数将这些系数归一化:

\[\tilde{S}_k^t(u,i)=\frac{\exp S_k^t(u,i)}{\sum_{k^{\prime}=1}^K\exp S_{k^{\prime}}^t(u,i)} \]

​ 它能够说明哪些意图应该得到更多的关注来解释每个用户的行为(u,i)。因此,我们可以得到每个意图k的归一化邻接矩阵\(\tilde{\mathbf{S}}_k^t\)。然后,我们在单个图上执行嵌入传播,这样对用户意图k有影响的信息就被编码到表示中。更正式地说,加权和聚合的定义为:

​ \(\mathbf{u}_{k}^{t}=\sum_{i\in\mathcal{N}_{u}}\mathcal{L}_{k}^{t}(u,i)\cdot\mathbf{i}_{k}^{0},\)

​ 其中:

​ \(\mathcal{L}_k^t(u,i)=\frac{\tilde{S}_k^t(u,i)}{\sqrt{D_k^t(u)\cdot D_k^t(i)}},\)

​ 值得强调的是,我们将初始分块表示\({i_k^0}\)聚合为用户u的提炼信息。这只包含了来自一阶连接性的信号,而排除了来自用户u自己和它的高层邻居的信号。

意图感知的图传播

​ 我们根据一个用户(或一个项目)节点的邻居迭代地调整边缘强度。\(u_k^t\)可以看作是局部池Nu = {(u,i)}中的质心,其中包含u与以前交互过的项目。直观地看,由相同意图驱动的历史项目倾向于有相似的分块表征,进一步鼓励他们的关系更加紧密。因此,我们迭代地更新\(S_k^t(u,i)\)。更精确地说,调整质心u与其邻域i之间的强度,如下:

\(S_k^{t+1}(u,i)=S_k^t(u,i)+{\mathbf{u}_k^t}^\top\tanh(\mathbf{i}_i^0)\)

​ 其中\({\mathbf{u}_k^t}^\top\)考虑了\(u_k^t\)和\(i_k^0\)之间的亲和力;而tanh是一个非线性激活函数,以提高模型的表示能力。

​ 经过T次迭代,我们最终得到一个图解耦层的输出,该层包括解耦表示即\(e_{ku}^{(1)}=u_k^T\),以及其意图感知图即\(\tilde{\mathrm{S}}_k^T,\forall k\in \{1,\cdots,K\}\)。当向前执行这种传播时,我们的模型聚集了与每个意图相关的信息,并产生了一个注意力流,这可以看作是解耦背后的解释。

层组合

​ 在使用了第一跳邻居之后,我们进一步堆叠了更多的图解耦层,以从高阶邻居中收集有影响的信号。特别是,这种连接性具有丰富的语义,为了从这种高阶连接中捕获用户意图,我们递归地将l层之后的表示表示为:

​ \(\mathbf{e}_{ku}^{(l)}=g\big(\mathbf{e}_{ku}^{(l-1)},\{\mathbf{e}_{ki}^{(l-1)}|i\in\mathcal{N}_{u}\}\big),\)

​ 每个解耦表示也与它的解释图相关联,以明确地表示意图,即加权邻接矩阵\(A_k^{(l)}\)。这样的解释图能够显示什么信息构造解耦表示的合理证据

​ 在L层之后,我们将不同层的意图感知表示汇总为最终表示,如下:

​ \(\mathbf{e}_{ku}=\mathbf{e}_{ku}^{(0)}+\cdots+\mathbf{e}_{ku}^{(L)},\quad\mathbf{e}_{ki}=\mathbf{e}_{ki}^{(0)}+\cdots+\mathbf{e}_{ki}^{(L)}.\)

​ 通过这样做,我们不仅解耦了CF表示,而且对表示的每个部分进行了解释。值得强调的是,可训练的参数只是在第0层的嵌入

独立建模模块

​ 动态路由机制鼓励基于不同意图条件的分块表示彼此不同。然而,我们认为,要使因素相互独立是不够的——也就是说,因素感知表示之间可能存在冗余。例如,如果一个意图感知表示uk可以被其他的\(\{\mathbf{u}_{k^{\prime}}|k^{\prime}\neq k\}\)推断出来,那么因子k很可能是冗余的,可能会混淆。

​ 因此,我们引入了另一个模块,它可以使用互信息[和距离相关等统计度量作为正则化器,目的是鼓励因子感知表示是独立的。我们在这里应用距离相关性,在未来的工作中留下对互信息的探索。特别地,距离相关性能够表征任意两个成对向量的独立性,从它们的线性和非线性关系;当且仅当这些向量是独立的时,它的系数为零。我们将其表述为:

\(loss_{\mathrm{ind}}=\sum_{k=1}^K\sum_{k^{\prime}=k+1}^KdCor(\mathbf{E}_k,\mathbf{E}_{k^{\prime}}),\)

其中:

\(\mathbf{E}_{k}=[\mathbf{e}_{u_{1}k},\cdots,\mathbf{e}_{u_{N}k},\mathbf{e}_{i_{1}k},\cdots,\mathbf{e}_{i_{M}k}]\in\mathbb{R}^{(M+N)\times\frac dK}\)

是包含N = |U |和M = |I|的嵌入查找表,它建立在所有用户和项目的意图感知表示之上;dCor(·)是距离相关的函数,定义为:

\(dCor(\mathbf{E}_k,\mathbf{E}_{k^{\prime}})=\frac{dCo\upsilon(\mathbf{E}_k,\mathbf{E}_{k^{\prime}})}{\sqrt{dVar(\mathbf{E}_k)\cdot dVar(\mathbf{E}_{k^{\prime}})}}\)

模型优化

交替优化独立损失和BPR损失

标签:嵌入,DGCF,论文,用户,笔记,意图,mathbf,感知,我们
From: https://www.cnblogs.com/anewpro-techshare/p/18073678

相关文章

  • 防火墙--学习笔记
    防火墙--学习笔记防火墙分类:硬件:华为思科深信服软件:Windows:360电脑管家linux:firewalldiptables防火墙的作用:隔离严格过滤出站入站firewalld设计流程定义不同区域每个区域制定自己配置通过的或者拦截--数据包firewalld默认九大区域常用4个区域pub......
  • 定时任务---学习笔记
    定时任务---学习笔记定时任务自动完成操作命令夜里自动备份数据cp/data/backup自动清理磁盘软件:cronie查看软件安装目录rpm-qacronierpm-qlcronie关闭systemctlstopcronie启动systemctlstartcronie用户定时任务配置讲解:/var/spool/cron定时任务保......
  • 博弈论[学习笔记]
    对称理论初始局面可以分成两个相同“子局面”,\(S=A+A\),而先手做什么后手都可以效仿,因此先手为P。分解理论简化:将\(S=A+C+C\)通过对称理论转化为\(A\)的过程称为简化,不能简化的称为最简局面。N/P运算规律\(N+P=P+N=N\)\(P+P=P\)\(N+N=N/P\),此时要尽量拖延整体局面达到\(P\)......
  • 学习C51单片机——独立按键控制数码管显示数字(学习笔记Keil5)
    学习C51单片机——独立按键控制数码管显示数字(学习笔记Keil5)文章目录学习C51单片机——独立按键控制数码管显示数字(学习笔记Keil5)1、按键控制数码管第一位显示数字22、按键控制数码管第一位按顺序显示数字0~91、按键控制数码管第一位显示数字2按键按下数码管第一位......
  • Coursera自然语言处理专项课程01:Natural Language Processing with Classification an
    NaturalLanguageProcessingwithClassificationandVectorSpacesCourseCertificate本文是NaturalLanguageProcessingwithClassificationandVectorSpaces这门课的学习笔记,仅供个人学习使用,如有侵权,请联系删除。文章目录NaturalLanguageProcessingwi......
  • Java学习笔记——第十五天
    集合进阶(一)集合体系结构单列集合(Collection)Collection代表单列集合,每个元素(数据)只包含一个值。双列集合(Map)Map代表双列集合,每个元素包含两个值(键值对)。Collection集合体系Collection集合体系的特点List系列集合:添加的元素有序、可重复、有索引。ArrayList、LinkedList......
  • MYSQL学习笔记26: 多表查询|子查询
    多表查询|子查询行子查询查询与张无忌工资相同,且直属领导相同的员工#写法1select*fromempwheresalary=(selectsalaryfromempwherename='张无忌')andmanagerId=(selectmanagerIdfromempwherename='张无忌');#可以合并起来,写入一个集合selec......
  • csapp读书笔记——链接
    链接链接是将各种代码和数据收集并组合成一个文件的过程,最终得到的文件可以被加载到内存执行在大型应用程序的开发过程中,我么不可能将所有的功能实现都放在一个源文件中,而是将它分解为更小、更容易管理的模块。当我们修改其中一个模块时,我们只需要重新编译这个修改后的模块,而其......
  • ELK日志处理部署笔记
    ELK概念简介ELK建立在三个服务上即Elasticsearch::日志检索和储存Logstash::日志收集分析处理Kibana::日志可视化Elasticsearch集群模式Elasticsearch采用了经典的raft模式,推荐将一部分专门配置为候选主节点(master-eligiblenodes),而另一部分节点则仅作为......
  • 滴水逆向笔记系列-c语言总结6-20.多级指针 数组指针 函数指针-21.位运算-22.内存分配
    第二十课c语言13多级指针数组指针函数指针1.多级指针反汇编一二级指针可以看到p1==*(p1+0)==p1[0]本来一直没想懂为什么是movsxecx,byteptr[eax],是byte,才发现p1是char类型,所以才得用movsx拓展(p1+2)==p1[2],指针可以用和[]取值,他们是一样的(((p3+1)+2)+3)==p3[......