文章目录

  • 简介
  • 问题定义
    • 背景
    • Problem Definition
  • 评价指标
    • AUC
      • ROC Curve
        • TPR
        • FPR
      • AUC(Area Under Curve)
      • ROC曲线的作图方法
      • Example
    • NDGG@K
      • CG
      • DCG
      • NDCG
    • MRR
  • 数据集
    • 数据集格式
      • behaviors.tsv
      • news.tsv
      • relation_embedding.pkl
      • 数据集的划分
    • txt数据集
    • small数据集
    • large数据集
  • 已有的模型
    • 已有模型的简要概括
    • 模型训练方式
      • Softmax
      • 损失函数的定义
    • NPA
      • News Encoder
      • User Encoder
      • Click Predictor
      • NPA的Architecture
    • NAML
      • News Encoder
        • title encoder
        • body encoder
        • category encoder
        • Attention Pooling
      • User Encoder
      • Click Predictor
    • NRMS
      • News Encoder
      • User Encoder
      • Click Predictor

简介

NewsRecommendation是Recommendation的一个子领域,但是新闻推荐系统不同于其他的推荐系统,还需要对新闻文本进行处理,之前NewsRecommendation这个领域没什么进展是因为缺乏相关的数据集,Microsoft最近刚刚开源了MIND数据集,可以使用MIND数据集来研究新闻推荐系统的相关模型算法

关于MIND数据集的介绍可以参考这篇paper: MIND: A Large-scale Dataset for News Recommendation

MSRA对NewsRecommendation提出的几个模型的相关paper如下:

NPA: Neural News Recommendation with Personalized Attention

Neural News Recommendation with Multi-Head Self-Attention

Neural News Recommendation with Attentive Multi-View Learning

Fine-grained Interest Matching for Neural News Recommendation

Neural News Recommendation with Long- and Short-term User Representations

Ali对推荐系统的相关研究论文(对该领域的研究有所帮助):

Deep Interest Network for Click-Through Rate Prediction

问题定义

背景

在现在这个信息化的时代,人们阅读新闻的方式已经逐渐从纸质阅读上转到了电子设备上。现在每天都会有成百上千万的新闻推送给每个人,对于个人用户来说从这成百上千万条新闻中选取自己感兴趣的文章是非常困难的。因此个人新闻推荐技术就显得尤为重要。许多网站如 Google NewsMSN News 开始使用个人新闻推荐技术来给用户按推荐新闻。

个人新闻推荐的核心就在于 用户兴趣与候选新闻的正确匹配

Problem Definition

个人新闻推荐问题可以按照如下进行描述:

给定一个一个用户 u,再给定一个用户浏览过的历史新闻的集合
su= {d1, . . . , dn}

对每一条候选新闻 ci,都有一个标签 yi ∈ {0, 1} 来预测用户是否会点击该条候选新闻。

所有新闻推荐的目标就是构建一个预测模型 g(·, ·) , 对于每一组用户与候选新闻的组合 (u, c) ,可以使用函数 g:su, c → y 来预测用户点击该新闻的概率,最后新闻推荐的顺序就是按照这个计算得到的概率大小来对候选新闻进行排序。

以上就是个人新闻推荐问题的定义。

评价指标

Microsoft一共使用了 AUC、MRR、nDCG@5、nDCG@10 四个指标来对模型预测的结果进行评估。

推荐系统还有很多指标来衡量性能就不在此赘述。

AUC

AUC是用于衡量一个分类器在分类任务上的表现好坏的评价指标

ROC Curve

ROC曲线是用来评价分类任务性能好坏的一个指标,ROC曲线主要用来描述以下两个参数:

TPRFPR (真阳率与假阳率)

分类任务中的几个类别:(对于二分类问题)

TP:预测为真且本来样本也为真

FP:预测为真但实际分类应该为假

TN:预测为假且实际分类也为假

FN:预测为假实际分类为真

TPR

真阳率:TP / TP +FN ,即类别为真的样本预测为真的概率。

FPR

假阳率: FP / TN +FP ,即类别为假的样本预测为真的概率

ROC曲线就是用来描述这两个参数的曲线,以TPR为纵轴,以FPR为横轴。

AUC(Area Under Curve)

AUC即ROC曲线下的面积大小。

一般认为AUC最小值为 0.5 ,意味着对好坏样本预测为真的概率都为0.5, 显然这个分类器没有意义,相较于抛硬币来说。

ROC曲线的作图方法

调整分类阈值(也就是说预测概率大于某个值时判定为真,预测概率小于某个值时判定为假)来得到一组 TPRFPR 的值,以此得到ROC曲线。

AUC的计算方法就是微积分,做完图自然就得到AUC的值了。

Example

下面给一张ROC曲线示意图:

AUC示意图:

NDGG@K

第二个评价指标是NDCG(Normalized Discounted Cummulative Gain)K是一个参数,在下文进行解释。

CG

首先是CG(Cummulative Gain)累积效益,在推荐系统中CG即将每个推荐结果相关性(relevance)的分值累加后作为整个推荐列表(list)的得分。即

k表示列表的长度,也就是上文中的k参数。rel i 则表示的是第i个推荐结果的相关度。

DCG

然后是DCG评价指标,DCG评价将位置因素也考虑了进去,

推荐结果的位置越后,结果其相关度discounted(打折扣)就越多

NDCG

DCG也存在其局限性,即一个用户的评价指标不能跟对另一个用户的评价进行比较。

所以要对每个用户的评价得分进行归一化。

计算NDGG需要引入一个概念IDGG(即对用户最理性的推荐结果得分),得到下列计算公式

对于某个用户的推荐结果计算


NDCG(每个用户的NDCG取平均)计算如下:

MRR

MRR的理解相对来说比较简单

MRR的计算公式如下:

其中Q是用户的个数,rank i是第i位用户的推荐结果中第一个为真的预测item的position。

先得到每个用户的rank i对其取倒数作为该用户推荐结果的分数,然后取平均得到MRR指标。

数据集

根据Microsoft发表的论文,一共有以下三个数据集,都是基于MIND数据集来进行Sample的。

下面简单介绍一下MIND数据集的格式,txt数据集相较于small数据集来说更为的简单且数据量也很小,small数据集又是large数据集的一个子集,所以只简单地介绍一下large数据集的数据格式。

数据集格式

MIND数据集是微软跟踪了微软新闻中的100万个用户与161013篇新闻的交互行为所得到的数据集。

具体的数据细节可以看下图:

MIND数据集里记录了1000000个用户的行为历史,包括有161013篇新闻,15777377个Impression(一个Impression是在某条记录中展现给用户看的新闻界面,包含有该页中的新闻以及对应的标签,表示用户是否有点击过该新闻)以及24155470条Click behavior(每个用户点击过的新闻历史)。

Microsoft提供的MIND数据集里包括有以下几个文件:

behaviors.tsvnews.tsventity_embedding.pkl

behaviors.tsv

首先是behaviors.tsv中的数据,该文件中的每一行数据都是用于模型训练的一个 train_data ,

behavirs.tsv中的一行数据以如下格式给出:

每一行数据依次包括有:Impression_id(该条记录的id)、用户id、时间点、用户的点击历史、以及一个impression。

behaviors中的每条数据中的新闻都以新闻id的形式给出,impression中的每条新闻都对应一个标签 y , 1代表用户点击该新闻,0表示用户没有点击该新闻

news.tsv

news.tsv中包括有每条新闻的细节信息用于表征新闻。

新闻中的每条数据依次包括:新闻id、新闻的类别、子类别、标题、摘要、URL以及新闻中的实体信息

relation_embedding.pkl

该文件存储了实体关系的Embedding矩阵

数据集的划分

MIND数据一共收集了用户6个星期的行为

将前五个星期作为训练集,将第五个星期的最后一天作为验证集,将最后一星期的用户行为作为测试集

txt数据集

txt数据集是Microsoft用于展示论文中的实验结果提供的数据集,比small数据集还小上非常多,之所以称其为txt数据集是因为Microsoft是以txt文件格式来展示这份数据集,想要看一下这个作为示例的小数据集读者可以去Github上查看一下微软提供的原始数据

small数据集

small数据集是从large数据集中抽取出来的,所以数据量比较小,具体的细节如下:

user_num : 50000

behaviors : 156965+73152

news : 51282+42416

large数据集

large数据集具体的细节如下:

user_num : 750434

behaviors : 2232748 + 376471

news : 101527+72023

已有的模型

已有模型的简要概括

Microsoft当前提出的模型有NPA、NRMS、NAML等,这三个模型在大体结构上都保持了一致性。
NPA、NRMS以及NAML从整体构造上来看分为三个部分:News EncoderUser EncoderClick Predictor
三个module的作用分为为:
News Encoder : 这个模型是用于从News的信息中来学习News的表征
User Encoder : 这个模型是用于从用户的历史点击状态中来学习用户的表征
Click Predictor : 这个模型是用于计算由前两个模型计算得到的News Representation 以及 User Representation的匹配得分以此来为用户进行个人新闻推荐服务

模型训练方式

已有的模型的训练方式都完全一样,在产生训练集的时候给每个正样本加上K个负样本进行一起训练以此来得到更好的训练效果。论文里面提到当K取4时模型训练之后的泛化能力最好。

Softmax

对于Click Predictor计算得到的score,使用Softmax层进行一次Normalization,然后得到正样本的预测概率大小 Pi 用于计算损失函数。

损失函数的定义


计算得到损失函数之后就可以进行梯度的反向传播来训练搭建的模型了。

NPA

NPA的特点即Personal Attention,NPA论文提出的idea就是每个用户对每条新闻的关注点不同(如下图)

对于两个用户来说当他们看到同一条新闻时,User-1与User-2所关注的地方是不一样的,这个地方就是NPA模型的创新点,也就是所谓的idea。
NPA模型是在计算 User EncoderNews Encoder 时加入了Attention机制,将 userid 也进行encode作为Attention机制中的query向量来对News Encoder以及User Encoder进行更近一步的表征。

News Encoder

NPA中的NewsEncoder一共有三层(NPA中只取了news title作为新闻特征)
首先是 Embedding Layer ,将news title转换为矩阵
然后是 CNN ,将上一层得到的矩阵用CNN再进行特征的提取
最后一层就是 Attention Layer :查询向量是Userid进行Encode得到的,然后做一次Attention将新闻的表征矩阵转换为一个表征向量,到这新闻的表征计算就结束了。

User Encoder

User Encoder是用用户历史点击过的新闻来计算用户的表征,这一个Encoder是搭建在News Encoder之上的,在NewsEncoder的基础上再加上一层AttentionLayer,使用用户Userid作为QueryVector再次进行Attention从用户点击过的历史新闻表征来得到User Representation。

Click Predictor

这一层就非常的简单,就是将NewsEncoder与UserEncoder计算得到的两个vector做一次内积得到分数,然后做Softmax回归。

NPA的Architecture

NAML

NAML的idea就是新闻的信息不止有news title,如果加上body、category等等,模型的训练效果会更好

News Encoder

NAML的News Encoder一共有四个components,

title encoder

第一个是title encoder,一共有三层
第一层是Embedding , 将title转换为词矩阵
第二层是CNN, 进一步提取特征
第三层是一个Word-Level的Attention ,训练出一个查询向量,求出News Representation

body encoder

这一层与title encoder相似,但是参数不共享,所以就不多讲了

category encoder

category就两层:EmbeddingLinear NetWork

Attention Pooling

将前三个components得到的vector进行一次Attention得到News Representation

User Encoder

User Encoder在News Encoder的基础上又加了一层Attention然后计算得到User Representation
这个跟Google之前提出的论文提问非常契合:
Attention is all you need!

Click Predictor

同NPA一样的结构,就不在此赘述了

NRMS

NRMS的idea来自于Self-Attention(来源于Transformer),Transformer还没有总结过,就不在此细讲。

News Encoder

不同于NPA,NRMS的NewsEncoder有三层:EmbeddingWord Level Attention 以及 additive Attention
将新闻的newstitle转换为词矩阵后使用两层Attention计算得到news的representation

User Encoder

User Encoder在NewsEncoder的基础上又加了一层self-Attention,得到用户的表征

Click Predictor

与前两个模型一样不在此赘述

NewsRecommendation相关推荐

  1. 今日arXiv精选 | 46篇EMNLP 2021最新论文

     关于 #今日arXiv精选  这是「AI 学术前沿」旗下的一档栏目,编辑将每日从arXiv中精选高质量论文,推送给读者. Neural Machine Translation Quality and ...

  2. 斯坦福大学博士后王鸿伟: 知识图谱辅助的个性化推荐系统

    导 读 互联网产业蓬勃发展的今天,个性化推荐系统是所有面向用户的互联网平台的关键技术.知识图谱作为一种新的知识载体,为推荐系统提供了额外的辅助信息来源,并有助于提升推荐结果的多样性和可解释性.本次分享 ...

最新文章

  1. Nature:拟南芥根系微生物组的结构
  2. sock_dgram 可以用listen吗_洗脸皂可以天天用吗
  3. Exchange 2013恢复已禁用用户邮箱
  4. MyEclipse配置DataBase Explorer
  5. 台式蓝牙模块_华为第一台台式机来了!已上线官网 定价尚未公布
  6. DBASK数据库提问平台问题集萃,首批近二十位专家团曝光
  7. ArcGIS 10.X功能增减(转)
  8. 顺序表查找及其优化(Java)
  9. C# 调用word时,禁用宏
  10. php ora01017,建立DBLINK报ORA-01017,ORA-02063
  11. hp刀片服务器性能分析,IBM刀片服务器与高性能计算-20210723075634.ppt-原创力文档...
  12. 本地搭建私有云盘:群晖系统存储空间设置 3/5
  13. jdk12switch表达式
  14. PMP之敏捷图表之燃起图和燃尽图、累积流量图
  15. 二叉树遍历-层序-递归
  16. 非组蛋白带什么电荷_非组蛋白是构成真核生物染色体的基本结构蛋白, 富含带正电荷的精氨酸( Arg ) 和赖氨酸( Lys ) 等碱 性氨基酸。_学小易找答案...
  17. JUC-II CPU的微程序设计 计算机组成原理课程设计 微指令编码
  18. 中国第一代程序员盘点
  19. 北京通信展的精华,都在这里!(下)
  20. HadoopWindows下客户端环境配置

热门文章

  1. 2-24财财的财经早报!
  2. 总结利用SEO赚钱的几种方法
  3. 独立站卖家如何设置Facebook的重定向广告
  4. C# 解析dat文件
  5. Android---拍照
  6. 论文查重注意事项,勿踩雷区
  7. 学生个人消费管理系统开发
  8. 操作系统 - C语言实现生产者消费者问题
  9. ActiveX控件注册
  10. 【开源项目】SpringCloud 快速构建项目脚手架工程(持续更新)