一、概述
名称:Neural News Recommendation with Attentive Multi-View Learning
作者:Chuhan Wu, Fangzhao Wu, Mingxiao An, Jianqiang Huang, Yongfeng Huang, Xing Xie
文献类型:IJCAI19
年份:2019
源码网站:https://github.com/wuch15/IJCAI2019-NAML 作者主页:https://wuch15.github.io/
整理日期:2020年5月13日
二、主要解决问题
现有的新闻推荐系统通常只根据一种信息如标题来进行推荐。
=>使用多种信息来进行推荐。
=>新闻编码器+用户解码器。
=>新闻编码器是一个基于attention的multi-view学习模型,可以学习多种新闻表示形式(如标题、正文、主题分类等)。用户解码器是利用attention机制根据用户的浏览记录学习用户的表示。
三、解决思路

1、News Encoder
这一部分的功能是利用各种信息来学习新闻的表示,采用attention机制将各种信息看作是新闻的一个不同视角学习其共同表示。news encoder共有四个组成部分:
(1)title encoder:用于从新闻标题中学习到新闻的表示。
- 第一层:word embedding:通过We∈RV×D,将新闻标题从单词序列[w1t,w2t,...,wMt]转换为一个低维语义向量序列[e1t,e2t,...,eMt],其中M是新闻单词的个数,V是词汇量个数,D是embedding维度。
- 第二层:CNN:通过CNN来学习单词间上下文的表示,第i个单词的上下文表示为:
cit=ReLU(Ft×e(i−K):(i+K)t+bt)
其中, e(i−K):(i+K)t是(i-K)到(i+K)的单词embedding的拼接,Ft∈RNf×(2K+1)D和bt∈RNf是CNN的核函数和偏移量,Nf是CNN的个数,2K+1是他们的窗口大小。
这一层的输出是单词上下文表示的序列:[c1t,c2t,...,cMt]。
- 第三层:word-level attention network:目的是选择出标题中重要的单词。第i个单词的attention权重αit计算如下:
ait=qtTtanh(Vt×cit+vt)αit=∑j=1Mexp(ajt)exp(ait)
其中,Vt和vt是投影参数,qt是attention中的query向量。
- 最终,新闻标题的表示形式为加权上下文表示:rt=∑j=1Mαjtcjt
(2)body encoder:用于从新闻正文中学习到新闻的表示。同title encoder类似。
- 第一层:word embedding:同title encoder的word embedding层一致。通过We∈RV×D,正文的单词序列[w1b,w2b,...,wPb]转换为一个低维向量序列[e1b,e2b,...,ePb],其中,P是正文的长度。
- 第二层:CNN:从[e1b,e2b,...,ePb]中学习到上下文表示[c1b,c2b,...,cPb]
- 第三层:attention network:目的是选择出正文中重要的单词。第i个单词的attention权重αib计算如下:
aib=qbTtanh(Vb×cib+vb)αib=∑j=1Pexp(ajb)exp(aib)
其中,Vb和vb是投影参数,qb是attention中的query向量。
- 最终,新闻正文的表示形式为加权上下文表示:rb=∑j=1Pαjbcjb
(3)category encoder:用于从新闻类别中学习到新闻的表示。
catogory encoder的输入是一级分类vc的ID和二级分类vsc的ID。category encoder有两层。
- 第一层:分类ID embedding层。将离散的一级分类和二级分类ID转换到低维空间ec和esc。
- 第二层:dense层,获得一级分类和二级分类的表示:
rc=ReLU(Vv×ec+vc)rsc=ReLU(Vs×esc+vs)
其中,Vc,vc,Vs,vs是dense层的参数。
(4)attention pooling:利用attention机制来学习不同信息的权重。标题、正文、一级分类和二级分类的attention权重分别为αt,αb,αc,αsc,αt计算如下(其余同理):
αt=qvTtanh(Uv×rt+uv)αt=exp(at)+exp(ab)+exp(ac)+exp(asc)exp(at)
其中,Uv和uv是投影参数,qv是attention中的query向量。
- news encoder最终的输出是加权的新闻表示形式:r=αcrc+αscrsc+αtrt+αbrb
2、User Encoder
这一部分的目的是从用户历史浏览记录中学习用户的表示。user encoder模块采用attention机制来学习各个浏览记录的权重。
用户浏览过的第i个新闻的attention权重是αin,计算如下:
ain=qnTtanh(Wn×ri+bn)αin=∑j=1Nexp(ajn)exp(ain)
其中,qn,Wn,bn是attention机制的参数。
最终,用户的表示为加权和:u=∑i=1Nαinri,N是浏览过的新闻总数。
3、Click Predictor
候选新闻Dc的表示为rc,用户u的表示为u。点击概率y^通过候选新闻和用户表示的内积得到:y^=uTrc。
4、Model Training
采用negative samlping技术来进行模型训练。用户浏览过的新闻作为正样本,在同一个session中随机选择K条用户没有点击过的新闻作为负样本,我们可以获得正样本的概率y^+和K个负样本的概率[y^1−,y^2−,...,y^K−]。推荐问题可以转变为K+1-分类问题,使用softmax对这些概率进行正则化得到正样本的后验点击概率:
pi=exp(y^i+)+∑j=1Kexp(y^i,j−)exp(y^i+)
其中,y^+是第i个正样本的点击概率分数,y^i,j−是同第i个正样本处于相同session的第j个负样本的点击概率分数。
最终得到损失函数为:
L=−i∈S∑log(pi)
其中,S是正训练样本的集合。
四、实验结果
