CFGAN--基于生成对抗神经网络的协同过滤推荐

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/super1peng/article/details/88294222

欢迎关注个人微信公众号,大大大碗面,不定期分享AI论文解读和开发技术,互联网小白,轻喷~

在这里插入图片描述
本文发表在2018年的CIKM。在文章中,作者提出了一种新颖的基于生成对抗神经网络的协同过滤推荐技术,可以获得更高的推荐系统准确性。具体地;文章通过一系列方法解决了传统IRGAN存在的问题,同时针对协同过滤也进行了优化。

协同过滤推荐

协同过滤(Collaborative Filtering),是推荐算法中最为经典的类型。它通常解决以下问题:m个物品,n个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到较高评分的物品推荐给用户,如下图表示:

可以将其转换成矩阵表示:

一般来说,协同过滤推荐分为三种类型。第一种是基于用户(user-based)的协同过滤,第二种是基于项目(item-based)的协同过滤,第三种是基于模型(model based)的协同过滤,我们就列举基于用户的协同过滤进行说明:

基于用户(user-based)的协同过滤主要考虑的是用户和用户之间的相似度,只要找出相似用户喜欢的物品,并预测目标用户对对应物品的评分,就可以找到评分较高的若干个物品推荐给用户。

协同过滤的缺点:

  • 数据的稀疏性:一个大型的推荐系统一般具有大量的物品(Item,Location等),用户可能买到的物品就非常少,不同用户之间买的物品重叠性较低,这样会导致无法找到一个用户的偏好相似用户。

  • 算法的复杂度较高:算法空间复杂度和时间复杂度随着用户和物品数量的增加而增加,不适合处理大量数据。

生成对抗神经网络

生成对抗神经网络(GAN:Generative Adversarial Networks)是Goodfellow在2014年提出来的,其主要灵感来自于博弈论中零和博弈的思想,应用到深度学习神经网络上来说,就是通过生成模型G(Generator)和判别模型D(Discriminator)不断博弈,进而使G学习到数据的分布,广泛应用于图像、自然语言处理领域。

  • 生成模型

以随机噪声或类别之类的控制变量作为输入,一般用多层神经网络实现,其输出为生成的样本数据,这些样本数据和真实样本一起送给判别模型进行训练,让生成的数据尽可能与真实数据相似,最小化判别模型的判别准确率。

  • 判别模型

是一个二分类器,判定一个样本是真实的还是生成的,一般也用神经网络实现,训练目标是最大化判别准确率,即区分样本是真实数据还是由生成模型生成的。当这个样本被判定为真实数据时标记为1,判定为来自生成模型时标记为0。

  • 训练过程

在训练时,两个模型不断竞争,从而分别提高它们的生成能力和判别能力随着训练的进行,生成模型产生的样本与真实样本几乎没有差别,判别模型也无法准确的判断出一个样本是真实的还是生成模型生成的,此时的分类错误率接近0.5,系统达到平衡,训练结束。

IRGAN

2017年SIGIR一篇《IRGAN: A Minimax Game for Unifying Generative and Discriminative Information Retrieval Models》,提出了GAN在信息检索领域的应用方式。信息检索的目的是针对用户输入的Query,返回给对方一个合适候选文档列表,如下图展示:

问题定义

假定我们又一些列的query{q1,…qN}并且有一系列的文档document结合{d1,…dM},对于一个特定的query,我们有一系列标记的真实相关的文档,但是这个数量是远远小于文档总数量M的。query和document之间潜在的概率分布可以表示为条件概率分布ptrue(dq,r)p_{true}(d|q,r)。给定一堆从真实条件分布ptrue(dq,r)p_{true}(d|q,r)观察到的样本,我们可以定义两种类型的IR model。

  • 生成模型:该模型的目标是学习pθ(dq,r)p_{θ}(d|q,r)​,使其更接近于ptrue(dq,r)p_{true}(d|q,r)​
  • 判别模型:该模型的目标是学习fΦ(q,d)f_{Φ}(q,d),即尽量能够准确的判别q和d的相关程度。

将上述的两种IR模型结合起来做一个最大最小化的博弈:生成模型的任务是尽可能的产生和query相关的document,以此来混淆判别模型;判别模型的任务是尽可能准确区分真正相关的document和生成模型生成的document,总的目标就变成:

具体地,生成模型G为pθ(dqn,r)p_θ(d|q_n,r)​,判别模型D对d是否与q相关进行判定,通过下面的式子给出相关性得分:

同时为了解决离散数据无法通过梯度下降算法进行优化的问题,使用强化学习中的策略梯度方法进行模型的训练。有关更多的IRGAN的细节,大家可以阅读原论文。

存在的问题

在论文中通过实验作者发现,"discrete item index generation"的方法存在局限性。在实验结果如下:

在图中,初始化阶段,生成器生成随机的item(即上文的document),但是在判别器的“指导”下,随着训练的进一步进行,生成器将生成与真实情况完全相同的物品。显然,这对判别器来说将是一个“灾难”,例如图中的物品i3i_3,它即被标记为真实数据(real),又被标记为生成数据(fake),这样如果将其送进判别器进行判别,判别器将会产生困惑,使得判别器性能下降,之后在策略梯度迭代的过程中,判别器将向生成器提供“wrong signal”,这也将导致生成器的性能下降。

现象如图所示:在初始的几次迭代过程中,模型训练正常,判别器与生成器都提升各自的性能,但是当生成器的性能趋近于极限后(即10轮迭代之后),判别器的性能突然降低,产生这样的原因就是因为生成器生成上述i3i_3这样矛盾的数据,使得判别器无法判断产生的后果。在这种情况下,G和D之间的竞争过程不能在提供高质量推荐列表中产生协同效应。

CFGAN

与IRGAN将GAN运用在信息检索相似,在协同过滤(CF)领域也可以引入GAN,将query与document的关系,迁移到user与Item中来,本文提出的模型CFGAN的结构框架如下:

模型优化

  • 为了解决IRGAN存在的问题,作者提出了“vector-wise”的方式,对于给定的用户,生成器一次生成其购买向量(Fake Purchase Vectors);而判别器则用来判别输入的向量是真实的数据还是生成器“伪造”的向量。

  • 文章同时指出,CFGAN与传统的GAN的一个主要不同点是:框架重点关注那些“购买“的商品。换句话说,框架丢掉了部分生成器生成的但真实情况下用户”没有购买“的物品信息,这在一定程度上可以解决数据稀疏性的问题。

具体的,该操作如下:

这样一来,该网络的Objective Function可以表示为:

CF Method

采用训练就可以获得我们所期望的结果了吗?答案是否定的,在论文中,作者指出因为在推荐系统中,我们输入的数据经常是用户的隐式反馈数据,它是一个稀疏的单值向量。虽然通过上述的方式,生成器通过生成与购买向量类似的向量来与判别器进行博弈,但是最终生成器将训练得到一个全1向量,这显然不是我们想要的结果。

为了解决这个具体,作者将负采样技术(Negative Sampling)引入其中。具体的做法是:在每次训练迭代过程中,我们随机选择每个用户的非购买项目的一部分,将其假设为负样本,表明其相应的反馈是被观测到的但是是负样本(不喜欢)。 然后,我们训练G生成用户的购买向量,使其对应的负样本的值接近0。图示如下:

具体地,可以将操作分为以下三种:

  • CFGAN − ZR (zeroreconstruction regularization)

这样,生成模型的Loss Function则多了一部分:

  • CFGAN − PM(partial-masking)

相应地,模型的Loss Function更改为:

  • CFGAN − ZP(CFGAN − ZR+ CFGAN − PM)

将以上两种方法混合即可。

EXPERIMENT

作者在多个公开数据集上进行实验,获得了较高的性能。

展开阅读全文

没有更多推荐了,返回首页