解析协同过滤方法(三)

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

解析协同过滤方法(三)

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)」来学习用户与物品的交互关系,所得到的效果优于矩阵分解。

解析协同过滤方法(三)_第1张图片

以上就是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)」定义如下:

解析协同过滤方法(三)_第2张图片

ONCF的具体通用框架如下:

解析协同过滤方法(三)_第3张图片

  • Input Layer、Embedding Layer:给出用户 和物品 和它们的特征(ID、用户性别、物品类别等);首先进行one-hot编码,然后通过embedding,来得到 和 向量;

解析协同过滤方法(三)_第4张图片

  • Interaction Map:对得到的两个embedding向量 和 作外积操作:

               解析协同过滤方法(三)_第5张图片

  • Hidden Layers:从交互映射中提取有用的信号,用: 来表示,其中 定义为隐藏层模型, 为参数, 为输出向量;

  • Prediction:通过向量 来预测分数:

作者在这个模型的基础上,使用了卷积神经网络作为隐藏层----ConvNCF。最终实验结果证明,使用外积来整合Embedding层,效果比连接和直接相乘好,更能一种相关性。具体可见原文[2]。

解析协同过滤方法(三)_第6张图片

总结

上面两种方法只是我的一个抛砖引玉,其实现在很多关于协同过滤的论文都在与深度学习相融合。有些方法通过Embedding层来结合更多的边信息(side information),因为仅仅依靠部分用户与物品的交互行为不足学习到更丰富的内容,边信息是一个很重要的内容,上期所说的隐式反馈内容就是边信息,它们还包含了很多复杂的节点的连接。我最近看的一篇论文“Heterogeneous Information Network Embedding for Recommendation“[5]就是讨论了这个内容。

参考文献

[1] Xiangnan He, Lizi Liao, Hanwang Zhang, Liqiang Nie, Xia Hu, and Tat-Seng Chua. Neural collaborative filtering. In WWW, pages 173–182, 2017.

[2] X. He, X. Du, X. Wang, F. Tian, J. Tang, and T.-S. Chua, “Outer product-based neural collaborative filtering,” in Proceedings of the 27th International Joint Confer

[3] Yi Tay, Luu Anh Tuan, and Siu Cheung Hui. Latent relational metric learning via memory-based attention for collaborative ranking. In WWW, pages 729– 739, 2018.

[4] Ting Bai, Ji-Rong Wen, Jun Zhang, and Wayne Xin Zhao. A neural collaborative filtering model with interaction-based neighborhood. In CIKM, pages 1979–1982, 2017.

[5] C. Shi, B. Hu, W. X. Zhao and P. S. Yu, "Heterogeneous Information Network Embedding for Recommendation," in IEEE Transactions on Knowledge and Data Engineering, vol. 31, no. 2, pp. 357-370, 1 Feb. 2019.

往期精彩回顾

解析协同过滤方法(二)

解析协同过滤方法
推荐系统概述

扫码关注更多精彩

解析协同过滤方法(三)_第7张图片

我就知道你“在看”

你可能感兴趣的:(解析协同过滤方法(三))