解析协同过滤方法(三)

点击上方“蓝字”关注我们

解析协同过滤方法(三)

Mar 29, 2020

本期介绍基于神经网络的协同过滤方法。

本文约2.2k字,预计阅读13分钟。

上篇文章【解析协同过滤方法(二)】讲述了协同过滤中隐语义模型的概念,并详细介绍了「矩阵分解模型(matrix factorization model)」以及几种演化方法,例如加入偏置、引入隐式反馈信息等。

随着深度学习在计算机视觉、自然语言处理、语音识别上的成功,越来越多的学者将神经网络与协同过滤方法相结合。本篇文章将介绍---「基于神经网络的协同过滤方法」,主要围绕我看过的两篇论文「Neural network-based Collaborative Filtering」[1] 和「Outer Product-based Neural Collaborative Filtering」[2],它们都来自于同一位作者,何向南教授。

背景---矩阵分解的局限性

推荐系统在减少「信息过载」起到了很关键性的作用。给用户匹配最合适的物品能够提高用户的满意度和忠实度,即「个性化推荐」。个性化推荐的关键是,根据用户过去的交互,为他们对物品的偏好进行建模,如「协同过滤」。

协同过滤(CF)是构建个性化推荐系统的关键技术,它不仅从用户的行为数据,而且从其他用户的行为数据来推断用户的偏好。

设计CF模型的关键在于:

  • 如何表示用户和物品;

  • 如何根据表示对它们的交互进行建模;

在各种CF方法中,「基于矩阵分解」的方法以提供优于他人的性能而闻名,它利用「隐含特征向量」来表示用户或物品,将用户和物品投射到共享的「隐含特征空间」中。然后,将「用户对物品的交互」建模为其隐含特征向量的「内积」。

尽管矩阵分解对于协同过滤是有效的,但它的性能会受到「交互函数(内积)」的影响。例如,在显式反馈的评分预测任务中,通过将用户和项目偏差项纳入交互函数,MF模型的性能可以得到改善。虽然这看起来只是内积运算符的一个微小的调整,但它指出了设计一个更好的、专用的交互功能来建模用户和项目之间的隐含交互的积极影响。内积只是简单地将隐含特征的相乘线性组合起来,可能不足以捕获用户交互数据的复杂结构。

使用内积作为用户和物品之间的交互函数,已被证明是次优的学习[3,4],因为在神经网络推荐模型已经证明,「从数据中学习交互作用函数可以获得更好的推荐性能」。

神经协同过滤(NCF)

NCF使用神经网络中的「多层感知机(MLP)」来学习用户与物品的交互关系,所得到的效果优于矩阵分解。

以上就是NCF模型的通用框架,包括以下几层:

  • Input Layer:将用户和物品的属性作为输入特征,并使用one-hot编码将其转化成二值化稀疏向量。

  • Embedding Layer:它是一个全联接层,将稀疏表示投射到稠密向量上。得到的用户(物品)嵌入可以看作是用户(物品)在隐含特征空间中的的隐含特征向量。

  • Neural CF layers:神经协同过滤层,将隐含向量映射为预测分数。可以自定义神经CF层的每一层。

  • Output Layer:输出层,最终的输出结果为预测的分数。

最后的实验结果证明了使用神经网络学习交互关系的优越性。具体的内容可以参考原文,本篇文章的源码作者也提供了,不过不支持tensorflow2.0版本,我将它进行了修改,已上传「GitHub」:https://github.com/BlackSpaceGZY/Recommended-System,感兴趣的同学可以下下来实验下。

基于外积的神经协同过滤(ONCF)

在CF的神经网络模型中,在交互函数上有两种常见的设计:

  • 连接(用户embedding和物品embedding进行拼接,上文NCF就是这样操作)

  • 对应元素相乘(element-wise)(用户embedding和物品embedding)

之后使用多个非线性层来学习交互作用。但这两种设计的一个潜在的局限性是,在被建模的embedding维度之间几乎没有相关性。

因此作者提出一个新的模型----ONCF,使用外积来整合两个embedding层,它能捕捉embedding维度之间的对相关性。通过外积获得一个K*K(K为embedding维数)的交互映射。交互映射中丰富的语义有助于以下非线性层学习可能的高维关联。此外,交互映射的矩阵形式使得使用CNN学习交互函数是可行的,与的MLP相比,有效的卷积神经网络具有更好的泛化性,更容易深入。

维基百科「外积(outer product)」定义如下:

ONCF的具体通用框架如下:

  • Input Layer、Embedding Layer:给出用户 和物品

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值