一文掌握文本图+语义建模:工业界的文本匹配建模新宠

每天给你送来NLP技术干货!


来自:圆圆的算法笔记

点击这里进群—>加入NLP交流群

今天这篇文章主要介绍工业界文本匹配模型的新范式:基于用户行为构造的文本图和基于Transformer的语义模型相结合的方式。目前业内越来越多的工作都开始朝着这个方向发展。这篇文章会介绍2021年以来的4篇主要工作,从最开始将文本图信息和TwinBERT的简单融合(TextGNN、AdaGNN),到模型结构上更深入的融合(Graphformer),再到文本图邻居节点的选择优化(CDSM)。

1

背景 

文本匹配的目标是判断两段文本是否相关,在工业界和学术界都是很常见的问题。目前主流的方法是使用预训练的BERT对两个文本分别编码成向量,再利用cosine、MLP等方式计算两个向量的匹配度,进而得到相关性(双塔模型);或者直接将文本对拼接到一起输入到BERT中编码成一个向量,再根据这个向量映射到匹配程度(单塔模型)。

在工业界,用户的搜索点击行为能够建立起query、document等文本之间的联系,形成了一个天然的文本图。例如用户搜索某个query,点击了某些document,这些query和document就可以建立边的连接;同时一个session内的document之间也能建立边的连接。这些边表明document、query之间的相关关系。业内越来越多的工作,将这种文本图信息引入到了文本匹配模型中,从而在语义建模之外,引入了用户行为中包含的群体知识信息,实现文本匹配模型效果的进一步提升。

2

Text-GNN:用户行为补充语义建模

文本匹配模型一直以来都是以双塔模型位为主,两个Transformer分别对query和document编码,再计算相似度,实现了效果和性能的平衡,是工业界典型的文本匹配架构(TwinBERT)。然而,这类方法只能使用纯文本信息,不足以全面理解query和document。因此,微软在TextGNN: Improving Text Encoder via Graph Neural Network in Sponsored Search(WWW 2021)中提出了TextGNN,通过引入用户点击行为图,建立query、document等文本之间的关系,补充纯语义建模存在的信息缺失问题。

在TwinBERT模型的基础上,Text-GNN引入了用户行为构建的文本图,利用文本图上邻居节点的信息对query和document的信息进行补充。

在构图上主要利用的是用户的点击行为。对于每个query,统计过去一年这个query下点击过的每个document的点击率,对于展现次数超过50次(防止数据稀疏导致ctr统计有问题)的document按照点击率排序,取top3作为这个query在图上扩展的邻居文本。对于长尾的query,由于缺少足够多的用户行为数据,基于上述方式无法找到合适的邻居节点。文中提出使用语义向量进行检索,寻找和长尾query最相似的query,然后用相似query的邻居节点作为该query的邻居节点。

在获取了邻居节点文本后,使用text encoder对这些文本分别编码,然后使用图学习网络对邻居节点的语义表示进行汇聚,汇聚方法可以采用pooling、GAT等多种方式。最后根据两侧汇聚后的向量计算文本匹配结果。

6ce134862293216261f46cfacddd0208.png

3

AdaGNN:多层次文本图信息引入

AdsGNN: Behavior-Graph Augmented Relevance Modeling in Sponsored Search(SIGIR 2021)在TextGNN的基础上增加了多种文本图和语义建模的融合方式。在TextGNN中,主要考虑的是将邻居节点的文本信息融入到中心节点中,是node-level的建模。而AdaGNN除了node-level外,还引入了edge-level和token-level的建模

Edge-level的主要目的是弥补node-level局限在query和ad单侧使用邻居信息增强的缺陷,edge-level希望将query和ad当成一个整体看待,这对应的其实是query和ad的连边。对于当前待预测的query和ad,这个连边就相当于把query和ad的信息拼接到一起输入text-encoder中,也就是单塔结构。此外,通过文本图,我们可以获取到当前query和ad的一阶邻居关系以及二阶邻居关系,也就是把邻居节点的连边也建立一个单塔模型辅助相关性的判断。以ad侧为例,一阶邻居就是建模ad和它邻居query的关系,可以更充分的建模局部语义信息;二阶邻居就是的建模ad和待匹配query的邻居ad的关系,即看一个query的共点击ad的语义关系。

c24e9e6255c3b78cfb4663a9ff8e5eef.png

Token-level主要是为了建立中心节点和邻居节点的term级别的信息交互。原来的node-level或edge-level建模,每个节点的文本信息只能内部交互,这样其实没有紧密的融合中心节点和邻居节点的信息。而token-level的引入,可以让中心节点和邻居节点实现信息交互,让局部节点的语义信息更充分交互。文中通过引入Graph Transformer和Text-Transformer实现节点之间token的交互,前者用来进行节点间信息交互,后者用来进行节点内部token信息的交互。

ab8a0b39a2d193d1671a633500d43327.png

4

Graphformers:文本图和语义模型的深度融合

上面提到的两种方法,在文本图建模和语义建模的融合上是串行的,即先用Transformer对文本信息进行编码得到语义向量,再利用图学习的方法融合汇聚邻居节点的语义向量。这种方法的局限性也很明显,串行的建模无法深入融合文本图建模和语义建模,语义建模过程中无法考虑邻居节点信息,图学习部分只能使用最终产出的语义向量而无法参与到语义向量的生成过程。

Graph-Formers: GNN-nested Transformers for Representation Learning on Textual Graph(NIPS 2021)这篇文章提出了文本图和语义模型的深度融合。如下图所示,相比左侧的串行结构,Graphformer将GNN嵌入到了Transformer中每层的内部,实现了语义建模过程中同步考虑文本图信息。

faeae408a7c1cfdf882661dfad05bc50.png

Graphformer的主体结构如下图所示。首先第一层先使用Transformer对每个节点的文本分别编码,得到初始的token embedding。然后每一层都是GNN和Transformer的交叠。先使用GNN汇聚邻居节点信息,得到每个节点的图表示,然后将这个图表示拼接到token embedding上,得到图信息增强的token embedding,再把这个token embedding输入到Transformer中,产出下一层的输入。

6a6606c051531233b80c7da4e4ac8710.png

由于中心节点包含的文本信息在很多情况下都比较完备,直接使用上述方法训练可能会导致GNN部分学习不充分,即模型不用邻居信息,只用自身信息就足以进行预测。为了解决这个问题,Graphformer将训练过程分为两个阶段,第一阶段会随机破坏中心中心节点的信息(随机mask部分token),这样模型必须依赖GNN汇聚邻居节点信息才能做出正确预测,让GNN模块学的更充分。第二阶段再把中心节点还原,结合训练充分的GNN再次训练整个模型。

5

CSDM:在文本图中选择有效邻居

之前的很多基于文本图的文本匹配模型,优化的重点集中在语义模型和图模型的结构和联合方式上,很少考虑邻居节点的选择方法。微软亚研院在CDSM: Cascaded Deep Semantic Matching on Textual Graphs Leveraging Ad-hoc Neighbor Selection(2022)这篇文章中提出了在文本图中选择信息增益最大的邻居,进而提升文本匹配效果的方法。

文中先分析了邻居节点的选择如何影响匹配效果。利用TextGNN模型作为基础模型,分别使用average pooling+随机采样邻居、attention+随机采样邻居、attention+选择关联度最高的邻居(提前利用attention计算)3种方法的效果,结果如下图。选择关联度高的邻居,在效果上会稳定高于随机采样邻居。同时,通过绿色的折现可以看出,并不是引入的邻居越多越好,选择关联度最高的top20左右效果达到最优。通过这些实验结果可以看出,邻居的选择确实对匹配效果影响很大,而且邻居节点中也包含很多噪声,引入反而会造成效果的下降

41f6713aad32c5f044c192f0b887b7fd.png

基于这个发现,文中提出了一种邻居筛选方法。其原则是,应该优先选择那些对相关性判断增益大的邻居,并且这个增益的判断是和待匹配的两个文本都有关的(一个文本的邻居选择,也受到跟其对位的待匹配文本的含义),同时邻居选择的计算代价也不能太大。

基于以上考虑,CDSM的整体架构如下图,主要分为两个部分。第一部分是一个邻居选择器,第二部分是根据语义和筛选的邻居节点做匹配的深度模型。

03cc336faebd421b94bc2681d8337e3e.png

在邻居选择器中,主要包含两个子步骤,第一步是给query或document的每个邻居重要度进行打分,第二步是根据打分做截断,保留重要度比较高的一些邻居节点。在第一步中,利用一个打分函数计算邻居节点重要性,分为one-step方法和multi-step方法。One-step方法直接计算query+邻居节点与document的向量内积作为重要度;multi-step方法则会逐个引入邻居,每次计算引入新邻居节点带来的信息增量,避免引入和已经引入节点语义相似的冗余邻居。

第二步是根据打分进行邻居的截断,文中也设计了多种方式。最简单的方式就是直接根据打分排序,取固定数量的topK个邻居。还可以根据打分函数的值来判断,打分超过一定阈值的就引入,这种方式每个节点的邻居数量不是固定。文中还提出了包括overall ranking、relevance score阈值等截断方法。

对于第二部分graph-based matching network,可以采用TextGNN等文本图模型结构。CSDM是一个可以应用到各类模型中的邻居选择方法。

CSDM的训练方法分为如下3个步骤。先使用普通邻居采样方法训练一个图匹配模型;然后利用这个训练好的模型给邻居的有效性做打分,生成一些弱监督数据;最后再利用这批数据训练邻居选择模型。

0e64176916c3fe01461cda27b5c8f9de.png

6

总结

本文总结了近年来文本图+语义建模相融合的方式解决文本匹配问题的经典工作。基于用户行为构造的文本图在工业界是容易获取、不需要人工标注且量级较大的数据源。合理使用文本图,可以实现与单纯语义建模的优势互补,其应用场景也远不止于文本匹配,未来必然会在工业场景广泛的NLP任务中发挥关键作用。

最近文章

深入理解Pytorch中的分布式训练


点击这里进群—>加入NLP交流群

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
掌握Ubuntu,您可以采取以下步骤: 1. 下载Ubuntu镜像:您可以从官方网站下载Ubuntu的最新版本。根据您的硬件架构选择合适的版本。 2. 创建启动U盘:使用免费的win32diskimager工具将下载的Ubuntu镜像烧录到U盘上。这样您就可以通过U盘启动安装Ubuntu。将U盘插入计算机,并按照工具的指示进行操作。 3. 安装Ubuntu:将启动U盘插入需要安装Ubuntu的计算机,重新启动计算机。在启动时,选择从U盘启动。按照屏幕上的提示进行Ubuntu的安装过程。您可以选择安装到硬盘上,或者选择试用Ubuntu而不进行实际安装。 4. 更新系统:在安装完成后,建议您更新系统以获取最新的补丁和软件包。打开终端并运行以下命令:sudo apt update && sudo apt upgrade 5. 安装必要的软件:根据您的需求,可以安装各种软件。例如,如果您需要进行深度学习开发,可以安装CUDA和PaddlePaddle。 6. 学习命令行操作:Ubuntu是一个基于Linux的操作系统,使用命令行是非常常见的。您可以学习一些基本的Linux命令,例如文件和目录操作、软件包管理等。 7. 探索形界面:Ubuntu提供了直观的形界面,您可以通过点击标和菜单来执行各种操作。尝试打开不同的应用程序,了解它们的功能和用法。 通过以上步骤,您将能够快速上手并掌握Ubuntu操作系统。记得多练习和实践,以加深对Ubuntu的理解和熟练度。祝您成功!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值