前言
- Recsys 2020中一篇关于新闻推荐的长文
- 官方代码: https://github.com/danyang-liu/KRED
- 来自微软亚研和中科大的合作
- 关键问题/背景:
- 新闻内容中包含有实体,是重要的辅助信息
- 工业新闻推荐系统包含各种关键应用,如个性化推荐、逐条推荐、新闻分类、新闻流行度预测和本地新闻检测。
- 通过合并实体能更好地表征文档/新闻,统一构建这些应用(多任务学习)。
- 然而,现有的文档表征模型要么在不考虑实体的情况下表示新闻文章,要么依赖于特定类型的文本编码模型(如 DKN) ,从而降低了文档表征的泛化能力和效率。
- 主要工作:
- 利用KGAT模型利用文章内的实体信息
- 构建多任务训练框架,将推荐与其他多个相关任务协同训练
模型
1. 知识图谱利用
包括两部分:实体表征+上下文嵌入:
对于一篇新闻,取其标题及正文内的实体,每个实体都通过KGAT进行近邻聚合(知识图谱预先通过TransE训练得到实体和关系嵌入)
KGAT对实体进行聚合的原理如下: 在得到聚合后的实体表征后,进行上下文信息的利用;文中将实体的频率信息(实体出现的频率,分段为20类)、位置信息(标题还是正文)与类别信息(实体类别比较多:公司/人物/等等)利用嵌入编码,加到实体嵌入中:2. 特征提取(Information Distillation)
一个实体的最终重要性不仅取决于其自身的信息,而且还受到文章和文章主题中共同出现的其他实体的影响。
例如,假设有两篇与 a 市相关的新闻报道。第一篇文章报道了一位著名的音乐明星将在 a 市举办音乐会,第二篇文章报道了 a 市发生的强烈地震。显然,前一篇文章的关键实体是名人,而后一篇文章的关键实体是地点。文中使用了一种简单的注意机制,将一篇新闻所有实体的信息合并到一个输出向量中。如下所示:实体嵌入逐一和新闻向量做计算,然后softmax加和:
最后将注意力聚合得到的向量和新闻原始的特征表示进行组合
新闻原始表征v_d可以使用Bert/LDA等模型构建。
3. 多任务学习
前面提到了多种预测任务:新闻推荐、i2i推荐、新闻流行度预测、新闻分类预测、本地新闻预测(分类)
采用共享参数的形式进行,仅针对不同的任务设计不同的预测器:
-
user2item推荐
注:其中的用户向量是使用注意力聚合将用户看过的新闻向量进行加和得到的
- item2item推荐:新闻向量的余弦相似度
- 其他任务:
为了避免在结合不同任务的损失时引入新的超参数,文中使用了两阶训练方法来进行多任务学习:
- 第一阶段:每个batch交替训练不同的任务
- 第二阶段:选取目标任务的数据来得到具体的模型(u2i推荐)
实验
MSN数据集上进行的实验(开源数据集:MIND,但上面缺少关键的知识图谱三元组信息) 文中还对嵌入效果进行了可视化,可以看到对于不同类别的文章,KRED的效果分布更加清晰 案例研究:KRED的实体重要度分配:总结
本文提出的KRED着眼点在于新闻的表征上,利用KGAT聚合新闻实体信息,并且整合了其他上下文信息;此外利用多任务学习的思想进一步提高了模型效果。但在用户建模上没有新的思路,可以考虑跟上一篇文章结合一下,更好把知识图谱应用起来。
END
本人简书所有文章均为原创,欢迎转载,请注明文章出处 。百度和CSDN等站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的笔记/博文进行更新,因此请访问本人简书主页查看最新信息https://www.jianshu.com/u/40d14973d97c
网友评论