DeepVT: Deep View-Temporal Interaction Network for News Recommendation论文阅读笔记
Abstract
存在的问题:
以往的研究大多只是直接应用新闻层面的表征进行用户建模,新闻的标题、摘要、分类等观点只是被隐含和压缩到新闻的单一向量中,这就使得不同新闻中的不同观点无法相互影响。
提出方法
本文首先关注用户建模的视图级信息,并提出了用于新闻推荐的深度视图-时态交互网络(DeepVT)。它主要包含两个组成部分,即二维半因果卷积神经网络(SCCNN)和多操作注意(MoA)。二维半因果卷积神经网络(SCCNN)能同时有效地综合视图级的交互信息和新闻级的时间信息。而 MoA 在自我注意功能中集成了不同的相似性算子,以避免注意偏差并增强鲁棒性。通过与 SC-CNN 合作,视图级的全局交互变得更加充分。
Introduction
根据以往的研究,新闻的不同视图,如标题、摘要和类别,具有不同的特点和信息量。考虑到用户兴趣的多样性和易变性,全面有效地捕捉和融合不同新闻的视图和时间模式至关重要。
现有的新闻推荐工作大多只关注视图交互或时间信息。现有的注意力方法仅使用单一的相似性函数来衡量新闻推荐中不同成分的相关性,不足以捕捉不同视图中复杂的相关内容。
即使同时考虑了视图交互和时间信息,用户兴趣仍然是在不同粒度上分别独立建模的。也就是说,只有通过整合视图级或词级的相应信息,将每条新闻表示为单一向量后,才能根据这些新闻级向量对用户兴趣进行建模。在用户建模的过程中,视图级信息被压缩并被间接考虑,这使得不同新闻中的不同视图无法同时交互。
而在真实场景中,不同视图和时间模式的组合更有助于对用户进行特征描述。如果不同新闻中的不同观点之间没有局部的观点-时间互动,模型可能无法把握用户的直观兴趣并给出准确的推荐。只有同时考虑视图和时间的交互,才能发现用户的潜在兴趣,更准确地向用户推荐新闻。
受上述观察结果的启发,我们提出了 DeepVT,以捕捉复杂的视图-时间交互模式,用于新闻推荐。据我们所知,我们首先保留了不同新闻之间的视图级信息,并将其用于用户建模。用户建模的核心模块包括两部分,即二维半因果 CNN(SC-CNN)和多操作注意(MoA)。首先,我们提出的二维半因果 CNN 可以同时合成不同新闻中不同视图的信息,它在视图维度上是正常的,在新闻维度上是因果和时间的,从而避免了信息泄露。它还可以通过堆叠更多具有不同滤波器大小的层来充分学习不同时间跨度的用户兴趣。
另外,我们提出的多算子注意力机制在视图层面将不同的自注意力函数与不同的相似性算子进行合成,使得不同视图之间的交互更加充分,直观地提高了模型的鲁棒性和泛化能力。同时,它还能弥补 SC-CNN 在全局视图级交互方面的不足。因此,DeepVT 在用户建模时兼顾了时间和空间效率、局部和全局交互以及视图-时间多层次交互。
Method
本文的模型框架如下:
我们的框架有三大模块,包括新闻编码模块、用户建模模块和点击预测模块。我们将自下而上地对它们进行阐述。首先,新闻编码模块用于获取新闻中各组成部分的表征。然后,将浏览新闻的一系列编码向量输入用户建模模块,该模块由二维半因果 CNN(SC-CNN)和多操作注意(MoA)组成。我们的主要贡献也体现在这一核心模块中。它可以全面考虑时间点击信息和不同新闻之间的视图级交互。最后,我们使用点击预测模块获得用户和候选新闻的最终表示,并将它们匹配起来计算用户点击候选新闻的点击概率。我们模型的推理流程如算法 1 所示。
新闻建模模块
新闻编码模块旨在将新闻的不同视图(包括标题、摘要、类别和子类别)转换为相应的向量表示。由于新闻中的不同成分或视图代表了不同的信息,因此我们并没有将它们提前整合压缩成新闻的密集表示,而是保留了新闻中每个视图的表示。新闻编码模块的结构如图 2 右侧所示。标题和摘要由一系列单词组成,可视为文本特征。相应地,类别和子类别可视为标签特征。正如之前的新闻推荐方法所述,我们使用不同的方法来处理两种类型的视图。
对于新闻文章中的文本特征,有三个层次可以获得密集表示:嵌入层、编码层和池化层。
在嵌入层就是把单词转化为语义向量。
在编码层中就是使用CNN来对单词嵌入序列进行编码,捕捉单词的重要上下文。
在池化层中,注意力机制用于将编码向量序列转换为词级的密集向量。它可以通过压缩向量中的不同权重来考虑不同词之间的重要性。最后获得标题和摘要的表示\(\hat{h^t}\)和\(\hat{h^a}\)
对于新闻文章中的标签特征,即类别和子类别,采用两层网络来获得编码表示。因为类别特征是一个离散的标签,而不是一个序列,所以我们不需要使用注意机制来像文本特征一样压缩它们。
第一层还是嵌入层,将标签转化为嵌入向量。
第二层是编码层,来学习类别的隐藏表示,最后获取类别和子类别的编码表示\(\hat{h^c}\)和\(\hat{h^s}\)。
到目前为止,在新闻编码模块中获得了\(\mathbf{\hat{h}}^t,\mathbf{\hat{h}}^a,\mathbf{\hat{h}}^c,\mathbf{\hat{h}}^s\)的表示。新闻的最终输出可以看作是这些视图表示的连接
浏览过的新闻和候选新闻都可以通过该模块获得相应的表征,这些表征将被输送到下一步的用户建模模块和点击预测模块。特别要指出的是,与以往的新闻推荐方法不同,在我们的框架中,新闻并不表示为一维向量,因为不同的视图会随着时间的推移同时与不同的新闻发生交互。
用户建模模块
用户建模模块示意图如下:
如图 3 所示,该模块是我们模型的核心,旨在从用户浏览的新闻中学习用户表征。我们为这一模块提出了两个新颖的部分,即二维半因果 CNN(SC-CNN)和多操作注意(MoA)。它可以综合不同时间跨度的用户兴趣,并查看不同时间范围内的交互。
2D半因果CNN
如图 4 所示,我们提出了前人在文本到语音任务中提到的二维半因果 CNN。与传统 CNN 相比,SC-CNN 可以捕捉一维的单向信息和另一维的双向信息。更具体地说,我们对传统 CNN 进行了简单而有效的修改,即在新闻维度上改变填充的位置,使内核只捕捉新闻级的前向信息。对于视图维度,内核仍能正常捕捉双向信息。因此,SC-CNN 除了能同时捕捉不同新闻中的不同视图信息外,还能捕捉不同新闻中的同一特征和同一新闻中的不同特征。SC-CNN 还能有效解决新闻维度中的时间信息泄露问题。此外,短期兴趣和长期兴趣都会对用户行为产生影响。通过堆叠不同内核大小的 SC-CNN,可以进一步捕捉短期兴趣之外的长期兴趣。我们将以获取短期兴趣的过程为例,详细说明 SC-CNN 的作用。
我们首先将浏览过的每条新闻 𝑁𝑖 堆叠起来,形成用户的初始表示 \(\mathbf{U}\in\mathbb{R}^{dim\times m\times t}\),其中 𝑡 是新闻的长度,𝑚 是上面提到的特征的大小,正常为4。𝑖-th新闻和𝑗-th视图的表示为 u𝑖𝑗 ∈ R 𝑑𝑖𝑚。然后,利用 SC-CNN 捕获短期兴趣如下:
\(\tilde{\mathbf{u}}_{i,j}=f(\Theta\oplus_{k=0 l=0}^{w^{\prime} w^{\prime}}\mathbf{u}_{i-2k,j\pm l}+\mathbf{b}_f),\)
\(\oplus_{k=0 l=0}^{w^{\prime} w^{\prime}}\mathbf{u}_{i-2k,j\pm l}\)表示向量从\(\mathbf{u}_{i-2w^{\prime},j-w^{\prime}}\)连接到\(\mathbf{u}_{i,j+w^{\prime}}\)
\(\Theta\in\mathbb{R}^{kn^{\prime}\times(2w^{\prime}+1)^2dim}\)是卷积核的大小,𝑘𝑛′ 和 2𝑤′ + 1 是滤波器的数量和窗口大小。我们将𝑘𝑛‘设置为与𝑑𝑖𝑚相同。然后我们可以得到用户的短期表示\(\tilde{\mathbf{U}}\in\mathbb{R}^{dim\times m\times t}.\)
我们也可以用同样的方法计算长期兴趣\(\bar{\mathbf{U}}\in\mathbb{R}^{dim\times m\times t}.\)的表示。不同的是使用了另一个卷积核。
这里看的不是很懂,只知道用了一个特殊的卷积方式来获取各种表示,这种卷积方式的优势体现在哪不是很明白
多操作注意
虽然 SC-CNN 可以捕捉时间和空间信息,但问题在于,由于 CNN 的特性,只有局部特征可以相互影响。为了解决这个问题,我们使用视图级的自我关注来实现全局交互,这与以往使用新闻级的关注不同。直观地说,多重注意函数避免了单一注意的偏差,从而使模型具有更好的鲁棒性和概括性。如图 3 所示,不同的自我关注函数用于捕捉不同的相关性。然后,另一个注意函数综合了之前的注意结果。假设注意力函数为\(\mathbf{r}=attn(\mathbf{\bar{u}_i},\Omega)\)。其中,𝛀 表示注意力函数中要学习的权重,而 \(\mathbf{\bar{u}_i}\)则表示\(\bar{\mathbf{U}}\) 中新闻文章的第 𝑖 个视图。更具体地说,根据不同的相似性算子𝑔𝑙,可以计算出不同的注意力表征r𝑙,我们使用三种算子来实现相似性函数 𝑔𝑙 。
\(\begin{aligned} &\boldsymbol{s}_j^i&& =g^l(\bar{\mathbf{u}}_i,\bar{\mathbf{u}}_j), \\ &\boldsymbol{a}_j^i&& =\frac{\exp(s_j^i)}{\sum_{k=1}^m\exp(s_k^i)}, \\ &\mathbf{r}_i^{\boldsymbol{l}}&& =\sum_{j=1}^ma_j^i\bar{\mathbf{u}}_j. \end{aligned}\)
\(\begin{aligned} &g^1(\bar{\mathbf{u}}_i,\bar{\mathbf{u}}_j) =\mathbf{q}^{1^\mathrm{T}}\tanh(\mathbf{W}^1\mathbf{\bar{u}}_i+\mathbf{W}^2\mathbf{\bar{u}}_j), \\ &g^2(\bar{\mathbf{u}}_i,\bar{\mathbf{u}}_j) =\bar{\mathbf{u}}_i^\mathrm{T}\mathbf{W}^3\bar{\mathbf{u}}_j, \\ &g^3(\bar{\mathbf{u}}_i,\bar{\mathbf{u}}_j) =\mathbf{q}^{2^\mathrm{T}}\tanh(\mathbf{W}^4(\mathbf{\bar{u}}_i\odot\mathbf{\bar{u}}_j)), \end{aligned}\)
接下来,我们用另一个注意函数聚合这些结果\(\{\mathbf{r}^l\}_{l=1}^3\)
\(\begin{aligned} &s_l=\mathbf{q}_{r}^{T}\tanh(\mathbf{W}_{r}\mathbf{r}^{l}+\mathbf{b}_{r}), \\ &a_l=\frac{\exp(s_l)}{\sum_{j=1}^3\exp(s_j)}, \\ &\mathbf{r}=\sum_{l=1}^{3}a_{l}\mathbf{r}^{l}, \end{aligned}\)
众所周知,传统的注意力函数无法捕捉时间信息。SCCNN 与 MoA 的结合是否能融合全局特征和时间信息值得考虑。为了简化问题,我们使用一个自注意函数 𝑔 和一层 SC-CNN 以及一层特征图,下面就是证明这个SC-CNN和MoA可以在视图水平上捕获时间信息和全局交互。
点击预测模块
该模块用于根据之前计算的候选新闻和用户的表示预测用户是否会点击候选新闻。对于候选新闻,我们使用注意力池从不同的视图表征中获取新闻表征
\(\mathbf{n}=\sum_{i\in\{t,a,c,s\}}a_i\hat{\mathbf{h}}^i,\quad a_i\propto\exp(\mathbf{q}_n^T\tanh(\mathbf{W}_n\hat{\mathbf{h}}^i+\mathbf{b}_n)),\)
对于用户兴趣的表征,最终表征是浏览过的新闻表征的加权和
\(\mathbf{u}^{\prime}=\sum_{i=1}^ta_i\mathbf{\hat{u}}_i,\quad a_i\propto\exp(\mathbf{q}_u^T\tanh(\mathbf{W}_u\mathbf{\hat{u}}_i+\mathbf{b}_u)),\)
最后的点击预测分数为:\(\hat{c}=\mathbf{u^{\prime}}^T\mathbf{n}.\)
模型训练和预测
这里采用的是传统的损失函数,这里就不多解释了,具体见原文
总结
总结一下,这篇文章第一次看比较难懂,需要一些CNN的前置知识。按照模型图来总结一下吧。
首先是新闻编码器模块,这里比较好懂,就是把新闻标题、摘要、类型和子类型分别进行建模,最后合并在一起作为新闻的建模。
然后是用户建模的模块,分为两个部分,一个是使用二维半因果CNN获取用户的短期兴趣,然后在短期兴趣的基础上重复使用这个CNN来获取用户的长期兴趣。之后采用了多种操作的注意力的方式,也就是每次注意力聚合都采用不同的注意力方式,最后合并这三种注意力的表示时也是使用了注意力的方式。