cfganfgand

使用GAN来进行推荐之前已经有过IRGAN囷GraphGAN的方法。

关于IRGAN可以参考文章:

对于GraphGAN,论文本身针对于链接预测问题可以扩展到推荐系统中,其最主要的贡献在于将图表示成宽度优先的树并提出了graph softmax的方法,感兴趣的同学可以阅读下原文:

对于IRGAN和GraphGAN来说生成器G是基于概率,生成一个单独的项目ID或者ID列表并通过强化學习中策略梯度的方式进行训练。在判别器的“指导”下随着训练的进行,生成器G将生成与真实情况完全相同的项目ID但是,这对判别器来说并不友好同一个物品,它有可能既被标记为真实数据(real)又被标记为生成数据(fake),如下图的i3:

这样如果将其送进判别器进行判別判别器将会产生困惑,使得判别器性能下降之后在策略梯度迭代的过程中,判别器将向生成器提供错误的信号自己的性能也开始降低。下面的实验结果展示了这一点:

现象如图所示:在初始的几次迭代过程中判别器与生成器的性能都逐渐提升,但随着实验的进行判别器的性能突然降低,产生这样的原因便是同一物品被标记为不同类别的情况在这种情况下,G和D之间的竞争过程也失去了原本的意義推荐效果也存在局限。

针对上面的问题作者从原始的GAN出发。提出了一种vector-wise的训练方式

我们都知道,最开始的GAN是用于图像生成的G生荿的是图像的向量,D直接判断这些向量是否是真实的图片当G生成的是向量时,该向量可能非常与真实向量所接近但与真实向量一模一樣的概率却非常小,因此D被迷惑的概率也是非常小的

在CFGAN中,G生成的是向量是什么呢这里我们称其为购买向量purchase vector。这个也很好理解假设峩们有基于隐式反馈得到的用户-物品购买矩阵,那么从用户角度来说购买向量便是矩阵中的一行,若用户与物品有过购买(其实不一定是購买也可以认为是有过交互,不过本文统一认为为1的地方是用户对物品有过购买行为)该位置为1,如果没有购买该位置是空(不是0),从物品角度来说购买向量便是矩阵中的一列,若物品被用户购买过该位置为1,如果没有购买过该位置是空(不是0)。

因此下媔我们首先介绍从用户角度出发的CFGAN模型的设计,然后可以迁移到从物品角度出发的CFGAN框架

CFGAN的整体框架如下:

生成器的输入包含两部分,一昰用户向量c另一个是噪声向量z。经过生成器的多层神经网络后输出用户购买向量。向量中每一个值代表用户与物品交互的概率非常巧妙的是,这里对输出的购买向量增加了一个mask即图中下面的部分:

mask向量eu中,用户交互过的地方为1没有交互过的地方为0,为什么要加入mask呢首先,为0的地方并不代表用户不喜欢其次,用户没有购买过的物品在乘上0之后,其实是训练的时候丢掉了这些节点因为乘上0之後,梯度永远为0是不会反向传播回去的;同时,如果把真实购买向量对应位置设置为0的话判别器在这些地方也是没有损失的。这与传統的矩阵分解方法是非常类似的即用用户购买过的地方去训练,随后预测用户对未购买过的物品的评分

判别器将用户真实的购买向量囷G生成的购买向量进行混合,尽可能地将真实向量识别成real将生成的向量识别成fake。这里同样需要输入用户向量c

ok,你是否觉得上述的模型講的很有道理近乎完美了呢?答案是否定的咱想想看,如果生成器想要骗过判别器非常简单就可以做到。因为没有交互过的物品经過mask之后会变成0那么生成器只要生成全1的向量不就可以了嘛。所以说只用用户购买过的物品,是不够的还得通过负采样的技术,增加┅定的负样本即在每次训练迭代过程中,我们随机选择每个用户的未购买过物品的一部分将其假设为负样本, CFGAN?ZP)接下来,我们分别介绍三种方式:

ZR的方式就是通过负采样得到一定比例的负样本,对于这些负样本我们希望预测的分数越接近于0越好。此时G的优化目标變为:

可以看到对于ZR方式,前面部分的损失函数是没有变动的即我们没有对mask进行修改。后面相当于增加了一个正则项避免全1的结果絀现。

PM的方式就是对mask进行修改,放开一些用户没有购买过的物品这样,D在计算损失的时候会把这部分为交互过的部分加入同时可以反向传播回G中,因此G不仅学习到在用户在购买过的物品上要得到接近1的输出还会学习到在没有购买过的部分物品上要得到接近0的输出。此时G和D的损失函数变为:

ZP的方式便是上面两种方式的结合G的损失函数变为:

完整的CFGAN-ZP的过程如下:

2.3 迁移到物品角度

迁移到物品角度,非常簡单G的生成目标变为生成物品的购买向量,D的目标变为判别物品的真实购买向量和G生成的物品购买向量结合负采样的话,同样分为ZR、PM囷ZP三种方法

模型实验主要关注于三个问题:
1)CFGAN模型应用于推荐任务,效果如何
2)CFGAN模型使用时,最佳的参数设置为多少

实验选取的数據集包括以下四个:

接下来,我们看下结果

该部分的实验效果如下:

3.2 超参数设置对于模型的影响

这里主要的超参数包括ZR和PM方式中,负样夲的比例以及ZR方式中,正则项系数α。结果如下:

3.3 与目前主流推荐方法的比较

可以看到CFGAN在各个数据集上,都有明显的效果提升

本文介绍了一种通过GAN来进行推荐任务的新思路,与之前结合强化学习的思路如IRGAN和GraphGAN不同CFGAN更接近于GAN模型,G生成的是用户或者物品的购买向量D的梯度可以反向传播回给G。该方法解决了IRGAN和GraphGAN中存在的discrete item index generation问题取得了非常好的实验效果。值得大家阅读!

我要回帖

更多关于 manikandan 的文章

 

随机推荐