CNE-SUE论文阅读笔记

Neural News Recommendation with Collaborative News Encoding and Structural User Encoding论文阅读笔记

Abstract

存在的问题:

​ 现有的研究通常将新闻标题和内容分开编码,而忽略了它们之间的语义交互,这对于新闻文本的理解是不够的。此外,以往的模型只对用户的浏览历史进行编码,而没有利用用户浏览新闻的结构相关性来明确反映用户的兴趣。

提出方法:

​ 在这项工作中,我们提出了一个由协同新闻编码(CNE)和结构用户编码(SUE)组成的新闻推荐框架,以加强新闻和用户表征学习。CNE 配备了双向 LSTM,通过交叉选择和交叉关注模块对新闻标题和内容进行协同编码,从而学习语义交互式新闻表征。SUE 利用图卷积网络提取用户历史的聚类结构特征,然后利用聚类内和聚类间注意力模块学习分层的用户兴趣表征。

Introduction

​ 现有的新闻推荐模型通常将新闻标题和内容分开编码,并对用户的浏览历史进行编码,而没有明确的结构建模。我们认为,这些编码限制了新闻和用户表征的能力。为了加强新闻和用户编码,这项工作建立在新闻和用户表征学习这两个方面的基础上:

对新闻标题和内容之间的语义互动进行编码

​ 标题和内容在新闻中扮演着不同的角色,但它们又是相辅相成的。新闻标题提炼了内容的信息,而内容则解释了标题的细节。以往的研究将新闻标题和内容视为两个独立的文本特征,从而导致了 "语义编码困境"。这种困境是双向的,因为

  • (i) 虽然新闻标题比内容短得多,但根据经验,标题编码的性能要优于内容编码;这可以归因于人类总结的标题自然地代表了关键信息;
  • (ii) 新闻标题总是主观和修辞性的,以吸引潜在读者。这导致了严重的文本数据稀缺问题。带有不可见术语、隐喻和歧义的新闻标题使得人们很难理解标题措辞有限的新闻

​ 前人提出的新闻编码器要么只从标题中提取特征,要么将标题和内容分开编码,然后对它们进行串联或注意力融合。这种分别对标题和内容进行编码而不利用其语义交互的做法不足以用于新闻文本理解。

利用分层聚类结构对用户兴趣与新闻的相关性进行编码:

​ 虽然用户通常对不同的新闻主题有不同的兴趣,但她浏览过的同一主题的新闻往往有一定的逻辑关联。将用户兴趣的各个方面编码到特定群组中后,就可以利用兴趣群组之间的相关性来聚合整体用户表征。

​ 以往的研究通常将用户历史记录表述为有序的线性新闻序列。但是这种将用户历史视为新闻序列的编码方法无法明确模拟用户兴趣与新闻之间的分层相关性。

​ 与线性序列相比,分层聚类更适合代表用户的不同兴趣。由于相关新闻共享特定兴趣集群中的信息,因此用户历史可以结构化地编排为特定的兴趣集群。用分层聚类结构对用户历史记录进行编码,能更精确地表示新闻与用户兴趣的相关性。

​ 为了解决上述问题,我们在这项工作中提出了协同新闻编码(CNE)和结构用户编码(SUE),以学习语义交互式新闻表征和分层用户表征。

Method

​ 整体的模型结构如下:

pkTsCGt.png

协同新闻编码(CNE)

交叉选择编码

​ 还是传统开局,把标题单词序列和内容单词序列转化为单词嵌入。

​ 首先,采用两个并行双向 LSTM,分别从标题和内容词嵌入中提取序列特征

\(\overrightarrow{h}_i^t=\overrightarrow{LSTM}^t(w_i^t,\overrightarrow{h}_{i-1}^t,\overrightarrow{c}_{i-1}^t)\\\overleftarrow{h}_i^t=\overleftarrow{LSTM}^t(w_i^t,\overleftarrow{h}_{i+1}^t,\overleftarrow{c}_{i+1}^t)\)

\(\{h^t\},\{c^t\}\)分别是LSTM的隐藏状态和单元状态。 第 i 个标题序列特征融合为\(h_i^t=[\overrightarrow{h}_i^t;\overleftarrow{h}_i^t]\)。我们认为标题(内容)的全局语义信息保存在其 LSTM 单元状态中,并将最后的前向\(\overrightarrow{c}_N^t\)和后向\(\overleftarrow{c}_1^t\)连接起来作为语义记忆向量\(m^t\)

\(m^t=[\overrightarrow{c}_N^t;\overleftarrow{c}_1^t]\)

​ 为了促进标题和内容之间的语义交互,我们设计了一个门控交叉选择网络。具体来说,我们利用语义记忆向量\(m^{c(t)}\),通过一个 sigmoid 门函数对序列特征\(\{h^{t(c)}\}\)进行特征重新校准。这个门函数背后的动机是利用内容(标题)记忆向量\(m^{c(t)}\)从第 i 个标题(内容)序列特征\(h_i^{t(c)}\)中交叉选择重要的语义信息。

\(Gate_i^t=\sigma(W_g^hh_i^t+W_g^mm^c+b_g)\\\tilde{h}_i^t=Gate_i^t\odot h_i^t\)

\(\tilde{h}_i^t\)是第 i 个标题序列特征\(h_i^t\)与内容记忆向量\(m^c\)交互的交叉选择特征。这是标题与内容语义交互协作的第一阶段。

交叉注意力编码

​ 基于交叉选择序列特征\(\{\tilde{h}\}\),我们设计了一个两阶段注意力模块来学习标题和内容的交叉注意力表征。首先,我们使用自我注意层来学习顺序\(\{\tilde{h}\}\)的自注意表征。

\(\alpha_{self}^t=softmax(v^\mathsf{T}tanh(W\tilde{h}^t+b))\\r_{self}^t=\sum_{i=1}^N\alpha_{self,i}^t\tilde{h}_i^t\)

​ 然后,我们使用自我关注表示\(r_{self}\)作为查询,并使用\(\{\tilde{h}\}\)作为键值对来构建交叉关注层。这是协作标题-内容语义交互的第二阶段。

\(\alpha_{cross}^t=Attention(r_{self}^c,\{\tilde{h}^t\})\\r_{cross}^t=\sum_{i=1}^N\alpha_{cross,i}^t\tilde{h}_i^t\)

​ 我们对自我关注表征\(r_{self}\)和交叉关注表征\(r_{cross}\)进行元素求和(记为 ⊕),得出标题和内容语义交互表征,即 \(r^t\)\(r^c\)。最后,我们将 \(r^t\)\(r^c\)合并为协作新闻表示\(r^n\)

\(r^n=[r^t;r^c]=[r_{self}^t\oplus r_{cross}^t;r_{self}^c\oplus r_{cross}^c]\)

结构用户编码(SUE)

基于集群的用户历史记录编码

​ 用户编码器用于从用户的浏览历史记录中学习用户兴趣表征。为了形成用户兴趣的聚类结构,我们分两步构建了一个分层聚类图:

集群内子图

​ 我们以新闻的主题类别标签构建原始聚类图。我们将浏览过的新闻视为节点 {Vn},并为这些共享相同类别标签的节点添加双向边 {En},从而构建子图\(\mathcal{G}^1=(V_n,E_n)\)。{Vn}的每个新闻节点都与嵌入\(r^n\)相关联。每个聚类包含多个具有特定主题的浏览新闻,反映了用户兴趣的一个方面。

集群间子图

​ 除了集群内的用户兴趣细化,集群间的相关性建模对于充分利用用户历史的整体信息也至关重要。对于G1中的每个集群Ci,我们添加了一个新的集群代理节点\(V_p^i\)。我们将双向边 {\(E_p^1\)} 添加到同一簇内的新闻节点 {Vn} 和代理节点 {Vp} 上,并通过双向边 {\(E_p^2\)} 将 {Vp} 完全连接起来,从而构建子图\(\mathcal{G}^2=(\{V_n,V_p\},\{E_p^1,E_p^2\})\)。{Vp} 的节点嵌入以零嵌入\(r^p\)开始。簇间的新闻节点信息通过簇代理节点聚合。

​ 分层聚类图 G 由聚类内子图和聚类间子图组成:\(\mathcal{G}=\{\mathcal{G}^1,\mathcal{G}^2\}\)。我们将历史特征矩阵定义为\(H^0=[r^n;r^p]\in\mathbb{R}^{(|V_n|+|V_p|)\times d}\)。对于图 G,我们使用图卷积网络来提取用户历史的结构表征。为了缓解深度 GCN 的过度平滑问题,在相邻的 GCN 层添加了残差连接。

\(H^{l+1}=ReLU(\tilde{D}^{-\frac12}\tilde{A}\tilde{D}^{-\frac12}H^lW^l)+H^l\)

​ 最后的用户表示为:

\(r^h=\{H_i^L\}_{i=1}^{|V_n|}\in\mathbb{R}^{|V_n|\times d}.\)

集群内的注意机制

​ 给定 |Vn| 用户浏览过的新闻所隐含的 |C| 兴趣集群,每个集群 Ci 中有 |Ci | 条新闻。结构化用户历史表示\(r^h\)可表示为:

\(r^h=\{r_i^h\}_{i=1}^{|C|}=\left\{\{r_{i,j}^h\}_{j=1}^{|C_i|}\right\}_{i=1}^{|C|}.\)

​ 为了得出与候选新闻相关的集群内特征,我们设计了一个集群内关注层,将候选新闻表示\(r_{can}^n\)作为查询,将集群 Ci 的第 j 个集群内特征\(r_{i,j}^h\)作为键值对

\(\alpha_i^{intra}=Attention(r_{can}^n,\{r_i^h\})\\r_{cl,i}^{intra}=\sum_{j=1}^{|C_i|}\alpha_{i,j}^{intra}r_{i,j}^h\)

​ 集群内特征\(r_{cl,i}^{intra}\)参与集群 Ci 的节点级特征\(\{r_{i,j}^h\}_{j=1}^{|C_i|}\),与候选新闻表示\(r_{can}^n\)相关联。\(r_{cl,i}^{intra}\)细化了图 G 簇 Ci 中的第 i 个用户兴趣表征。

集群间的注意机制

​ 在进行集群间建模之前,先要进行非线性变换,将原本是集群 Ci 中节点级特征线性组合的\(r_{cl,i}^{intra}\)投影到集群级特征空间中。

\(\tilde{r}_{cl,i}^{intra}=ReLU(\tilde{W}r_{cl,i}^{intra}+\tilde{b})+r_{cl,i}^{intra}\)

​ 为了得出与候选新闻相关的簇间特征,我们设计了一个簇间关注层,将候选新闻表示 \(r_{can}^n\)作为查询,将图 G 的第 i 个簇内特征\(\tilde{r}_{cl,i}^{intra}\)作为键值对。

\(\alpha^{inter}=Attention(r_{can}^n,\{\tilde{r}_{cl}^{intra}\})\\r_{cl}^{inter}=\sum_{i=1}^{|C|}\alpha_i^{inter}\tilde{r}_{cl,i}^{intra}\)

​ 集群间特征\(r_{cl,i}^{inter}\)参与集群 Ci 的节点级特征\(\{\tilde{r}_{cl,i}^{intra}\}_{i=1}^{|C|}\),与候选新闻表示\(r_{can}^n\)相关联。通过集群内和集群间的关注,\(r_{cl}^{inter}\)在簇图 G 中分层聚合用户兴趣表示。\(r_{cl}^{inter}\)被当作用户表征\(r^u\),即\(r^u=r_{cl}^{inter}\)

点击预测和模型训练

​ 点击预测还是用户与新闻之间表示的点积。损失函数还是传统损失函数

\(\mathcal{L}=-\sum_{i=1}^{|\mathcal{D}|}log\frac{exp(\hat{y}_i^+)}{exp(\hat{y}_i^+)+\sum_{j=1}^Kexp(\hat{y}_{i,j}^-)}\)

总结

​ 整理一下,这篇文章不是很好懂,主要是SUE部分,CNE感觉讲的还是比较清楚的,这里就重点总结一下SUE。

​ SUE首先是要构建两个图,都是根据新闻的类别来进行图的构建的,第一个图是对共享相同类别的节点添加边,节点就是浏览过的新闻。这样会形成多个不连通的子图。第二个图是先对相同类别的节点进行一下聚类,其实也是在第一个图的基础上,然后添加一个代理节点,同一类的节点都连接到这个代理节点上,然后联通每个代理节点。

​ 构建好两个图之后,就将这两个图合并,然后进行图卷积,得到最后所有的新闻节点的表示。之后按照集群来对这些新闻节点的表示应用注意力机制。

​ 首先是集群内的注意机制,使用候选新闻表示作为查询来进行注意力的设计。最后得到每个集群的一个集群内表示,用于后续的集群间表示

​ 然后是集群间的注意机制,先对所有集群内表示应用一个线性变换,然后再使用候选新闻作为查询,给每个集群内表示获取一个权重系数,然后进行加权聚合,获得集群间的一个表示,这个表示就是最后的用户表示。

posted @ 2024-07-20 20:16  ANewPro  阅读(25)  评论(0编辑  收藏  举报