论文《Neural News Recommendation with Attentive Multi-View Learning》阅读
论文概况
今天带来的论文是发表于 IJCAI 2019 的新闻推荐作品《Neural News Recommendation with Attentive Multi-View Learning》,论文聚焦于对新闻的标题、内容、分类等文字特征进行提取和交叉影响的建模,完成对最终新闻点击结果的预测。
文章提出模型 NAML,成为新闻推荐领域引用较多的作品之一。
Introduction
模型通过文字feature进行建模,遵照模型结构图可以看到,分为三部分,news encoder模块,user encoder模块以及预测模块。
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}
We?∈RV×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}
emt?∈RD 。
然后是 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}
Ft?∈RNf?×(2K+1)D ,
b
t
∈
R
N
f
\mathbf{b}_{t} \in \mathbb{R}^{N_f}
bt?∈RNf? 表示偏置向量,对应映射维度为
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(i?K):(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?=qt??tanh(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=1M?exp(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=1∑M?αjt?cjt?.(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}
We?∈RV×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?=qb??tanh(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}
αib?rb?=∑j=1P?exp(ajb?)exp(aib?)?,=j=1∑P?αjb?cjb?.?(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?=qv??tanh(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=αc?rc+αsc?rsc+αt?rt+αb?rb,(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?=qn??tanh(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=1N?exp(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=1∑N?αin?ri?.(14)
预测层
y
^
=
u
?
r
.
(15)
\hat{y} = \mathbf{u}^{\top} \mathbf{r}. \tag{15}
y^?=u?r.(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=1K?exp(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=?i∈S∑?log(pi?).(17)
论文总结
本文通过结合注意力机制处理tile、body、category 三类 文本信息完成了新闻推荐,是引用较多的 fundation 类作品。
|