推荐系统学习(七)
DeepCoNN-2017年WSDM
概述
本文提出的 DeepCoNN 模型,有两个平行的神经网络,其中一个对于用户所写的评论分别学习用户的行为数据,另一个则是对物品的所有评论中习得物品的属性信息,最后通过一个“共享层”把这两部分网络特征融合在一起。从而,用户和物品的各自的表示能够以一种类似于分解模型的方式交互。
其实本文也是一种混合模型,结合了文本信息,解决了冷启动问题(其实之后看论文只要加入文本辅助信息那么必然会说解决这个吧),通常由数据过于稀疏导致,记录比较少的或者是新的用户,很难或者根本没有办法学习一个用户的表示。而且对于现有的协同过滤框架很难把这部分信息添加进去,因为协同过滤模型仅仅考虑用户的打分信息,即数值信息。相关工作表明,引入评论信息,能够提高推荐系统的打分预测准确性,尤其是那些冷启动用户和物品。
作者及论文
Joint Deep Modeling of Users and Items Using Reviews for Recommendation
本文模型
DeepCoNN 模型分析评论信息,利用对称的深度网络,联合建模,获得用户和物品的隐藏表示,从而预测用户的打分。
模型
如下图所示,左边是用户网络 ,右边是物品网络 ,这两个对称网络的输入分别是和用户、物品相关的评论。
注意:此处以user为例,item同样的处理方式。
Look-up layer
第一层是 look-up 层,把用户、物品的相关评论通过 word-embedding,转换成一个 embedding 的矩阵,具体做法是利用 word2vec 等相关模型得到每个词的分布式表示,接着就通过拼接(stack)的方式构成长度为 n 的矩阵,用 表示(看论文应该是这样的,但是感觉和代码有点出入,github上有清华大学复现的代码);此处,把所有属于的reviews连接在一起,然后人为规定一定的长度n,长度不够的添加占位符。并且把所有单词做成一个字典,按序号编码。这样每个为,最后经过look-up函数进行处理,最后每个变为的一个n行c列的矩阵(同样处理),这样考虑了单词的序列相比词袋模型(注意:这块其实需要论证下论文中的符号是如何concateation拼接的,可能是一行有n*c个?不过问题不大先按上面的理解)。
convolution layer
第二层是 CNN 网络层,使用经典的卷积神经网络结构和 ReLU **函数,获得多个卷积核的特征输出:卷积核为 ,, 为,偏置为 ,则对于卷积核 的输出即为
max-pooling layer
第三层为 max-pooling 操作,得到一个固定的长度的向量表示 ,这里的 表示卷积核的总数;
Fully-connected layer
最后一层是全连接层,以用户表示为例,,从 维的输入映射到 维空间,便于和商品表示 交互。
Shared layer(这个比较重要)
虽然最终得到的$ x_u$ 和 可以直接作为两者的特征表示,但是他们通常是属于不同向量空间的特征表示,因此引入一个共享层来完成映射。把 和 拼接起来,得到 ,利用一个**分解机模型(介绍的非常棒)**来预测最终的得分:
这里的是一个全局bias, J 一部分由 给出,这是一阶交互,强度由 控制(前两项是线性回归的形式),二阶交互则是由控制的每个特征维度(后面的这一项其实考虑了特征分量和这两相互独立分量之间的关系)。这里的 是什么含义,文中没有给出解释,但是相当于权重是模型需要学习的。
模型训练
根据每一个 batch 的梯度方向优化参数,具体采用了 RMSprop 方式替代了传统梯度下降方法。此外,为了防止过拟合,加入了 dropout。
模型分析
第一,相较于 BoW 方式处理评论,保持了原评论中的语序信息,先表示成一个矩阵,后通过 CNN 得到特征表示,是保留了语序信息的。(问题:why not RNN?其实后面再DeepConn的基础上有用RNN,以及lstm做的)。
第二,推荐系统注重“在线学习”,应尽可能支持。神经网络的状态可以被保存和恢复,所以可以在新的数据产生以后,对模型各种参数进行微调。
评价指标
Mean SquareError (MSE)
实验分析
为了回答:
- 两个平行深度网络是否真的从评论文本中联合学习了?
- 对于评论文本从 word-embedding 到 CNN 提取特征是否保留了更好的语义信息?
- 最后的共享层起到了什么样的作用?
这三个问题,作者设计了一系列对比实验,分别是:
- DeepCoNN-User、DeepCoNN-Item 使用一个矩阵随机初始化的矩阵分别替代 Netu 和 Neti,以验证 CNN 处理的有效性
- DeepCoNN-TFIDF,使用 TF-IDF 作为 word-embedding 的替代;DeepCoNN-Random,不使用 word2vec,而是随机初始化每个词的特征向量,以验证 word-embedding 的有效性
- DeepCoNN-DP,不使用共享层,直接采用向量内积,以验证共享层的有效性
创新点及贡献
贡献有三点:
- 首次提出了利用神经网络的方式构建出 DeepCoNN 模型,在推荐系统中融合评论信息,联合学习用户和物品的表示。从评论中学到的用户表示,最终的优化目标是最小化推荐系统的打分误差,与传统的直接融合评论信息的做法,有一个更为明确的任务导向;
- 评论文本使用预训练的模型,以 word-embedding 方式作文本表示,可以保留文本的语义信息,比 BOW、LDA、SDAE 等都更有竞争力;
- DeepCoNN 不仅缓解了冷启动的问题,对于一些热启动的用户也有性能的提升。
代码
待更新!!!