GNN ——> 推荐系统(两个算法)
文章目录
前言
部分资源来自于Youtube
一、GC-MC
1、总体结构
首先进行one-hot编码,得到X矩阵,结合M(用户-商品交互矩阵)进行编码工作,得到U和V矩阵
然后对U和V进行解码工作,得到一个新的交互矩阵,其中原本的空白值也得到了填充
2、Graph Encoder部分
对一个用户u来说,评分过的商品得到了不同的分数,将相同评分的商品统一的利用Wi矩阵进行转化取平均,将不同分数得到的向量结果进行累加、激活,和矩阵W进行相乘,就得到了hui的表示,如下图所示(对于商品v也一样)
3、Graph Decoder部分
对于useri和Itemj对不同的评分定义为Mij,对应的不同概率通过softmax计算出来,Qr和QS都是可训练的参数矩阵,便于结合u和v的维度
最后将基于不同评分下的预测矩阵进行有权值的累加,就得到了最后的预测值
4、损失函数
损失函数的定义如下:
通过已知的评分对预测结果进行误差计算,即评分对应的Mij概率p对应的logp作为损失进行梯度下降,注意这里的概率p是0~1区间的,logp<0
5、实验结果
6、不足
输入维度过高,和用户、商品数息息相关
对于新的用户和商品有冷启动问题
二、STAR-GCN
根据以上的不足,STAR-GCN做了很多改进
1、总体架构(比较)
比GCMC相对而言,stacking了很多对编码器和解码器,并且权重矩阵是共享的
2、Transductive 和 Inductive(归纳和直推)
GC-MC是transductive
STAR-GCN 是 Inductive
如何实现直推?——mask
训练过程中一定几率下把部分的输入节点的embedding变成全0,这样模型就有了可以对低信息节点预测的能力,当新进来节点的时候,只需要少量的连接关系产生,就可以产生还不错的预测结果
下图可以直观的看出两个模型解码器的区别,GCMC如前文所说,主要是对已知评分链路的预测,而STAR-GCN主要是对X矩阵的还原(图中绿色的公式)
3、LOSS部分
L是所有编码解码器对中产生的Lt和Lr累加产生的公式
Lt是在编码后根据预测值产生的误差。公式在下图中可以看到,其实就是通过编码之后产生的User与Item的embedding进行内积运算(我们认为这就是我们需要的预测值,很常见的想法),然后与真实的评分作差值
Lr是在解码后与原本X相比产生的误差
公式如下图所示
4、leakage Issue的避免
预测的时候可能会遇到这样的问题:预测值已经在训练中就已经被纳入计算了
这个事GCN常见的问题,因为GCN训练的时候会将所有的边通过邻接矩阵纳入进来,答案就被涵盖进来,就会出现过拟合问题
如何解决:把需要预测的边直接拿掉
下图中U1和V1之间有边,但是训练时候不能放进去
5、实验结果
从实验结果来看可以发现,Lr和Leakage Issue的避免都是有显著作用的
recurrent指标代表的是每对编解码器是否通用参数,但是不同数据下是否相同差别不是很明显,所以为了降低时间复杂度,可以共享参数
可用的训练数据的信息越大,对模型的提升效果不明显,代表了该算法较好地解决了cold start的问题。