该论文使用图神经网络GCN和循环神经RNN结合进行推荐系统中矩阵的补全。
提出两种方法:多图卷积+RNN
矩阵分解+各自的图卷积+RNN:
矩阵补全的目标函数:
可以看作使得补全矩阵的秩较低的问题,即
加入预测值和真实值之间的差异大小,使用核范数替代矩阵的秩:
最终目标函数是:
其中gc表示列图,是用户之间的关系图,gr表示行图,是item 之间的关系
W是用户图的邻接矩阵,H是item图的邻接矩阵。
考虑图上的平滑度计算Dirichlet norm:即相似的节点应该有相似的特征表示:
Dirichlet norm计算:
训练过程:
其中(1)forward函数:(主要看了矩阵分解的处理方法的代码)
实验中r取10,GCNN每个图节点得到q维的特征向量,图神经网络的输出作为RNN的输入,RNN的输出是32维,再使用一个全连接层把输出维度变为r维得到dH,dW,之后再去更新W和H矩阵,得到下一个时刻的新的H,W矩阵。
在T(10)次时间迭代中经过图神经网络和RNN得到更新的Hout,Wout的值
(2)之后使用得到的Hout,Wout,用户图和item图的拉普拉斯矩阵,
M代表训练集和验证集合并的一个用户-item矩阵,allmask代表和M形状相同,在训练集和验证集存在的矩阵上的位置都置为1,表示只考虑这些数据。
使用这些值计算得到目标函数loss
(3) 进行反向传播,计算梯度值,更新图神经网络和RNN网络中的各项系数,梯度清零。
(4) 使用Hout,Wout相乘得到矩阵Xpred,是预测得到的用户-item矩阵,之后与测试集比较,计算均方根误差。
疑惑:为什么使用RNN预测的不是矩阵W,H,而是dH,dW,使用这个网络的好处在哪?