GNN4Rec系列旨在介绍图神经网络与推荐系统结合的一些工作。第一期主要介绍了用GNN做特征交叉的几篇工作.
GNN4Rec-1:如何用GNN来进行特征交互?
本期介绍下在用GNN学习用户表示的过程中,如何分离出用户的多样化偏好和意图。主要涉及的技术是解耦表征。
解耦表征(Disentangled Representations)通俗一点的理解就是发现对模型预测起决定性作用的抽象特征。
在18年时,谷歌DeepMind团队对 Disentangled Representations 进行了一个定义,即:表示向量空间中的不变子空间(invariant subspaces)是独立表示的。这样就可以去发现数据中的一部分特征对结果恒定的表征[1]。
[1] Higgins, Irina, et al. Towards a definition of disentangled representations.
感觉理论直接理解会比较困难,本文重点介绍一下近些年分离表征与图网络结合的一些应用,包括推荐系统和CV,这样理解起来感觉会更直观一些。
- 20SIGIR Disentangled graph collaborative filtering
- 21AAAI Disentangled motif-aware graph learning for phrase grounding
推荐系统中的应用(20 SIGIR)
推荐系统的东西还有点多,所以就不每个都说了,随机选了一个进行比较详细的分析,其他的就随便带过好了。
- 论文标题:Disentangled graph collaborative filtering
- 论文作者:Xiang Wang; Hongye Jin; An Zhang; Xiangnan He; Tong Xu; Tat-Seng Chua
- 论文地址:https://dl.acm.org/doi/pdf/10.1145/3397271.3401137
协同过滤是推荐系统里的一个经典技术。这篇文章的目的是通过对图特征解耦的方式使得用户意图更加明确,比如不是所有的购物都是给自己买的,也有可能是临时给室友儿子买的,这个时候很有可能购买的物品不是用户本身的兴趣点,也不会长期选择这一类物品。
因此这个工作更关心用户意图上的细粒度上如何分离,鼓励意图独立,如图中的k可以表示不同的意图:
这个问题的建模分为3个部分:
- 通用的对用户,商品的交互关系建模,并且对他们进行编码;
- 图解耦模块
- 解耦表征:
由于需要用户意图,那么基于不同意图的交互形式就可以被分解为
K个:
\mathbf{A}(u, i)=\left(A_{1}(u, i), \cdots, A_{K}(u, i)\right),
u和
i分别表示用户和商品。同时,图也可以表示成
G=\left\{G_{1}, \cdots, G_{K}\right\}。对于用户
u来说,由于最终目标是需要分离不同意图,所以用户可以被根据其意图被分离成
\mathbf{e}_{u}=\left(\mathbf{e}_{1 u}, \mathbf{e}_{2 u}, \cdots, \mathbf{e}_{K u}\right),同理,这种形式也可以对商品
i进行分离。
首先对节点特征,即用户于商品进行编码。由于需要独立,所以以用户为例,编码信息可以写成:
\mathbf{u}=\left(\mathbf{u}_{1}, \mathbf{u}_{2}, \cdots, \mathbf{u}_{K}\right), \mathbf{u}_{k} \in \mathbb{R} \frac{d}{K}。
对于用户
u和商品
i之间存在一个分数,在第
k个意图下可以表示成:
\mathrm{S}(u, i)=\left(S_{1}(u, i), \cdots, S_{K}(u, i)\right) \in \mathbb{R}^{K}。
这样,
S实际上也是一种关于意图的邻接矩阵。用户在某种意图下的表征可以表示为:
\mathbf{e}_{k u}^{(1)}=g\left(\mathbf{u}_{k},\left\{\mathbf{i}_{k} \mid i \in \mathcal{N}_{u}\right\}\right),
\mathcal{N}_{u}表示1阶邻居。利用抽取的独立意图,再重新赋值给原来的节点,相当于一个更新的过程,这里用
t \in\{1,2, \cdots, T\}表示更新次数,更新示意图如图所示:
节点更新时有一些细节需要注意,比如
S是需要归一化的,写作:
\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)}。
并且,用户节点是采用sum的形式更新的:
\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)}},
D_{k}^{t}(u)=\sum i^{\prime} \in \mathcal{N}_{u} \tilde{S}_{k}^{t}\left(u, i^{\prime}\right),
\mathcal{L}_{k}^{t}(u, i) 表示
\tilde{S}_{k}^{t}(u, i)的拉普拉斯矩阵。同时,每次迭代也需要对
S进行更新,即对意图强度进行调整,得到不同的意图空间:
S_{k}^{t+1}(u, i)=S_{k}^{t}(u, i)+\mathbf{u}_{k}^{t \top} \tanh \left(\mathbf{i}_{i}^{0}\right)。
最后,图网络的第
l层可以写作:
\mathbf{e}_{k u}^{(l)}=g\left(\mathbf{e}_{k u}^{(l-1)},\left\{\mathbf{e}_{k i}^{(l-1)} \mid i \in \mathcal{N}_{u}\right\}\right)。
最终的用户和商品的表达为将几层的信息加在一起,为:
\mathbf{e}_{k u}=\mathbf{e}_{k u}^{(0)}+\cdots+\mathbf{e}_{k u}^{(L)}, \quad \mathbf{e}_{k i}=\mathbf{e}_{k i}^{(0)}+\cdots+\mathbf{e}_{k i}^{(L)}。
这个模型的损失函数同样也是由相关系数构建的,希望意图之间的距离能更独立一些,所以写成:
\text { loss }_{\text {ind }}=\sum_{k=1}^{K} \sum_{k^{\prime}=k+1}^{K} d \operatorname{Cor}\left(\mathbf{E}_{k}, \mathbf{E}_{k^{\prime}}\right),
d \operatorname{Cor}\left(\mathbf{E}_{k}, \mathbf{E}_{k^{\prime}}\right)=\frac{d \operatorname{Cov}\left(\mathbf{E}_{k}, \mathbf{E}_{k^{\prime}}\right)}{\sqrt{d \operatorname{Var}\left(\mathbf{E}_{k}\right) \cdot d \operatorname{Var}\left(\mathbf{E}_{k^{\prime}}\right)}},
\mathbf{E}_{k}=\left[\mathbf{e}_{u_{1} k}, \cdots, \mathbf{e}_{u_{N} k}, \mathbf{e}_{i_{1} k}, \cdots, \mathbf{e}_{i_{M} k}\right] \in \mathbb{R}^{(M+N) \times \frac{d}{K}}。
同时,作者采用BPR loss设计优化目标:
l o s s_{\mathrm{BPR}}=\sum_{(u, i, j) \in O}-\ln \sigma\left(\hat{y}_{u i}-\hat{y}_{u j}\right)+\lambda\|\Theta\|_{2}^{2},
ij分别表示正负例采样。
实验结果
还是就搬一个样例分析来看。
这里对比了第10362号用户和10360号用户的结果。结合文字部分,可以发现这两种意图分别在意的是服务和价格,也对应了不同的商品。
其他的推荐系统的相关文章
另外还有两个文章,翻论文的时候顺便翻到的,这里就不仔细谈了。
- 论文标题:DisenHAN: Disentangled Heterogeneous Graph Attention Network for Recommendation. (20 CIKM)
- 论文作者:Yifan Wang; Suyao Tang; Yuntong Lei; Weiping Song; Sheng Wang; Ming Zhang
- 论文地址:https://dl.acm.org/doi/pdf/10.1145/3340531.3411996
与之前的文章相同,这篇文章也是解决用户由潜在的多种购物意图。所以,其潜在子空间也是建立在用户上的意图差异,子空间的划分方法也与上文相同,通过线性函数+归一化进行映射。
模型示意图展示了整个流程。不同的节点表示不同的类型,颜色则表示不同的3种潜在意图特征。对于目标节点t从图中可以看出是依靠其邻居的潜在意图叠加而成的,并且可以不断叠加。
- 论文标题:Disentangling User Interest and Conformity for Recommendation with Causal Embedding.(21 WWW)
- 论文作者:Yu Zheng; Chen Gao; Xiang Li; Xiangnan He; Depeng Jin; Yong Li
- 论文地址:https://dl.acm.org/doi/pdf/10.1145/3442381.3449788
这篇文章是解决推荐系统本身可能会推荐更流行的商品,从用户少量数据中挖掘其本身更感兴趣的商品。与之前的文章不同,这篇文章直接将特征解成两个部分,一个是感兴趣的评分,一个是一致性评分,即随大流的商品。同时根据因果模型,loss函数也是可以从这两个层面进行分别设计的。
示意图展示了这个模型的基本配置。a)是一个因果建模,展示了用户点击可以由两个原因造成;b)建模了用户与商品的特征,根据因果关系设计的loss可以迫使这两种表征分离。
cv中的应用(21 AAAI)
- 论文标题:Disentangled motif-aware graph learning for phrase grounding
- 论文作者:Zongshen Mu;Siliang Tang;Jie Tan;Qiang Yu;Yueting Zhuang
- 论文地址:https://www.aaai.org/AAAI21Papers/AAAI-2589.MuZ.pdf
这篇文章主要解决的问题是短语定位(Phrase Grounding),即需要从复杂的图像语义中分离短语并且进行匹配。在这个示意图里可以看出来对于同样一张图像,如果从不同的层面去理解,是可以由不同的对应关系的。
比如,在空间上两个荡秋千的小朋友是相邻的,有一组关系,同时这个小女孩本身的服饰也是存在一组关系。由此这个小女孩的图像就可以分解为对应不同组关系的多个潜在特征。
如今面临需要解决的问题:
- 图有可能是包含噪声的假连接;
- 由于关系权重是一样的,所以无法表示高阶关系,比如图例中的"child”的关系包括“woman”和“swing",但明显和这两个实体缠身的关系是不同的;
- 数据集中的共现图像会影响图结构的构建并最终影响模型的鲁棒性和泛化能力。
为了解决上述问题,作者提出了Disentangled Interventional Graph Network (DIGN)。
这个模型重点包括4个部分:
- 短语和视觉特征的编码;
- 两个解耦的图网络;
- 对图的结果进行干涉;
- 跨模态的transformer。
图网络构建
首先这个图可以写作
\mathcal{G}_{T}=\left(\mathcal{V}^{T}, \mathcal{E}^{T}\right),其中
\mathcal{V}^{T}=\left\{t_{i}\right\}_{i=1}^{n}表示短语编码。首先对特征进行解耦表征,设
{h_i}^T为
t_i的最终输出,
K是一个控制隐特征(latent motif)的个数,并且希望
h_{i, k}^{T} \in \mathbb{R} \frac{d_{\text {out }}^{T}}{K}的成分互相独立。由于节点特征被独立了,那么图也随之改变,就有了
K个独立的图,即
\mathcal{G}_{T, k}=\left\{\mathcal{V}_{k}^{T}, \mathcal{E}^{T}\right\},对此可以用子图的形式对他们进行建模
\mathcal{G}_{T}=\left\{\mathcal{G}_{T, 1}, \mathcal{G}_{T, 2}, \ldots, \mathcal{G}_{T, K}\right\}。
为了达到这个目标,需要将原始的混合特征划分到
K个子空间里去,作者采用线性的方法对特征进行映射,在每个
k的子空间上,特征应当表征为:
t_{i, k}^{0}=\frac{\sigma\left(W_{k}^{T^{0}} t_{i}+b_{k}^{T^{0}}\right)}{\left.\| \sigma\left(W_{k}^{T^{0}} t_{i}+b_{k}^{T}\right)^{0}\right) \|_{2}}。
之后,对节点信息进行提取:
t_{i, k}^{1}=\sigma\left(W_{e k}^{T^{1}} t_{i, k}^{0}+\sum_{j \in \mathcal{N}_{i}^{T}} a_{j, k}^{T}{ }^{1} W_{k}^{T^{1}} t_{j, k}^{0}\right),
a_{j, k}^{T}=\frac{\exp \left(t_{j, k}^{0}{ }^{\top} t_{i, k}^{0}\right)}{\sum_{k^{\prime}=1}^{K} \exp \left(t_{j, k^{\prime}}^{0} t_{i, k^{\prime}}^{0}\right)}。
最终,第
k个子空间上的节点特征可以被表示为:
h_{i, k}^{T}=t_{i, k}^{0}+t_{i, k}^{1}+\ldots+t_{i, k}^{L}。
对图像上的图构建与之相似,就跳过了。
视觉表征干预
图像上的图网络与文本的网络构建是一致的,但是视觉特征可能更容易受到数据集共现的偏差影响。因此,对于视觉的图,作者采用了干预的方法增加模型的稳定性。伪代码展示如下:
VDGN指视觉解耦的图网络(visual disentangled graph network)
训练对象
由于模型目标是使得子空间里的特征相距较大,所以采用相关系数的计算方法,当相关系数趋近于0,那么两个子空间的距离就应当相距较远。具体形式如下:
\ell_{i n d}^{T}=\sum_{i=1}^{n} \sum_{k=1}^{K} \sum_{k^{\prime}=k+1}^{K} \rho\left(h_{i, k}^{T}, h_{i, k^{\prime}}^{T}\right),
\ell_{i n d}^{V}=\sum_{i=1}^{m} \sum_{k=1}^{K} \sum_{k^{\prime}=k+1}^{K} \rho\left(h_{i, k}^{V}, h_{i, k^{\prime}}^{V}\right),
\rho\left(h_{i, k}^{T}, h_{i, k^{\prime}}^{T}\right)=\frac{\operatorname{Cov}\left(h_{i, k}^{T}, h_{i, k^{\prime}}^{T}\right)}{\sqrt{D\left(h_{i, k}^{T}\right) \cdot D\left(h_{i, k^{\prime}}^{T}\right.}}。
最后,加入一项针对ground truth的loss,采用InfoNCE的形式:
\ell_{\text {ground }}=\sum_{i=1}^{n}-\log \frac{\exp \left(\operatorname{sim}\left(p_{i}, b_{i}\right) / \tau\right)}{\sum_{j=1}^{2 M-1} \exp \left(\operatorname{sim}\left(p_{i}, b_{j}\right) / \tau\right)},
其中,
b_i为正确的匹配区域,
p_i为短语,
sim()为相似度函数,即乘积。loss最终形式为:
\mathcal{L}=\ell_{i n d}^{T}+\ell_{i n d}^{V}+\ell_{\text {ground }}。
实验结果
这里就展示一个示例
如图所示在不同的语义分析中模型均能够将关系模块提取出来,并且可以发现图像中的感知语境会比短语图中丰富很多。
后记
分离表征还有很多有趣的文章,比如图生成问题(Interpretable Deep Graph Generation with Node-edge Co-disentanglement, 20 KDD),改进传统GCN的(Disentangled graph convolutional networks, 21 ICML)。