Tiny-NewsRec: Effective and Efficient PLM-based News Recommendation论文阅读笔记
Abstract
存在的问题:
现有的大多数工作只是根据新闻推荐任务对 PLM 进行微调,这可能会受到预训练语料库和下游新闻文本之间已知领域偏移问题的影响。此外,PLM 通常包含大量参数,计算开销较大,这给低延迟在线服务带来了很大负担。
解决方案
本文提出的 Tiny-NewsRec 可以提高基于 PLM 的新闻推荐的效果和效率。我们首先设计了一种自监督的特定领域后训练方法,通过新闻标题和新闻正文之间的对比匹配任务,使通用 PLM 更好地适应新闻领域。我们进一步提出了一种两阶段知识提炼方法,以提高基于大型 PLM 的新闻推荐模型的效率,同时保持其性能。在后训练阶段和微调阶段,我们将使用源自后训练程序不同时间步骤的多个教师模型,向学生模型传授综合知识。
Introduction
在本文中,我们提出了一种 Tiny-NewsRec 方法,以提高基于 PLM 的新闻推荐的效果和效率。在我们的方法中,我们首先利用了新闻文章不同部分之间的自然匹配关系,并设计了一种针对特定领域的自监督后训练方法,以使通用 PLM 更好地适应新闻领域。通过新闻标题和新闻正文之间的对比匹配任务来训练基于 PLM 的新闻编码器,使其更好地捕捉新闻文本中的语义信息并生成更具区分性的表征,这在接下来的新闻推荐任务中有利于新闻内容理解和用户兴趣匹配。
此外,我们还提出了一种两阶段知识提炼法,以压缩基于 PLM 的大型模型,同时保持其性能。在后训练阶段和微调阶段,特定领域知识和特定任务知识分别从教师模型转移到学生模型。此外,在这两个阶段,我们还使用了来自后训练过程中不同时间步骤的多个教师模型,为学生模型提供全面指导。对于每个训练样本,我们都会根据这些教师模型的表现对其进行自适应加权,从而让学生模型总是能从最好的教师那里学到更多。
本文的贡献如下:
- 我们提出了一种Tiny-NewsRec的方法来提高基于PLM的新闻推荐的有效性和效率。
- 我们提出了一种针对特定领域的自监督后训练方法,在针对特定任务进行微调之前,用新闻标题和新闻正文之间的对比匹配任务来训练 PLM,使其更好地适应新闻领域。
- 我们提出了一种具有多个教师模型的两阶段知识提炼方法,以压缩基于 PLM 的大型模型。
Method
本节将详细介绍我们的 Tiny-NewsRec 方法。我们首先简要介绍基于 PLM 的新闻推荐模型的结构。然后,我们将介绍自监督式特定领域后训练方法的设计以及两阶段知识提炼方法的框架。
本文的框架如下:
新闻推荐模型
我们首先介绍 TinyNewsRec 中使用的基于 PLM 的新闻推荐模型的结构。如图 所示,它由三个主要部分组成,即新闻编码器、用户编码器和点击预测模块。新闻编码器旨在从新闻文本中学习新闻表征。按照最先进的基于 PLM 的新闻推荐方法,我们使用 PLM 捕捉新闻文本中的深层上下文,并使用注意力网络聚合 PLM 的输出。
用户编码器的目的是从用户最近的L点击新闻的表示中学习用户表示。我们利用注意力网络来实现它,以便从用户的历史互动中选择重要新闻。在点击预测模块中,我们将候选新闻表示 nc 与目标用户表示 u 的点积作为预测得分 \(\hat{y_{FT}}\)。值得注意的是,我们的 Tiny-NewsRec 与新闻推荐模型的结构是无关的。其他基于 PLM 的新闻推荐模型也可以采用。
特定领域的后训练
由于直接利用下游新闻推荐任务对 PLM 进行微调可能不足以填补一般语料库与新闻文本之间的领域空白,因此我们建议在进行特定任务微调之前对 PLM 进行特定领域的后训练。考虑到新闻文章不同部分之间的自然匹配关系,我们设计了新闻标题与新闻正文之间的自监督对比匹配任务。
给定一篇新闻文章,我们将其新闻正文\(n_b\)视为锚点,并将其新闻标题 nt+ 作为正面样本。我们从新闻库中随机选择 N 个其他新闻标题\([nt_1^-,nt_2^-,\cdots,nt_N^-]\)作为负样本。我们使用基于 PLM 的新闻编码器得到新闻正文表示\(h_{nb}\)和这些新闻标题表示 \([h_{nt^+},h_{nt_1^-},h_{nt_2^-},\cdots,h_{nt_N^-}].\)。我们采用 InfoNCE 损失作为对比损失函数。其表述如下:
\(\mathcal{L}_{\mathrm{DP}}=-\log\frac{\exp(\hat{y}_{nt^+})}{\exp(\hat{y}_{nt^+})+\sum_{i=1}^N\exp(\hat{y}_{nt_i^-})},\)
训练后的基于PLM的新闻编码器可以更好地捕获和匹配新闻文本中的高级语义信息。它将为相关文本(即新闻主体及其对应的新闻标题)产生更多类似的表示,并将其与其他文本区分开来,这也可以缓解PLM生成的句子表示的各向异性问题。因此,我们提出的特定领域的训练后方法有利于以下新闻推荐任务中的新闻理解和用户兴趣匹配。
两阶段的知识蒸馏
为实现高效的目标,我们进一步提出了一种两阶段知识提炼方法,其框架如图 1 所示。在我们的框架中,轻量级学生模型在后训练阶段和微调阶段都要模仿大型教师模型。此外,在后训练过程中,我们会使用来自不同时间步骤的多个教师模型,在这两个阶段向学生模型传授更全面的知识。
在第一阶段,我们首先对基于PLM的新闻编码器进行特定领域的后训练(步骤1)。在后训练的过程中,在收敛后,每K步保存一个当前教师新闻编码器的副本,我们总共保存了M个教师模型。
然后,我们利用这些教师模型,在学生模型的后训练(第 2 步)中将特定领域的综合知识传授给学生模型。由于这些教师模型在不同的时间步骤中对输入样本的表现可能不同,我们为每个训练样本的每个教师模型分配一个自适应权重,该权重由其预测分数\(\hat{\boldsymbol{y}}_{\mathrm{DP}}^{(t_i)}=[\hat{y}_{nt^+}^{(t_i)},\hat{y}_{nt_1^-}^{(t_i)},\hat{y}_{nt_2^-}^{(t_i)},\cdots,\hat{y}_{nt_N^-}^{(t_i)}]\)和真实标签\(y_{DP}\)之间的交叉熵损失来衡量:
\(\alpha^{(t_i)}=\frac{\exp(-\operatorname{CE}(\hat{\boldsymbol{y}}_\mathrm{DP}^{(t_i)},y_\mathrm{DP}))}{\sum_{j=1}^M\exp(-\operatorname{CE}(\hat{\boldsymbol{y}}_\mathrm{DP}^{(t_j)},y_\mathrm{DP}))}.\)
为了鼓励学生模型做出与最佳教师模型相似的预测,我们使用蒸馏损失对其输出的软标签进行正则化,其表述如下:
\(\mathcal{L}_{\mathrm{DP}}^{\mathrm{distill}}=T_{\mathrm{DP}}^2\cdot\mathrm{CE}(\sum_{i=1}^M\alpha^{(t_i)}\hat{\boldsymbol{y}}_{\mathrm{DP}}^{(t_i)}/T_{\mathrm{DP}},\hat{\boldsymbol{y}}_{\mathrm{DP}}^{(s)}/T_{\mathrm{DP}}).\)
\(T_{DP}\)是一个温度超参数,用于控制教师模型预测概率分布的平滑度。
此外,由于我们希望学生模型和这些教师模型生成的表征在统一空间中是相似的,因此我们建议应用额外的嵌入损失来对齐这些表征。第 i 个教师模型和学生模型之间的嵌入损失表述如下:
\(\mathcal{L}_{\mathrm{DP}}^{\mathrm{emb}_i}=\mathrm{MSE}(\boldsymbol{W}^{(t_i)}\boldsymbol{h}_{nt}^{(t_i)}+\boldsymbol{b}^{(t_i)},\boldsymbol{h}_{nt}^{(s)})+\\\mathrm{MSE}(\boldsymbol{W}^{(t_i)}\boldsymbol{h}_{nb}^{(t_i)}+\boldsymbol{b}^{(t_i)},\boldsymbol{h}_{nb}^{(s)}),\)
总体的嵌入损失是所有这些嵌入损失的加权总和:\(\mathcal{L}_{\mathrm{DP}}^{\mathrm{emb}}=\sum_{i=1}^M\alpha^{(t_i)}\mathcal{L}_{\mathrm{DP}}^{\mathrm{emb}_i}.\)
学生模型在第一阶段的损失函数是蒸馏损失、整体嵌入损失以及在特定领域后期训练任务中的 InfoNCE 损失的总和,其计算公式如下:
\(\mathcal{L}_1=\mathcal{L}_\mathrm{DP}^\mathrm{distill}+\mathcal{L}_\mathrm{DP}^\mathrm{emb}+\mathcal{L}_\mathrm{DP}^{(s)}.\)
接下来,在第二阶段,我们首先利用新闻推荐任务对这 M 个经过培训的教师新闻编码器进行微调(步骤 3)。然后,在学生的微调过程中,将丰富的特定任务知识传授给学生(步骤 4)。与第一阶段类似,我们根据新闻推荐任务输入样本的交叉熵损失为每个经过微调的教师模型分配一个权重\(\beta^{(t_{i})}\),并在微调过程中应用以下蒸馏损失来调整学生模型的输出:
\(\beta^{(t_{i})}=\frac{\exp(-\mathrm{CE}(\hat{\boldsymbol{y}}_{\mathrm{FT}}^{(t_{i})},y_{\mathrm{FT}}))}{\sum_{j=1}^{M}\exp(-\mathrm{CE}(\hat{\boldsymbol{y}}_{\mathrm{FT}}^{(t_{j})},y_{\mathrm{FT}}))},\\\mathcal{L}_{\mathrm{FT}}^{\mathrm{distill}}=T_{\mathrm{FT}}^2\cdot\mathrm{CE}(\sum_{i=1}^M\beta^{(t_i)}\hat{\boldsymbol{y}}_{\mathrm{FT}}^{(t_i)}/T_{\mathrm{FT}},\hat{\boldsymbol{y}}_{\mathrm{FT}}^{(s)}/T_{\mathrm{FT}}),\)
其中,\(\hat{\boldsymbol{y}}_{\mathrm{FT}}^{(t_{i})}\)表示模型对新闻推荐任务的预测得分
我们还使用额外的嵌入损失来调整学生模型和教师模型的新闻表征和用户表征,其计算公式如下:
\(\mathcal{L}_{\mathrm{FT}}^{\mathrm{emb}}=\sum_{i=1}^M\beta^{(t_i)}[\mathrm{~MSE}(\boldsymbol{W}_n^{(t_i)}\boldsymbol{n}^{(t_i)}+\boldsymbol{b}_n^{(t_i)},\boldsymbol{n}^{(s)})+\\\mathrm{MSE}(\boldsymbol{W}_u^{(t_i)}\boldsymbol{u}^{(t_i)}+\boldsymbol{b}_u^{(t_i)},\boldsymbol{u}^{(s)})],\)
还对学生模型进行了调整,以最小化其预测得分\(\hat{\boldsymbol{y}}_{\mathrm{FT}}^{(s)}\)与新闻推荐任务的地面实况标签 \(y_{FT}\)之间的交叉熵损失:\(\mathcal{L}_{\mathrm{FT}}^{(s)}=\mathrm{CE}(\hat{\boldsymbol{y}}_{\mathrm{FT}}^{(s)},y_{\mathrm{FT}})\)。
学生模型在第二阶段的总体损失函数是蒸馏损失、嵌入损失及其微调损失的总和,其计算公式如下:
\(\mathcal{L}_2=\mathcal{L}_\mathrm{FT}^\mathrm{distill}+\mathcal{L}_\mathrm{FT}^\mathrm{emb}+\mathcal{L}_\mathrm{FT}^{(s)}.\)
总结
这篇文章第一次看有点难懂,因为感觉不是纯推荐的,带了一点知识蒸馏之类的东西。还是按照结构图来总结一下
首先是新闻推荐的部分,还是采用传统的用户表示与候选新闻表示的点积。这个是阶段二的主要步骤
接下来是后训练的部分,后训练的目的是提升PLM对特定领域任务的性能,这里采用了对比任务。使用的正样本是新闻的标题与新闻的主体,负样本是新闻标题与选择的其余的新闻标题。使用的是InfoNCE损失函数,这个是阶段一的主要步骤。
最后就是本文的一个重点,也就是两阶段的知识蒸馏,首先就是一阶段,也就是后训练部分。先介绍教师网络:这里在后训练的收敛之后,每K步都保存一个教师新闻编码器,共保存M个。然后介绍学生网络,为了将教师网络学习到的内容传递到学生网络,首先给上面保存的每一个模型分配一个权重,权重与预测结果的准确性有关。然后是为了让学生模型与教师模型的预测相似,使用蒸馏损失对软标签进行正则化,也就是计算学生网络的预测标签与加权后的教师网络标签之间的交叉熵损失。不仅如此,还希望学生模型与教师模型生成的特征在空间中要相似,又采用额外的损失来进行对齐。也就是使得教师网络生成的新闻标题表示和新闻主体表示与学生网络生成的尽可能相似,损失函数使用的是MSE损失。最后学生模型在第一阶段的损失函数是对比学习损失,蒸馏损失和嵌入损失的总和。
然后是第二阶段的学生模型。首先还是希望学生模型和教师模型预测的标签是一致的,然后还是希望学习到的新闻表示在空间之中相似。总体的损失函数还是由三个部分组成,分别是推荐任务的损失,蒸馏损失和嵌入损失。