文章浅析-《Joint Deep Modeling of Users and Items Using Reviews for Recommendation》
- 推荐系统论文阅读笔记之《Joint Deep Modeling of Users and Items Using Reviews for Recommendation》
-
- Introduction
- This paper
- Summary
- Contributions
- Methods
-
- 第一层 look-up层
- 第二层 Convolution层
- 第三层 Max-pooling层
- 第四层 Fully-connected层
- 第四+1层 Factorization Machine层
- Experiment
-
-
- 数据集:
- 词embedding方式
- 评价标准
- Baseline
- Result
-
推荐系统论文阅读笔记之《Joint Deep Modeling of Users and Items Using Reviews for Recommendation》
Introduction
推荐系统应用于众多电商平台,如不离手的抖音、百货大楼淘宝、Amazon,甚至一些广告、新闻推送等。简言之,推荐即通过用户的历史交互信息对用户进行特征建模,然后通过预测user对item的评分、点击概率、喜欢的可能排序等进行推荐。.
This paper
文章下载地址:https://arxiv.org/pdf/1701.04783.pdf
代码下载地址(非文章作者提供,码友之作):https://github.com/zhaojinglong/DeepCoNN
Summary
现有的一些推荐算法主要考虑user-item的交互和评分情况,忽略了用户的评论中包含了大量的信息,它不仅可以提供附加信息,还能潜在地缓解稀疏性问题,提高推荐的质量。在本文中,我们提出了一个基于CNN的深度学习的模型——DeepCoNN,通过user的所有评论信息和item的所有被评论信息来学习user和item的特征表示,最后预测评分。
Contributions
1.提出DeepCoNN(名为:深度合作的神经网络),使用user reviews和item reviews对user和item属性进行联合建模(PS: 所谓联合建模,就是使用提出的网络模型同时对user和item进行建模)。
2.使用pre-train好的模型对词进行embedding,就是根据词进行look-up操作,得到word-embedding矩阵。
3.在三个数据集上(Yelp、Amazon、Beer)实验表明优于现有的算法。
Methods
DeepCoNN网络模型
图片来源:原文
由上图可知,模型一共有三层(三层?明明是四层啊!~好,那就四层!说三层是因为把卷积层和池化层合为卷积网络,是一层。按图,四层!)
下面,以学习user特征为例,介绍模型各层……
第一层 look-up层
给不了解文本处理的小伙伴简简单单说一下蛤~
look-up翻译过来就是查找。
问: 去哪里查什么呢? 答: 去训练好的词嵌入矩阵查某个词的词向量。
再问: 为什么要查呢?有词不就好了吗?再答: 不好!网络模型计算的是数字,不是词,所以词要转化成数字!词嵌入矩阵就是每个词对应的数字形式,一般来讲,一个词对应一个向量,look-up之后的reviews就对应一个矩阵,因为一个review有很多词鸭,呱呱呱~二、四、六、七、八……
反问: 懂了吗?反答: 懂了!
好,Go on!
In the look-up layer, reviews are represented as a matrix of word embeddings to extract their semantic information. To achieve it, all the reviews written by user u, denoted as user reviews, are merged into a single document du1:n, consisting of n words in total. Then, a matrix of word vectors, denoted as V u1:n, is built for user u as follows:
别看原文了,看中文吧:
把用户的所有评论合成一条长评论,一共有n个单词,对每个单词进行look-up操作,再合起来就构成Vu1:n了。所谓的合起来就是把每个词查得的vector按行排成矩阵,这个矩阵的行数就是这条评论词的个数,列数就是每个词向量的维度。
第二层 Convolution层
卷积层,通过不同的卷积核提取不同的特征。
了解CNN的小伙伴就知道这个操作蛤~
Vu1:n是用户Uj的评论embedding,Kj是卷积核,bj是偏置项。对于文本数据通常采用1d卷积,Vu1:n卷积之后对应图中卷积层的一个列向量,多个卷积核输出多个列向量。使用多个卷积核的目的是提取多种特征,一个卷积核提取一种特征,要问怎么就提取特征了?详见CNN介绍蛤~
第三层 Max-pooling层
池化层,最大池化操作!
对每个卷积核提取的特征取最大值,即图中从卷积层的每一列取最大值组合起来得到池化层的一行。O是池化得到的向量,n1是卷积核个数。
第四层 Fully-connected层
全连接层
将得到的O输进全连接层,xu即为学得的user特征,f为激活函数,W是权重矩阵,g是偏置项。
至此,模型介绍完毕!
???
别急,还有……
第四+1层 Factorization Machine层
为了将user特征和item特征映射到同一空间,引入因子分解机,一套行云流水的常规操作,OK了!
Experiment
数据集:
1.Yelp: https://www.yelp.com/dataset-challenge
2.Amazon: https://snap.stanford.edu/data/web-Amazon.html
3.Beer
数据集情况分析:
词embedding方式
使用训练好的GoogleNews-vectors-negative300.bin进行look-up。
评价标准
Mean Square Error (MSE,均方误差):
通常来讲,预测评分的评价标准为MSE、RMSE,本文也不例外。
Baseline
读者可以参见原文。
Result
读者亦可以参见原文。
-----完结-----
???
文章读完就完了吗?!还要思考啊!
这篇文章发表于2017年ACM,时隔已久。可以看到,这篇文章的网络结构并不复杂,可以说是中规中矩,只不过是用到了评论数据作为附加信息。近几年,相关论文很多,用到的时间感知、内容感知、LSTM、注意力机制等都可以考虑到网络结构中。以上!
谢谢惠顾!哈哈哈哈哈~