Graph Convolutional Matrix Completion——tensorflow代码理解④算法思路

虽说在问题背景上,这片模型是基于Geometric matrix completion with recurrent multi-graph neural networks的改进,但究其算法则是采用的Variational graph auto-encoders
是将前者的GCN+LSTM换成了更加整体性的图自编码器
以下自编码器的基础知识来自https://zhuanlan.zhihu.com/p/78340397
本模型的理解参考自https://blog.csdn.net/yyl424525/article/details/102747805

1.变分自编码器

基本思路是由编码器和解码器两部分组成,前者是原始数据→嵌入(低维向量),后者是嵌入到原始数据。在这里插入图片描述

这里编码和解码的起始都涉及到采样的问题,编码还好说,而要解码(生成)最终的结果足够好,则解码时采样的范围必须是由真实原始数据得来的嵌入。
于是得出结论,要将解码采样的范围限定为嵌入们满足的分布中。在这里插入图片描述

此时存在的问题是,采的样又无法与原始数据对应上,于是对原始数据逐个构建分布,再逐个采样进而解码。在这里插入图片描述

2.变分图自编码器

在这里插入图片描述
已知一个邻接矩阵A和一个节点特征矩阵X
1)先通过GCN进行编码,得到每个节点的嵌入,即得到嵌入矩阵Z
2)在解码阶段,有Z和 Z T Z^T ZT为参数,两两计算两点之间存在边的概率来重构图
p ( A ∣ Z ) = ∏ i = 1 N ∏ j = 1 N p ( A i j ∣ z i , z j ) p(A|Z)=\prod_{i=1}^N\prod_{j=1}^Np(A_{ij}|z_i,z_j) p(AZ)=i=1Nj=1Np(Aijzi,zj)
其中 p ( A i j = 1 ∣ z i , z j ) = s i g m o i d ( z i T z j ) p(A_{ij}=1|z_i,z_j)=sigmoid(z_i^Tz_j) p(Aij=1zi,zj)=sigmoid(ziTzj)

3.本文的图自编码器

1)图卷积层StackGCN

已知用户和电影各自的特征矩阵 X u , X v X_u,X_v XuXv
五个评级分别的邻接矩阵 M 1 M_1 M1 M 5 M_5 M5
其中邻接矩阵是0,1为元素
通过图卷积GCN作为编码器,输出用户和电影的嵌入矩阵 Z u , Z v Z_u,Z_v ZuZv
这里的图卷积过程表示信息的传递,
μ = 1 c i j W r x j μ=\frac{1}{c_{ij}}W_rx_j μ=cij1Wrxj
其中 1 c i j \frac{1}{c_{ij}} cij1表示邻接矩阵的正则化,其实就是 D − 1 2 M D − 1 2 D^{-\frac{1}{2}}MD^{-\frac{1}{2}} D21MD21
类似于同构图情境下对拉普拉斯矩阵的正则化,不过这里异构二部图对应的原始的邻接矩阵是矩形阵,无法进行对称矩阵才能做的拉普拉斯变化,所以采用原始图神经网络 σ ( A H W ) σ(AHW) σ(AHW)这样原始的形式来计算
在消息传递之后,对每个节点都进行消息累计操作:对每个评级下该节点的所有邻居求和(stack),累积成一个矢量嵌入,再输出给下一层

2)稠密层Dense

类似于一个全连接层,对所有的嵌入通过一次权重,通过一次激活,如果有辅助信息也填上
原论文说,这个稠密层单纯的堆叠效果一般,和卷积层组合会好一些

3)混合层BilinearMixture

双线性解码器,对上面得到的嵌入做双线性运算 a = ( z i u ) T Q r z j v a=(z_i^u)^TQ_rz_j^v a=(ziu)TQrzjv,其中 Q r Q_r Qr是学习参数,做 σ ( a + b ) σ(a+b) σ(a+b)进行训练,再做softmax概率分布乘以对应的评级作为预测值,真实值通过labels索引得到,做rmse作为评价标准,做交叉熵作为损失传播

4.感想

先是论文原文提到的点,
1)首先区别于Geometric matrix completion with recurrent multi-graph neural networks这篇文章的算法,将LSTM改进为图自编码器,速度有显著的提升,提出通过使用端到端学习技术对图结构数据进行建模,通常可以显着改善结果
这样带来一个问题,
首先常用的图卷积是同构图,对称矩阵,可拉普拉斯变化,而现在的问题情境是一个矩形阵,没有拉普拉斯变化,所以正如Geometric matrix completion with recurrent multi-graph neural networks这篇文章,考虑进行矩阵分解,得到两个对称矩阵再往下撸,所以他可以考虑用切比雪夫多项式来改进那个卷积核
但现在这篇文章则是直接在异构二部图上,对矩形阵直接进行图卷积,采用原始的邻接矩阵进行图卷积,可以说和切比雪夫那些东西应该是不搭噶了
文章最后关于这一点原文也做了分析,
首先前者结果上是对用户和电影分别做信息传递,其实信息被束缚在用户或电影里面,而后者直接在异构图上研究,信息是流通的
其次,前者确实是采用切比雪夫多项式考察p阶邻居,而后者是对二部图做一阶近似,就效果说上确实是提高了,但解释性上还是不太行
2)dropout
为了提高泛化能力不过拟合,正常CNN是常用的,但在图神经网络中,GNN的本意是考察节点关联性,我的理解是这是很全联接的,这也是一开始图神经网络较难推广到更大型数据集上的一个问题,像graphsage才参考CNN的池化引入采样
不过这里还是引入了dropout,以一定概率随机删除某节点的所有关联信息
论文提到,这样反而更能有效地进行正则化,反而能让嵌入更不会受影响
3)权值共享
由于并不是所有的用户和电影对于同一个评级位都有相应的评分,这可能导致在卷积层中的权重矩阵的某些列优化得没有其他列频繁
所以,在不同评级对应的邻接矩阵M间使用权值共享,可以改善一些
4)辅助信息
本质上是解决冷启动问题,对于还没有建立起关联的节点,参考它的元数据
不过我就产生了一个疑问,Geometric matrix completion with recurrent multi-graph neural networks的代码中,对用户和电影本身构建了两个对称矩阵,用在它的损失函数里,源码并没有说明这俩矩阵是咋来的,毕竟它采用的数据集ml-100k可没有,
所以我的理解是参考用户或电影的这些元数据做的相似度矩阵,那么在本文中把这些元数据作为辅助信息在旁支进行训练算是对相似度矩阵的改进吗
5)mini-batch
也有应用于ml-1m这样的大规模图上,所以又引入了批次,这个在我改用数据集后再来研究吧

但是我实在不明白为什么图卷积这里AXW的X,也即是用户或电影的特征(不是辅助信息),为什么要构造成一个形如[I|0]这样一个单位矩阵一个零矩阵组成的玩意,它能表示什么意思,怎么它就是特征了

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值