推荐系统学习(七)

概述

  本文提出的 DeepCoNN 模型,有两个平行的神经网络,其中一个对于用户所写的评论分别学习用户的行为数据,另一个则是对物品的所有评论中习得物品的属性信息,最后通过一个“共享层”把这两部分网络特征融合在一起。从而,用户和物品的各自的表示能够以一种类似于分解模型的方式交互。
  其实本文也是一种混合模型,结合了文本信息,解决了冷启动问题(其实之后看论文只要加入文本辅助信息那么必然会说解决这个吧),通常由数据过于稀疏导致,记录比较少的或者是新的用户,很难或者根本没有办法学习一个用户的表示。而且对于现有的协同过滤框架很难把这部分信息添加进去,因为协同过滤模型仅仅考虑用户的打分信息,即数值信息。相关工作表明,引入评论信息,能够提高推荐系统的打分预测准确性,尤其是那些冷启动用户和物品。

作者及论文

Joint Deep Modeling of Users and Items Using Reviews for Recommendation

本文模型

  DeepCoNN 模型分析评论信息,利用对称的深度网络,联合建模,获得用户和物品的隐藏表示,从而预测用户的打分。
( l e f t C N N + r i g h t C N N ) ⟶ F M (leftCNN+rightCNN)\longrightarrow FM (leftCNN+rightCNN)FM

模型

  如下图所示,左边是用户网络 N e t u Net_u Netu,右边是物品网络 N e t i Net_i Neti,这两个对称网络的输入分别是和用户、物品相关的评论。
注意:此处以user为例,item同样的处理方式。

在这里插入图片描述

Look-up layer

  第一层是 look-up 层,把用户、物品的相关评论通过 word-embedding,转换成一个 embedding 的矩阵,具体做法是利用 word2vec 等相关模型得到每个词的分布式表示,接着就通过拼接(stack)的方式构成长度为 n 的矩阵,用 V 1 : n V_{1:n} V1:n 表示(看论文应该是这样的,但是感觉和代码有点出入,github上有清华大学复现的代码);此处,把所有属于 u s e r i user_i userireviews连接在一起,然后人为规定一定的长度n,长度不够的添加占位符。并且把所有单词做成一个字典,按序号编码。这样每个 u s e r i user_i useri V 1 : n u = [ d 1 u , d 2 u , d 3 u , d 4 u , . . . . . . d n − 1 u , d n u ] V_{1:n}^u=[d_1^u,d_2^u,d_3^u,d_4^u,......d_{n-1}^u,d_n^u] V1:nu=[d1u,d2u,d3u,d4u,......dn1u,dnu],最后经过look-up函数 ϕ ( d k u ) \phi(d_k^u) ϕdku进行处理,最后每个 V 1 : n u V_{1:n}^u V1:nu变为 R n ∗ c R^{n*c} Rnc的一个n行c列的矩阵( i t e m i item_i itemi同样处理),这样考虑了单词的序列相比词袋模型(注意:这块其实需要论证下论文中的 ⨁ \bigoplus 符号是如何concateation拼接的,可能是一行有n*c个?不过问题不大先按上面的理解)。

convolution layer

  第二层是 CNN 网络层,使用经典的卷积神经网络结构和 ReLU 激活函数,获得多个卷积核的特征输出:卷积核为 K j K_j Kj, K j ∈ R c ∗ t K_j \in R^{c*t} KjRct, w i n d o s s i z e windos size windossize t t t,偏置为 b j b_j bj,则对于卷积核 K j K_j Kj 的输出即为 z j = R e L U ( V 1 : n ∗ K j + b j ) z_j = ReLU(V_{1:n} *K_j + b_j) zj=ReLU(V1:nKj+bj)

max-pooling layer

  第三层为 max-pooling 操作, o j = m a x { z 1 , z 2 , z 3 , z 4 , . . . . . . , z n − t + 1 } o_j=max\{z_1,z_2,z_3,z_4,......,z_{n-t+1}\} oj=max{z1,z2z3z4......,znt+1}得到一个固定的长度的向量表示 O = o 1 , o 2 , ⋯ , o n 1 O={o_1,o_2,⋯,o_{n_1}} O=o1,o2,,on1,这里的 n 1 n_1 n1 表示卷积核的总数;

Fully-connected layer

  最后一层是全连接层,以用户表示为例, x u = f ( W × O + g ) x_u=f(W×O+g) xu=f(W×O+g),从 n 1 n_1 n1 维的输入映射到 n 2 n_2 n2 维空间,便于和商品表示 y i y_i yi 交互。

Shared layer(这个比较重要)

  虽然最终得到的$ x_u$ 和 y i y_i yi 可以直接作为两者的特征表示,但是他们通常是属于不同向量空间的特征表示,因此引入一个共享层来完成映射。把 x u x_u xu y i y_i yi 拼接起来,得到 z ^ = ( x u , y i ) \hat z=(x_u,y_i) z^=(xu,yi),利用一个**分解机模型(介绍的非常棒)**来预测最终的得分:
J = w ^ 0 + ∑ i = 1 ∣ z ^ ∣ w ^ i z ^ i + ∑ i = 1 ∣ z ^ ∣ ∑ j = i + 1 ∣ z ^ ∣ ⟨ v ^ i , v ^ j ⟩ z ^ i z j ^ J = \hat{w}_0 + \sum_{i=1}^{|\hat{z}|}\hat{w}_i\hat{z}_i + \sum_{i=1}^{|\hat{z}|} \sum_{j = i+1}^{|\hat{z}|}\langle\hat{v}_i, \hat{v}_j\rangle \hat{z}_i\hat{z_j} J=w^0+i=1z^w^iz^i+i=1z^j=i+1z^v^i,v^jz^izj^
  这里的 w 0 w_0 w0是一个全局bias, J 一部分由 W ^ T z ^ \hat W^T{\hat z} W^Tz^ 给出,这是一阶交互,强度由 w ^ \hat{w} w^控制(前两项是线性回归的形式),二阶交互则是由 v ^ \hat{v} v^控制 z ^ \hat{z} z^的每个特征维度(后面的这一项其实考虑了特征分量 z ^ i \hat z_i z^i z ^ j \hat z_j z^j这两相互独立分量之间的关系)。这里的 v ^ \hat{v} v^ 是什么含义,文中没有给出解释,但是相当于权重是模型需要学习的。

模型训练

  根据每一个 batch 的梯度方向优化参数,具体采用了 RMSprop 方式替代了传统梯度下降方法。此外,为了防止过拟合,加入了 dropout。

模型分析

第一,相较于 BoW 方式处理评论,保持了原评论中的语序信息,先表示成一个矩阵,后通过 CNN 得到特征表示,是保留了语序信息的。(问题:why not RNN?其实后面再DeepConn的基础上有用RNN,以及lstm做的)。

第二,推荐系统注重“在线学习”,应尽可能支持。神经网络的状态可以被保存和恢复,所以可以在新的数据产生以后,对模型各种参数进行微调。

评价指标

Mean SquareError (MSE)
M S E = 1 N ∑ n = 1 N ( r n − r ^ n ) 2 MSE =\frac1N\sum_{n=1}^N (r_n-\hat r_n)^2 MSE=N1n=1N(rnr^n)2

实验分析

为了回答:

  1. 两个平行深度网络是否真的从评论文本中联合学习了?
  2. 对于评论文本从 word-embedding 到 CNN 提取特征是否保留了更好的语义信息?
  3. 最后的共享层起到了什么样的作用?

这三个问题,作者设计了一系列对比实验,分别是:

  1. DeepCoNN-User、DeepCoNN-Item 使用一个矩阵随机初始化的矩阵分别替代 Netu 和 Neti,以验证 CNN 处理的有效性
  2. DeepCoNN-TFIDF,使用 TF-IDF 作为 word-embedding 的替代;DeepCoNN-Random,不使用 word2vec,而是随机初始化每个词的特征向量,以验证 word-embedding 的有效性
  3. DeepCoNN-DP,不使用共享层,直接采用向量内积,以验证共享层的有效性

创新点及贡献

  贡献有三点:

  1. 首次提出了利用神经网络的方式构建出 DeepCoNN 模型,在推荐系统中融合评论信息,联合学习用户和物品的表示。从评论中学到的用户表示,最终的优化目标是最小化推荐系统的打分误差,与传统的直接融合评论信息的做法,有一个更为明确的任务导向;
  2. 评论文本使用预训练的模型,以 word-embedding 方式作文本表示,可以保留文本的语义信息,比 BOW、LDA、SDAE 等都更有竞争力;
  3. DeepCoNN 不仅缓解了冷启动的问题,对于一些热启动的用户也有性能的提升。

代码

待更新!!!

参考资料

落尽红樱君不见,轻绘梨花泪沾衣
因式分解机
分解机理论

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值