欢迎关注个人微信公众号,大大大碗面,不定期分享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(d∣q,r)p_{true}(d|q,r)ptrue​(d∣q,r)。给定一堆从真实条件分布ptrue(d∣q,r)p_{true}(d|q,r)ptrue​(d∣q,r)观察到的样本,我们可以定义两种类型的IR model。

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

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

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

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

存在的问题

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

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

现象如图所示:在初始的几次迭代过程中,模型训练正常,判别器与生成器都提升各自的性能,但是当生成器的性能趋近于极限后(即10轮迭代之后),判别器的性能突然降低,产生这样的原因就是因为生成器生成上述i3i_3i3​这样矛盾的数据,使得判别器无法判断产生的后果。在这种情况下,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

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

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

  1. ​清华大学提出基于生成对抗神经网络的自然图像多风格卡通化方法并开源代码...

    近日,清华大学刘永进教授课题组在 IEEE Transactions on Visualization and Computer Graphics 上发表论文,提出基于生成对抗神经网络的自然图像多风格 ...

  2. ​清华大学提出基于生成对抗神经网络的自然图像多风格卡通化方法并开源代码

    近日,清华大学刘永进教授课题组在 IEEE Transactions on Visualization and Computer Graphics 上发表论文,提出基于生成对抗神经网络的自然图像多风格 ...

  3. Java语言开发在线购物推荐网 购物商城推荐系统 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据、人工智能、机器学习项目开发

    Java语言开发在线购物推荐网 购物商城推荐系统 基于用户.物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)开发框架 大数据.人工智能.机器学习项目开发ShopRec ...

  4. Java语言开发在线音乐推荐网 音乐推荐系统 网易云音乐爬虫 基于用户、物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)框架 大数据、人工智能、机器学习项目开发

    Java语言开发在线音乐推荐网 音乐推荐系统 网易云音乐爬虫 基于用户.物品的协同过滤推荐算法 SSM(Spring+SpringMVC+Mybatis)框架 大数据.人工智能.机器学习项目开发Mus ...

  5. Python+Django+Mysql实现购物商城推荐系统 基于用户、项目的协同过滤推荐购物商城系统 网络购物推荐系统 代码实现 源代码下载

    Python+Django+Mysql实现购物商城推荐系统(基于用户.项目的协同过滤推荐算法) 一.项目简介 1.开发工具和实现技术 pycharm2020professional版本,python3 ...

  6. Python+Django+Mysql实现在线电影推荐系统 基于用户、项目的协同过滤推荐在线电影系统 代码实现 源代码下载

    Python+Django+Mysql实现在线电影推荐系统(基于用户.项目的协同过滤推荐算法) 一.项目简介 1.开发工具和实现技术 pycharm2020professional版本,python3 ...

  7. mysql项目案例电影_Python+Django+Mysql实现在线电影推荐系统 基于用户、项目的协同过滤推荐在线电影系统 代码实现 源代码下载...

    Python+Django+Mysql实现在线电影推荐系统(基于用户.项目的协同过滤推荐算法) pycharm2020professional版本,python3.8版本,django3.1.1版本, ...

  8. Java语言springboot开发框架实现个性化美食推荐网 在线美食推荐系统 基于用户、物品的协同过滤推荐算法实现

    Java语言springboot开发框架实现个性化美食推荐网 在线美食推荐系统 基于用户.物品的协同过滤推荐算法实现WebFoodRecSystem 一.项目简介 1.开发工具和使用技术 IDEA/E ...

  9. Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户、物品的协同过滤推荐算法 个性化推荐算法、机器学习、分布式大数据、人工智能开发

    Python+Django+Mysql开发在线美食推荐网 协同过滤推荐算法在美食网站中的运用 基于用户.物品的协同过滤推荐算法 个性化推荐算法.机器学习.分布式大数据.人工智能开发 FoodRecom ...

  10. 使用Java+SSM(Spring+SpringMVC+Mybatis)开发在线美食推荐网 美食推荐系统 美食天下美食爬虫 基于用户、物品的协同过滤推荐算法实现 大数据、人工智能、机器学习项目开发

    使用Java+SSM(Spring+SpringMVC+Mybatis)开发在线美食推荐网 美食推荐系统 美食天下美食爬虫 基于用户.物品的协同过滤推荐算法实现 大数据.人工智能.机器学习项目开发Fo ...

最新文章

  1. 使用微信开发者工具创建小程序项目
  2. python版本越高越好吗-5个Python特性 越早知道越好的
  3. eclipse断点调试 出现Source not found
  4. python file operations
  5. where嵌套select_Select子查询:Select Zoo
  6. Pygame实战:升级后的2048小游戏—解锁新花样 根本停不下来
  7. OpenCV学习笔记04:在Visual Studio上使用OpenCV4.5.5
  8. Mysql查询为空赋值为0
  9. 【设计模式】设计模式六大原则
  10. websocket.onmessage回调没反应_Java笔记:反应器模式的简单运用
  11. wireshark解密本地https流量笔记
  12. E-Prime 3 安装
  13. python 利用matploylib画动态雷达实时显示图
  14. win10 外接usb摄像头_win10系统外接usb摄像头怎么打开
  15. linux中环境变量及环境变量配置文件详解
  16. tcpmux TCP 端口服务多路复用
  17. python-CST MWS自动采样
  18. (挺好)最详细的Yolov3边框预测分析
  19. 先锋机器人学习笔记_1-4 Pioneer SDK与VS2010编程配置
  20. 电工(特种作业)无证上岗的法律后果可不轻,最新建筑施工 电工(建筑特种作业)机考题库及建筑电工模拟试题

热门文章

  1. matlab 平滑曲线连接_曲线拟合的一些想法
  2. 单片机程序的整体框架设计的一些思路体会
  3. 网页链接在线提取工具-免费网页链接在线提取软件
  4. c语言程序设计实验结果与分析,C语言程序设计实验报告(7)
  5. 介质天线的设计原理_详解rifd标签天线的设计原理和测量技巧
  6. 心理测量学信度计算机试题,心理测量学试题及答案
  7. 服务器系统自带的系统清理工具,一键清除系统垃圾
  8. 蜂巢(已更名为网易云计算基础服务)计费系统架构升级之路
  9. AutoCad 批量打印
  10. win10 自带工具生成 MD5 哈希码