Popularity-Enhanced News Recommendation with Multi-View Interest Representation 论文阅读笔记
Abstract
现存的问题:
现有方法通常利用新闻标题、摘要、实体等信息来预测点击率(CTR),或在多任务学习框架中添加一些辅助任务。但是,它们都没有将预测的新闻流行度和用户对热门新闻的关注程度直接纳入点击率预测结果。同时,用户在浏览历史中可能会产生多种兴趣。因此,很难通过单一用户向量来表示用户兴趣。
提出的方法:
在本文中,我们提出了一种 "流行度增强新闻推荐方法"(PENR),它整合了流行度预测任务,以提高新闻编码器的性能。预测新闻流行度得分并将其添加到最终的点击率中,同时利用新闻流行度来模拟用户关注热点新闻的倾向程度。此外,我们还通过子空间投影法,将浏览历史集合到多个子空间中,从不同角度对用户兴趣进行建模。这样,我们就能捕捉到用户的多视角兴趣表征。
Introduction
现有的许多方法忽略了新闻的受欢迎程度会直接影响新闻的点击率。例如,用户的点击历史中没有关于 "死亡 "的新闻,但当候选列表中出现一条关于 "死亡 "的新闻时,用户仍然会点击它。在这种情况下,我们不能将 "死亡 "视为用户的特别兴趣,而只是因为这条新闻引起了社会的高度关注才点击它。图 1 举例说明了这一难题。 此外,根据用户的浏览历史,他/她可能有多种兴趣。因此,很难通过单一的用户向量来准确表示用户的兴趣。
基于上述问题,我们在本文中提出了一种 "流行度增强新闻推荐"(Popularity-Enhanced News Recommendation)方法--PENR。首先,我们计算每篇新闻的访问量作为人气。然后,我们预测候选新闻的人气得分,并将其与最终的点击率相加,向用户推荐热门新闻。 同时,我们通过计算用户对热点新闻的关注度来控制新闻热度在点击率中所占的比例。我们还通过子空间投影法,将浏览历史聚合到多个子空间,从不同角度对用户兴趣进行建模。通过这种方法,我们捕捉到了用户的多视角兴趣表征。总而言之,我们做出了以下三点贡献:
- 我们提出了一种流行度增强型新闻推荐方法。我们引入了流行度,它最终会影响候选新闻的点击概率。 我们尝试了几种方法,并确定了将流行度整合到模型中的最佳方式。
- 我们进一步提出了一种学习用户多视角兴趣表征的方法,以显示用户在不同方面的兴趣。此外,我们还通过双线性函数将所提出的多视角兴趣表征与候选新闻相匹配。
Method
我们提出的方法的整体框架如图所示。为了更好地利用新闻文章中的文本信息,我们在原有的多头自注意层中加入了位置编码和前馈网络。
新闻编码器
这里的新闻编码器比较平平无奇,与许多方法类似,这里就不过多解释了,图上表达的很清楚。
一个重点是引入了位置编码来增强新闻编码器的表现能力:
\(\mathrm{timing}(t,2i)=\sin(t/10000^{2i/d})\\\mathrm{timing}(t,2i+1)=\cos(t/10000^{2i/d})\)
这样,我们通过正弦和余弦函数为新闻文本中的词嵌入添加了位置信息,而无需引入额外参数。
用户编码器
在获得新闻表征后,我们需要根据用户的浏览历史记录对其表征进行建模。在实际应用中,用户和新闻的数量都非常庞大。 因此,我们应该为单个用户生成一个通用的用户向量,以提高计算效率,而不是为每个候选新闻生成一个特定的用户向量,以提高准确性。换句话说,用户向量的计算是独立的,不应受到候选新闻的影响。因此,我们提出了多视角兴趣表示法,从多个角度获取用户向量。
在现实世界的数据集中,用户的浏览历史可能由几十条甚至上百条新闻组成,因此很难使用单一向量完整而精确地表达用户的兴趣。 假设用户点击了一系列体育新闻,然后又点击了几条政治新闻,那么使用现有的方法(简单地将用户点击历史中的新闻表征混合在一起),单一向量无法巧妙地分别表达用户对体育和政治的兴趣。因此,我们通过添加多个独立的注意力网络来获得多视图兴趣表征,第 i 个注意力网络计算第 k 个浏览新闻的注意力权重如下:
\(\alpha_{i,k}=\mathbf{q}_i^T\tanh(\mathbf{V}_i\times\mathbf{r}_k+\mathbf{v}_i)\)
因此,我们通过计算浏览历史记录的加权和来获得第 i 个方面的最终用户表征。 然后,我们将所有注意力网络的输出连接起来,形成最终的用户表征 u:
\(\mathbf{u}_{i}=\sum_{k=1}^N\alpha_{i,k}\mathbf{r}_k\\\mathbf{u}=\mathrm{Stack}(\mathbf{u}_1,...,\mathbf{u}_{N_a})\)
点击预测器
在得到用户表示 u 和候选新闻表示\(\mathbf{r}_c\in\mathbb{R}^d\)后,点击预测器用于计算用户 u 点击候选新闻 rc 的概率。这一步对于预测两个向量之间的交互至关重要。受双线性注意框架的启发,我们通过双线性函数获得候选新闻的点击概率 Pb,双线性注意框架在 NLP 任务中被广泛用于获取两个向量之间的交互:
\(\mathbf{p}_b=\mathbf{u}\mathbf{W}_b\mathbf{r}_c+\mathbf{b}\)
我们在双线性层后面连接一个前馈网络,以产生最终的点击概率\(\hat{y}\)
\(\hat{y}=\mathrm{FFN}(\mathbf{p}_b)\)
流行度预测模块
这个是本文重点的一个模块:模块的结构如下:
新闻流行度
新闻的受欢迎程度对新闻推荐至关重要。用户的点击行为是由其兴趣引起的,并受到新闻流行度的影响。图 1 中的例子说明了这一现象。有时,当一个重大事件突然发生时,我们会在电视和互联网上看到它无处不在。在这种情况下,无论我们是否对该新闻感兴趣,都会倾向于点击该新闻。此外,我们还发现有一小部分用户没有浏览记录,因此以往的方法很难从空白的点击记录中生成用户向量。因此,当我们使用现有方法预测这部分候选新闻的点击率时,它们的结果总是随机的。在我们的框架中,我们额外预测了候选新闻的受欢迎程度,因此我们可以在这一小部分数据上得到可信的结果。
因此,如何表达新闻的受欢迎程度成为一个核心问题。遗憾的是,新闻数据集中并没有明确表示新闻受欢迎程度的特征。相反,我们通过计算数据集中的点击行为来近似表示新闻的受欢迎程度。具体来说,对于数据集中出现的每条新闻,我们都会计算它在所有用户点击历史记录中出现的次数。 新闻出现的次数越多,新闻的受欢迎程度就越高。 得到所有新闻的点击次数后,我们将其除以最大值。这样,我们就为原始数据集生成了一列新特征。然后,我们将流行度预测任务作为辅助任务添加到基础模型中。我们使用多任务学习框架来训练这两个任务。
在训练过程中,我们将浏览历史和候选新闻输入新闻编码器,以获得它们的表示,然后将这些向量输入流行度预测器。流行度预测器按以下方式预测新闻的流行度得分:
\(\hat{p}=\sigma(\mathbf{W}_p\times\mathbf{r}+\mathbf{b}_p)\)
在预测过程中,我们会预测候选新闻的受欢迎程度得分\(\hat{p}_c\),然后乘以可训练参数\(\gamma\),生成更适合本任务的受欢迎程度值。最后,我们将流行度得分\(\gamma\hat{p}_c\)与点击预测器生成的原始点击概率\(\hat{y}\)相加,得到具有新闻流行度的点击率。
\(\mathrm{CTR}=\hat{y}+\gamma\hat{p}_c\)
用户对热门新闻的关注
不同用户对热点新闻的关注程度不同。只关注自己感兴趣领域的用户可能不会点击热点新闻,而其他用户可能倾向于点击热点新闻,无论他们是否对新闻感兴趣。 因此,简单地在点击率上加上人气分数似乎不够合理。我们尝试计算用户 u 对热门新闻的关注度如下:
\(a_u=\frac1n\sum_{h=1}^np_h\)
这样,我们就得到了用户对热点新闻的关注程度。直观地说,用户对热门新闻的高关注度会导致点击率结果中的高人气值比例,反之亦然。最后一步,我们将用户的关注度作为点击概率和人气值的权重,从而得到最终的点击率结果:
\(\mathrm{CTR}=(1-\mu a_u)\hat{y}+\mu a_u\gamma\hat{p}_c\)
模型训练
在训练过程中,我们共同预测正面样本和负面样本的点击概率得分。给定用户 u 和候选新闻 c,我们计算点击概率得分,表示为 :\(\hat{s_{u,c}}\)
然后,我们将交叉熵作为训练样本(u,c)的基本损失函数 , \(s_{u,c}\)表示地面实况标签:
\(\ell_{rec}=-\frac1N\sum_{(u,c)\in S}(s_{u,c}\log(\hat{s}_{u,c})+(1-s_{u,c})\log(1-\hat{s}_{u,c}))\)
这个是主推荐任务的损失,接下来就是一些辅助任务的训练损失了
考虑到流行度的值是连续的,我们使用均方误差(MSE)来表示损失函数:
\(\ell_{pop}=\frac1M\sum_{i=1}^M(p_i-\hat{p}_i)^2\)
在用户编码器中,我们使用多个独立的注意力网络来生成用户的多种兴趣。因此,我们希望每个注意力网络都能学习到特定的兴趣方面,而不是所有注意力网络都得到相似的用户向量。为了迫使不同的注意力网络聚合不同的浏览新闻,获得不同兴趣子空间中的用户向量,我们添加了一个全连接层来区分 \(\mathbf{u}=\mathrm{Stack}(\mathbf{u}_1,...,\mathbf{u}_{N_a})\)中的用户向量属于哪个子空间:
\(\hat{d}_i=\mathrm{softmax}(\mathbf{W}_{sub}\mathbf{u}_i+\mathbf{b}_{sub})\)
其中\(\hat{d}_i\)表示向量\(u_i\)属于每个子空间的概率。这样,判别器就能证明每个矢量都有自己的特征。同时,辅助损失的计算公式如下:
\(\ell_{aux}=-\frac1{NN_a}\sum_{i=1}^N\sum_{j=1}^{N_a}d_{i,j}\log(\hat{d}_{i,j})+(1-d_{i,j})\log(1-\hat{d}_{i,j})\)
整体损失函数是上述三种损失函数的加权和:
\(\ell=\ell_{rec}+\lambda\ell_{pop}+\beta\ell_{aux}\)
总结
本文整体讲的比较清晰,主要的重点在于流行度预测模块,这里来详细讲解一下这个模块。首先是对新闻的受欢迎程度来进行表示。使用流行度预测器来预测新闻的流行度得分,后面将这个流行度与原始点击概率相加,得到了具有流行度的点击率。
第二个是用户对热门新闻的关注,因为不同用户对热点的关注度不同,所以直接加上流行度分数不太合理。于是就先获取每个用户对热点新闻的关注层的,具体来说就是取用户所有浏览过的新闻的流行度的平均值,获取到用户的关注度。最后使用用户的关注度来对之前的点击率公式进行修改,得到最终的点击率。
标签:mathbf,PENR,新闻,论文,用户,笔记,点击,hat,我们 From: https://www.cnblogs.com/anewpro-techshare/p/18298896