Abstract
提出问题:目前的嵌入函数利用用户-项目关系来丰富表示,从单个用户-项目实例发展到整体交互图。然而,他们在很大程度上以一种统一的方式建模这些关系,而忽略了用户对采用这些物品的意图的多样性,这可能是为了打发时间,为了感兴趣,或为像家庭这样的人购物。这种建模用户兴趣的统一方法很容易导致次优表示,无法建模不同的关系,也无法解开表示中的用户意图
提出方法:在这项工作中,我们特别关注用户项关系的用户意图。因此,我们设计了一个新的模型,解耦图协同滤波(DGCF),以解开这些因素,并产生解耦表示。具体来说,通过为每个用户-项目交互的意图分布进行建模,我们迭代地细化了意图感知的交互图和表示。同时,我们鼓励不同意图的独立。这导致了解耦表示,有效地提取与每个意图相关的信息
Introduction
我们认为先前建模用户-项目关系的方式不足以发现解开的用户意图。关键原因是现有的嵌入函数无法区分用户对不同项的意图——它们要么将用户-项交互视为一个孤立的数据实例,要么将其统一组织为交互图中的一条边来训练神经网络。
一个潜在的事实被忽略了:一个用户通常有多个意图来采用某些项目;此外,不同的意图可能会激发不同的用户行为。以图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
模型的结构图如下:
我们现在提出了解耦图的协同滤波,称为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)表示一阶邻居
迭代更新的规则
迭代更新规则的示意图如下:
然后,如图所示,采用路由机制:首先,我们采用嵌入传播机制,基于意图感知图更新意图感知嵌入;然后依次利用更新的嵌入来细化图并输出意图分布。特别地,我们设置了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