论文名称:《Why I like it: Multi-task Learning for Recommendation and Explanation》
论文地址:https://dl.acm.org/citation.cfm?id=3240365
本文提出了一种通过结合概率矩阵分解PMF和对抗式Seq2Seq模型的多任务学习框架,可以通过矩阵分解模型得到用户对物品的评分,通过Seq2Seq模型可以生成用户对于物品的评论,在提升推荐预测准确性的同时,能够在一定程度上解决推荐系统中难以提供可解释性推荐结果的难题。我们来一探究竟。
1、整体框架
该模型的整体框架如下图所示:
![4155986-6809862c7f3230da.png](https://upload-images.jianshu.io/upload_images/4155986-6809862c7f3230da.png)
可以看到,该模型架构可以分为两个部分:
对抗式Seq2Seq模型(Adversarial Sequence-to-Sequence Learning):这一部分学习生成用户对于物品的评论,并作为推荐结果的可解释性依据。
上下文感知的PMF模型(Context-aware Matrix Factorization):这一部分主要得到用户对于目标物品的评分。
接下来,我们分别介绍上面两部分的结构。
2、对抗式Seq2Seq模型
关于该部分的模型,文章首先介绍了单独生成用户u的评论和单独生成物品j评论的过程,最后简单介绍了生成用户u对物品j个性化评论的过程。注意在上面的框架图中,对抗式Seq2Seq模型包含了单独生成用户评论和单独生成物品评论两个部分的结构。
这里我们以单独生成用户的评论为例,介绍模型的结构。单独生成物品的评论,是同样的原理。
首先定义用户文档du,i代表用户i的所有历史评论的集合,而物品文档dv,j代表物品j的所有历史评论集合。
经典的Seq2Seq模型,Decoder阶段输入的是已知的正确数据,但是这种方式会导致exposure bias,即一步错,步步错。所以,文章首创一种对抗式 Seq2Seq 模型,与常见的 GAN 方式一样包括判别网络和生成网络。
2.1 Recurrent Review Generator
生成器G的目的是尽可能生成像用户i所写的评论。包含两个主要的部分:用户文档encoder和用户评论生成decoder。
用户文档encoder
该部分的详细流程如下:
1、对于用户文档du,i中的每一条评论,将其进行分词,得到(w1,w2,...,wT)单词序列。
2、单词序列通过embedding 表得到对应的k维embedding,这里的embedding通过首先通过word2vec预训练得到,随后经由反向传播的过程不断更新。
3、将单词序列对应的embedding输入到双向的GRU循环神经网络中,得到两部分的输出:
![4155986-f69d8ff3f8850289.png](https://upload-images.jianshu.io/upload_images/4155986-f69d8ff3f8850289.png)
两部分的输出分别代表正向输入和反向输入的最后时刻的输出,然后将两部分的输出进行拼接,得到每个评论的对应向量hT。
4、将每个评论的的对应向量hT进行求平均操作,得到用户的文本特征向量,用U~i