Neural Graph Matching based Collaborative Filtering (SIGIR’21)
可以理解为一个双塔模型,user的特征输入到一个塔里,item的特征输入到一个塔里,两个塔的输出做match。这里用GNN来实现塔,所以最终输出可以看作是两个Graph做match。
双塔模型一般到最后特征向量级别才会做交互,这里在塔中部就做了交互,又不严格算双塔,因为这样双塔的工程优势就没了,所以这篇属于双塔但又不完全塔。
![image-20220225133819451](https://gitee.com/lichifdu/pictures/raw/master/img/image-20220225133819451.png)
文章的motivation可以用这张图解释,右图是已有的工作,将user和item的特征放在一起,自动的去组合高阶特征。这篇文章的想法是user(item) 的特征应该是 Inner interaction,user-item的特征之间应该是Cross interaction。
Method
![image-20220225142254278](https://gitee.com/lichifdu/pictures/raw/master/img/image-20220225142254278.png)
我们先看模型图,模型图中除了 ”Node Matching“ 部分不看文章基本就知道怎么回事,先解释这些模块。
和Fi-GNN一样,以feature为节点建立特征图,这里user、item各一个全连接的特征图。所以蓝色框框模块的输出 z z z 可以看作是Fi-GNN的输出,这里的聚合函数类似NGCF:
z i j = f neural ( u i , u j ) , f neural ∈ R 2 × d → R d z i = ∑ j ∈ N i z i j z_{i j}=f_{\text {neural }}\left(u_{i}, u_{j}\right), f_{\text {neural }} \in \mathbb{R}^{2 \times d} \rightarrow \mathbb{R}^{d}\\ z_{i}=\sum_{j \in N_{i}} z_{i j} zij=fneural (ui,uj),f