论文《Neural News Recommendation with Attentive Multi-View Learning》阅读

论文概况

今天带来的论文是发表于 IJCAI 2019 的新闻推荐作品《Neural News Recommendation with Attentive Multi-View Learning》,论文聚焦于对新闻的标题、内容、分类等文字特征进行提取和交叉影响的建模,完成对最终新闻点击结果的预测。

文章提出模型 NAML,成为新闻推荐领域引用较多的作品之一。

illustration

Introduction

模型通过文字feature进行建模,遵照模型结构图可以看到,分为三部分,news encoder模块,user encoder模块以及预测模块。

architecture of NAML

News Encoder Module

news encoder用于提取每个新闻的交叉特征。

news encoder模块又分为四部分,category encoder,title encoder, body encoder以及注意力融合模块。

title encoder

对于news title,首先是 Embedding 层,新闻 title 包含 M M M 个单词,表示为 [ w 1 t , w 2 t , ⋯   , w M t ] [w_{1}^t, w_{2}^t, \cdots, w_{M}^t] [w1t,w2t,,wMt], 通过check-up table W e ∈ R V × D \mathbf{W}_e \in \mathbb{R}^{V \times D} WeRV×D V V V 表示所有语料的单词数量, D D D 表示单词向量维度),将每个单词映射成词向量 [ e 1 t , e 2 t , ⋯   , e M t ] [\mathbf{e}_{1}^t, \mathbf{e}_{2}^t, \cdots, \mathbf{e}_{M}^t] [e1t,e2t,,eMt] ,任意单词 w m t w_{m}^{t} wmt 对应向量为 D D D维,即 e m t ∈ R D \mathbf{e}_{m}^t \in \mathbb{R}^{D} emtRD

然后是 Convoluton 层,通过CNN完成,窗口大小为 2 K + 1 2K+1 2K+1 ,卷积核是 F t ∈ R N f × ( 2 K + 1 ) D \mathbf{F}_{t} \in \mathbb{R}^{N_f \times (2K+1)D} FtRNf×(2K+1)D b t ∈ R N f \mathbf{b}_{t} \in \mathbb{R}^{N_f} btRNf 表示偏置向量,对应映射维度为 N f N_f Nf。具体如下所示:

c i t = ReLU ⁡ ( F t × e ( i − K ) : ( i + K ) t + b t ) . (1) \mathbf{c}_{i}^{t} =\operatorname{ReLU}\left(\mathbf{F}_{t} \times \mathbf{e}_{(i-K):(i+K)}^{t}+\mathbf{b}_{t}\right). \tag{1} cit=ReLU(Ft×e(iK):(i+K)t+bt).(1)

针对title中的每个单词,最终得到所有的单词向量,即 [ c 1 t , c 2 t , ⋯   , c M t ] [\mathbf{c}_{1}^t, \mathbf{c}_{2}^t, \cdots, \mathbf{c}_{M}^t] [c1t,c2t,,cMt]

再然后是 Word-level Attention 层, 获取每个单词的注意力,并进行加权求和表示,具体如下:

a i t = q t ⊤ tanh ⁡ ( V t × c i t + v t ) , (2) a_{i}^{t} =\mathbf{q}_{t}^{\top} \tanh \left(\mathbf{V}_{t} \times \mathbf{c}_{i}^{t}+\mathbf{v}_{t}\right), \tag{2} ait=qttanh(Vt×cit+vt),(2)

α i t = exp ⁡ ( a i t ) ∑ j = 1 M exp ⁡ ( a j t ) , (3) \alpha_{i}^{t} =\frac{\exp \left(a_{i}^{t}\right)}{\sum_{j=1}^{M} \exp \left(a_{j}^{t}\right)}, \tag{3} αit=j=1Mexp(ajt)exp(ait),(3)

r t = ∑ j = 1 M α j t c j t . (4) \mathbf{r}^{t}=\sum_{j=1}^{M} \alpha_{j}^{t} \mathbf{c}_{j}^{t}. \tag{4} rt=j=1Mαjtcjt.(4)

其中, V t , v t , q t \mathbf{V}_t, \mathbf{v}_t, \mathbf{q}_t Vt,vt,qt 分别表示映射矩阵,偏置向量以及attention query 向量。

body encoder

同理,针对新闻主体内容(news body),同样使用上述方法。这里简要介绍符号。

对于news body,新闻 body 包含 P P P 个单词,表示为 [ w 1 b , w 2 b , ⋯   , w P b ] [w_{1}^b, w_{2}^b, \cdots, w_{P}^b] [w1b,w2b,,wPb], 通过check-up table W e ∈ R V × D \mathbf{W}_e \in \mathbb{R}^{V \times D} WeRV×D V V V 表示所有语料的单词数量, D D D 表示单词向量维度),将每个单词映射成词向量 [ e 1 b , e 2 b , ⋯   , e P b ] [\mathbf{e}_{1}^b, \mathbf{e}_{2}^b, \cdots, \mathbf{e}_{P}^b] [e1b,e2b,,ePb]

卷积之后通过注意力层及加权求和得到最终的body向量 r b \mathbf{r}^b rb ,具体如下:

a i b = q b ⊤ tanh ⁡ ( V b × c i b + v b ) , (5) a_{i}^{b}= \mathbf{q}_{b}^{\top} \tanh \left(\mathbf{V}_{b} \times \mathbf{c}_{i}^{b}+\mathbf{v}_{b}\right), \tag{5} aib=qbtanh(Vb×cib+vb),(5)

α i b = exp ⁡ ( a i b ) ∑ j = 1 P exp ⁡ ( a j b ) , r b = ∑ j = 1 P α j b c j b . (6) \begin{aligned} \alpha_{i}^{b}&=\frac{\exp \left(a_{i}^{b}\right)}{\sum_{j=1}^{P} \exp \left(a_{j}^{b}\right)} ,\\ \mathbf{r}^{b}&=\sum_{j=1}^{P} \alpha_{j}^{b} \mathbf{c}_{j}^{b}. \end{aligned} \tag{6} αibrb=j=1Pexp(ajb)exp(aib),=j=1Pαjbcjb.(6)

category encoder

分类分为主分类(topic categories)和子分类(subcategories),分别通过 c c c s c sc sc 进行表示。

映射层将分类信息从one-hot 分类向量转化为 e c \mathbf{e}^{c} ec e s c \mathbf{e}^{sc} esc 。通过一个单层MLP单元得到对应分类和子分类的向量表示 r c \mathbf{r}^{c} rc r s c \mathbf{r}^{sc} rsc 。具体如下:

r c = ReLU ⁡ ( V c × e c + v c ) . (7) \mathbf{r}^{c}=\operatorname{ReLU}\left(\mathbf{V}_{c} \times \mathbf{e}^{c}+\mathbf{v}_{c}\right) . \tag{7} rc=ReLU(Vc×ec+vc).(7)

r s c = ReLU ⁡ ( V s × e s c + v s ) . (8) \mathbf{r}^{s c}=\operatorname{ReLU}\left(\mathbf{V}_{s} \times \mathbf{e}^{s c}+\mathbf{v}_{s}\right) . \tag{8} rsc=ReLU(Vs×esc+vs).(8)

attentive pooling

通过一层 单层的MLP 以及 一个共同的询问向量 q v \mathbf{q}_v qv 完成,对 title 的注意力 α t \alpha_{t} αt 计算具体如下,其余类似,分别得到 α t , α b , α c , α s c \alpha_{t}, \alpha_{b}, \alpha_{c}, \alpha_{sc} αt,αb,αc,αsc

a t = q v ⊤ tanh ⁡ ( U v × r t + u v ) , (9) a_{t}=\mathbf{q}_{v}^{\top} \tanh \left(\mathbf{U}_{v} \times \mathbf{r}^{t}+\mathbf{u}_{v}\right) , \tag{9} at=qvtanh(Uv×rt+uv),(9)

α t = exp ⁡ ( a t ) exp ⁡ ( a t ) + exp ⁡ ( a b ) + exp ⁡ ( a c ) + exp ⁡ ( a s c ) . (10) \alpha_{t}=\frac{\exp \left(a_{t}\right)}{\exp \left(a_{t}\right)+\exp \left(a_{b}\right)+\exp \left(a_{c}\right)+\exp \left(a_{s c}\right)} . \tag{10} αt=exp(at)+exp(ab)+exp(ac)+exp(asc)exp(at).(10)

通过加权求和得到最终的新闻向量表示 r \mathbf{r} r

r = α c r c + α s c r s c + α t r t + α b r b , (11) \mathbf{r}=\alpha_{c} \mathbf{r}^{c}+\alpha_{s c} \mathbf{r}^{s c}+\alpha_{t} \mathbf{r}^{t}+\alpha_{b} \mathbf{r}^{b}, \tag{11} r=αcrc+αscrsc+αtrt+αbrb,(11)

User Encoder

一个用户的交互历史是由多个新闻组成的,通过对多个新闻计算注意力及加权组成最后的用户表示,就可以完成用户模块的建模,具体如下:

a i n = q n ⊤ tanh ⁡ ( W n × r i + b n ) , (12) a_{i}^{n} =\mathbf{q}_{n}^{\top} \tanh \left(\mathbf{W}_{n} \times \mathbf{r}_{i}+\mathbf{b}_{n}\right), \tag{12} ain=qntanh(Wn×ri+bn),(12)

α i n = exp ⁡ ( a i n ) ∑ j = 1 N exp ⁡ ( a j n ) , (13) \alpha_{i}^{n} =\frac{\exp \left(a_{i}^{n}\right)}{\sum_{j=1}^{N} \exp \left(a_{j}^{n}\right)}, \tag{13} αin=j=1Nexp(ajn)exp(ain),(13)

u = ∑ i = 1 N α i n r i . (14) \mathbf{u} =\sum_{i=1}^{N} \alpha_{i}^{n} \mathbf{r}_{i} . \tag{14} u=i=1Nαinri.(14)

预测层

y ^ = u ⊤ r . (15) \hat{y} = \mathbf{u}^{\top} \mathbf{r}. \tag{15} y^=ur.(15)

通过 K K K 个负例(randomly sampled)及数据集中的正例组成一个 K + 1 K+1 K+1 - 路 二分类 数据元组,采用 softmax 进行预测唯一正例,如下:
p i = exp ⁡ ( y ^ i + ) exp ⁡ ( y ^ i + ) + ∑ j = 1 K exp ⁡ ( y ^ i , j − ) , (16) p_{i} =\frac{\exp \left(\hat{y}_{i}^{+}\right)}{\exp \left(\hat{y}_{i}^{+}\right)+\sum_{j=1}^{K} \exp \left(\hat{y}_{i, j}^{-}\right)}, \tag{16} pi=exp(y^i+)+j=1Kexp(y^i,j)exp(y^i+),(16)

L = − ∑ i ∈ S log ⁡ ( p i ) . (17) \mathcal{L} =-\sum_{i \in \mathcal{S}} \log \left(p_{i}\right). \tag{17} L=iSlog(pi).(17)

论文总结

本文通过结合注意力机制处理tile、body、category 三类 文本信息完成了新闻推荐,是引用较多的 fundation 类作品。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值