作者:一元,炼丹笔记小编
Why I like it: Multi-task Learning for Recommendation and Explanation(RecSys18)
简介
这是比较早的一篇使用多任务学习来赋能推荐任务可解释性的文章, 可解释性和有效性是构建推荐系统的两大关键成份,本文提出了一种新的多任务推荐模型,通过结合矩阵分解和对抗性序列对序列学习来进行评分预测和推荐解释。改进了评级预测性能,同时产生了有效的个性化解释。
近期很多工作会尝试利用用户的反馈来赋予模型可解释性。
模型
模型的整体框架如下:
此处我们提出了encoder-decoder的框架,他可以基于评论的文档生成相关的评论。
优化seq2seq模型的传统方法是在训练过程中的每个时间步输入真实性注释。这种优化策略会导致暴露偏差(exposure bias)的问题,即在测试时,模型会暴露在自己的预测中,因此误差会随着时间累积。
为了解决这个问题,我们采用了一种对抗性的训练过程,在这个过程中我们同时训练一个生成器网络和一个判别器网络。前者学会了创造虚假评论来愚弄判别者,而后者则旨在检测这些对抗性样本。
给定用户的评论文档, 我们希望用户评论生成器能生成类似于用户写的文档,此处,我们使用seq2seq的学习框架:
对于用户,用户文档编码器先将评论文档映射到维的向量, 然后基于生成和评论文档类似的评论。此处用户文档编码器和生成器都是基于GRU的。
细节:
其中是预测长度为的评论.
用户的评论生成器是希望生成和用户相近的评论,而评论判别器则希望能将生成的样本和真实的评论分开。本文采用卷积的形式来进行此操作,具体的框架如上图所示。
我们假设生成器是一个虚拟的agent, 它的目的是在每次尝试中尽可能获得多的reward(由判别器的置信度给出)。也就是说生成器的目的是尽可能的制造能骗过判别器的生成样本。
此处我们判别器的训练目标为(最大化真实样本,最小化假的生成样本):
其中表示从真实评论中采样的样本, 表示生成器生成的样本。
因为序列生成是一个离散化采样的过程,所以梯度不能直接从判别器传到生成器。我们此处使用policy gradient算法来估计目标函数的梯度。
其中是有判别器给第个生成序列的reward, 表示降低方差的baseline.
为了方便后续多任务学习,我们对文本特征学习得到的用户系数矩阵和矩阵分解得到的矩阵进行正则,这样我们的设定可以使我们的seq2seq模型更好地探索从协同过滤方法中得到的用户偏好。
其中是通过矩阵分解得到的用户稀疏矩阵, 是从用户文档编码器中学到的用户文本特征。
我们先抽取用户和商品的文本特征和,我们使用单个解码器生成当前用户商品对的评论,在每一步,我们先将和拼接, 然后再输入到decoder中。为了进行对抗性训练,我们还训练了一个评论判别器和评论生成器。评论判别器的目的是判断评论是不是用户是否给商品上编写的。
w我们有一个用户商品的评分矩阵, 和分别是用户和商品的个数。我们假设所有的评分带有噪音(均值为0,方差为的高斯噪音), 所以我们的评分为:
如果用户对商品进行评分,那么为1,否则为0.
为了解决稀疏性的问题,此处我们假设评论文档中抽取的文本特征可以用作隐特征的信息性指标,所以我们有:
通过在潜在变量的先验分布中引入文本特征,上下文感知矩阵分解模型可以有效地利用辅助信息,从而解决传统协同过滤方法的稀疏性问题。
此处我们采用EM算法对模型进行优化。
实验
个性化的MT-P方法倾向于在所有测试数据集中执行所有MT方法中的最佳性能,并且在每种情况下,MT结果始终优于所有基线;
小结
本文提出了一种新的多任务学习框架,它可以同时学习进行评分预测和推荐解释。通过两个任务的联合训练还可以提升效果。与当前最新技术相比,所有测试数据集的评测效果都有所提高。与使用更传统的方法相比,所产生的解释性也更接近于实际情况。
参考文献