当前位置: 首页 > 科技观察

为了提升支付宝的搜索体验,蚂蚁和北大的文本生成框架

时间:2023-03-13 17:16:58 科技观察

是基于层次比较学习的。文本生成任务通常由教师强制训练。这种训练方式使得模型在训练过程中只看到正样本。但是,生成目标和输入之间通常存在一定的约束条件。这些约束通常通过句子中的关键元素来反映。例如,在query重写任务中,“麦当劳订单”不能改成“肯德基订单”,起到绑定效果的关键要素是品牌关键词。通过引入对比学习在生成过程中加入负样本,模型可以有效地学习这些约束。现有的对比学习方法主要侧重于整句层面的实现[1][2],而忽略了句子中词粒度的实体信息。下图中的例子说明了关键词在句子中的重要意义。对于一个输入的句子,如果它的关键词被替换(例如cosmology->astrophysics),句子的意思就会改变,那么在语义空间中的位置(用分布表示)也会改变。关键词作为句子中最重要的信息,对应语义分布上的一个点,在很大程度上决定了句子分布的位置。同时,在某些情况下,现有的对比学习目标对于模型而言过于简单,以至于模型无法真正学习到区分正负示例的关键信息。基于此,蚂蚁集团、北京大学等机构的研究人员提出了多粒度对比生成方法,设计了层次对比结构,在不同层次上增强信息,在句子粒度上增强整个学习的语义。增强本地重要信息的粒度。研究论文已被ACL2022录用。论文地址:https://aclanthology.org/2022.acl-long.304.pdfMethod我们的方法基于经典的CVAE文本生成框架[3][4],每一句可以映射到一个向量空间分布,句子中的关键词可以看作是从这个分布中采样得到的一个点。我们一方面通过句子粒度的比较增强潜在空间向量分布的表达,另一方面通过构建的全局关键词图增强关键词点粒度的表达,最后利用马氏距离对分布进行表达关键词点和句子结构层次的对比增强了两个粒度的信息表达。通过添加三个不同的对比学习损失来获得最终的损失函数。SentenceGranularityContrastiveLearning在instance-level,我们使用原始输入x,目标输出和对应的输出负样本来形成句子粒度比较对。我们使用先验网络来学习先验分布,表示为;通过后验网络,我们学习后验分布的近似和,分别表示为和。句子粒度比较学习的目标是尽可能减小先验分布与正后验分布的距离,尽可能增大先验分布与负后验分布的距离。对应的损失函数如下:其中正样本或负样本,即温度系数,用来表示距离度量。这里我们使用KL散度(Kullback–Leibler散度)[5]来衡量两个分布之间的直接距离。关键词粒度比较学习关键词网络通过关键词粒度的比较学习,使模型更加关注句子中的关键信息。我们通过使用对应于输入和输出文本的正负关系来构建关键字图来实现这一目标。具体来说,根据给定的句对,我们可以从中确定一个关键词总和(关键词提取方法我使用经典的TextRank算法[6]);对于一个句子,可能还有其他的句子,这些句子共同组成一个集合,每个句子都有一对正例输出句和负例输出句,它们分别有一个正例关键词和一个反例关键词。这样,在整个集合中,对于任何一个输出句子,都可以认为其对应的关键词与每一个周围都有正缘(通过句子之间的正负关系),而每一个周围都有一个负缘它们之间。基于这些关键词节点和它们的直接边,我们可以构建一个关键词图。我们使用BERT嵌入[7]作为每个节点的初始化,并使用MLP层来学习每个边的表示。我们通过图注意力(GAT)层和MLP层迭代更新关键字网络中的节点和边。在每次迭代中,我们首先按以下方式更新边缘表示:这里可以是or。然后根据更新的边,我们通过一个图注意力层更新每个节点的表示:这里都是可学习的参数,也就是注意力权重。为了防止梯度消失的问题,我们添加了残差连接来获得本次迭代中节点的表示。我们使用最后一次迭代的节点表示作为键表示,表示为u。关键字与关键字粒度比较来自输入句子的关键字和冒名顶替者节点。我们记录从输入句子的输出正样本中提取的关键词为,其在上述关键词网络中的负邻居节点为(·),用于表示距离度量。在关键词粒度的比较学习中,我们选择余弦相似度来计算两点之间的距离。跨粒度比较学习可以注意到,上述句子粒度和关键词粒度的比较学习是分别在分布和点上实现的,这样两个粒度的独立比较可能会由于以下原因导致增强效果减弱微小的差异。对此,我们基于点与分布之间的马氏距离(Mahalanobisdistance)[8],构建不同粒度之间的比较关联,使得目标输出关键词到句子分布的距离比距离尽可能小从冒名顶替到分布,从而弥补了每个粒径独立比较可能造成的对比度消失的缺陷。具体来说,跨粒度马氏距离对比学习希望尽可能地缩小后验语义分布与句子的距离,同时尽可能地拉大它与句子的距离。损失函数如下:这里也用来指代Or,h(·)是马氏距离。实验与分析实验结果我们在三个公共数据集Douban(Dialogue)[9]、QQP(Paraphrasing)[10][11]和RocStories(Storytelling)[12]上进行了实验,所有这些都达到了SOTA性能。我们比较的基线包括传统的生成模型(例如CVAE[13]、Seq2Seq[14]、Transformer[15])、基于预训练模型的方法(例如Seq2Seq-DU[16]、DialoGPT[17]、BERT-GEN[7]、T5[18])和基于对比学习的方法(例如Group-wise[9]、T5-CLAPS[19])。我们计算了句子对之间的BLEUscore[20]和BOWembeddingdistance(extrema/average/greedy)[21]作为自动评价指标,结果如下图所示:dataset同理,三个标注者分别标注了T5-CLAPS、DialoGPT、Seq2Seq-DU和我们模型生成的结果,结果如下图:Ablationanalysis我们使用了关键词,是否使用关键词网络,以及是否使用Mahalanobisdistancecontrastdistribution进行消融分析实验,结果表明这三种设计确实对最终结果起到了重要作用,实验结果如下图所示。可视化分析为了研究对比学习在不同层次上的作用,我们将随机抽样的案例可视化,通过t-sne[22]降维后得到下图。从图中可以看出,输入句子的表示与提取的关键词的表示接近,说明关键词作为句子中最重要的信息,通常决定语义分布的位置。而且,在比较学习中,我们可以看到经过训练后,输入句子的分布更接近正样本,更远离负样本,这说明比较学习有助于纠正语义分布。关键词重要性分析最后,我们探讨了抽样不同关键词的影响。如下表所示,对于一个输入问题,我们提供关键字作为条件,通过TextRank抽取和随机选择的方式来控制语义分布,并检查生成文本的质量。关键词是句子中最重要的信息单元。不同的关键字会导致不同的语义分布和不同的测试。您选择的关键字越多,生成的句子就越准确。同时,其他模型生成的结果也如下表所示。业务应用程序在本文中,我们提出了一种跨粒度的分层对比学习机制,该机制优于多个文本生成数据集上的竞争基线工作。基于该工作的查询重写模型在支付宝搜索的实际业务场景中成功实现,取得了显着的效果。支付宝搜索服务涉及领域广泛,具有显着的领域特色。用户搜索查询的表达方式与服务的表达方式存在巨大的字面差异,导致直接基于关键词匹配很难达到理想的结果(例如,用户输入查询“Newlylaunchedcarquery”,cannotrecalltheservice"newcarlistingquery"),查询重写的目标是在保持查询意图不变的情况下,将用户输入的查询重写为更接近服务表达的方式,从而更好地匹配目标服务。以下是一些重写示例: