通过对比学习改进生成式文本摘要

news2025/1/17 1:14:22

当前在文本摘要领域,利用深度模型的监督学习方式表现的最好,这类方法基本都是将摘要抽取看做seq2seq自回归的生成任务,训练时基于极大似然估计,让模型预测的序列的概率最大近似标注的参考序列。

这类方法存在一个明显的问题就是:模型在预测时候上一个token并不都跟参考序列中的一样,这样造成模型训练与预测时输入不一致性问题,从而使得模型在预测时出现性能衰退的问题。这被称作exposure bias(曝光偏差)。

seq2seq自回归的生成任务使用teacher-forcing,训练时上一个token100%跟参考序列一样,预测时上一个token不一定跟参考序列一样,所以预测时可能会一步错步步皆错。

问题:teacher-forcing导致exposure bias(曝光偏差)

一个输入序列:

英国实施一周四天工作制。

给序列加上起止符号:

[START]英国实施一周四天工作制。[END]

训练过程如下:

NO.

已经知道的x

预测的y

teacher-forcing下已经知道的x

teacher-forcing下预测的y

teacher纠正

1

[START]

??

[START]

??

英国

2

[START] ??

xx

[START] 英国

xx

实施

3

[START]?? xx

aa

[START] 英国 实施

aa

一周

...

...

...

...

...

..

在teacher-forcing下,如果一开始预测的"??"为"我",teacher会把"我"纠正为"英国",从而更快地学会生成正确的序列。
不使用teacher-forcing,如果一开始预测的"??"为"我",那么此后的预测是基于先前错误的x继续生成下一个词,从而使得预测的序列偏离正轨。

使用teacher-forcing,在训练的时候能获得较好的效果(因为训练数据有标准答案,可以在训练的过程中随时纠正答案),但是在测试的时候因为没有标准答案,可能生成的答案和训练时有很大的不同,导致模型脆弱。

一个常用的缓解方法是beam search:对词表中每一个单词的预测概率执行搜索,生成多个候选的输出序列。

解决方法——对比学习

对比学习的一般思想是构造正样例(与原样例语义相似的样例)和负样例(与原样例语义不相似的样例),通过设计对比损失函数,缩小语义相似样例在表示空间中的距离,增大语义不相似的样例在表示空间中的距离,起到类似聚类的效果。

  1. Alleviating Exposure Bias via Contrastive Learning for Abstractive TextSummarization

参考摘要称为“黄金摘要”。预测时由于没有teacher-forcinng,生成的摘要称为“白银摘要”(往往包含虚假事实,其表面形式可能与文本相似,但实际上与其原始含义相反 )。

预测时生成的摘要一定是“白银摘要”吗

作者通过最大似然估计(MLE)增加“黄金摘要”的可能性,同时通过对比学习在训练过程中降低”白银摘要”的可能性。在一定程度上,它有助于防止模型生成白银摘要。这种方法也可以被视为一种特殊的数据增强策略,它使模型能够从正样本(黄金摘要)和负样本(白银摘要)中学习。当推理时生成的银色摘要参与另一轮训练时,训练和推理之间的差异可以减少,从而可以减轻exposure bias。

1.1问题定义

在teacher forcing下,学习目标是在输入文本和黄金摘要中先前的Tokens 的条件下,最大化黄金摘要中每个Token的可能性。损失函数定义为负对数似然 (NLL),如下所示:

其中 是黄金摘要的第个Token的对数似然。

在推理时,模型必须使用生成的token 来预测token。通常,基于beam search 分数 。beam search算法被用于在每个时间步长获取多个备选方案。然后,模型通过beam search一个token一个token地生成候选摘要,并选择beam search得分最高的一个作为输出摘要。具有与输入文本 相关联的m个Tokens的一个备选序列的beam search得分如下计算:

其中,是生成序列的第i个Token的预测对数似然,表示早于Token的Token,是与序列长度相关的附加指数惩罚。对于文本摘要任务, 小于1.0,以避免生成冗余信息。

当通过NLL损失对数据集进行训练时,黄金摘要的分数S预计会上升,因此更有可能将黄金摘要作为候选摘要之一,从而选择黄金摘要作为生成的候选摘要中的最终输出。但是,也可能存在着更高的得分S然而质量却低的候选摘要。当它作为输出摘要时,被称为“白银摘要”。白银摘要的出现可归因于差异问题,因为 seq2seq 模型只能在训练时观测黄金摘要,而模型需要在推理时评估大量看不见的替代方案。

1.2对比学习

为了缓解上述问题,我们建议在训练期间通过对比学习降低白银摘要的分数。

具体来说,对seq2seq模型进行了优化,以确保“pos分数”高于“neg分数”。对于相同的文本X,pos分数通过公式(2)计算黄金摘要,而neg分数的计算方式相同,但使用白银摘要。margin ranking loss损失被定义为增加pos分数,同时降低neg分数,如下所示:

其中是margin value。

训练时, 大于 的值时产生损失。为了减少损失,最小化 ,训练使得 - 的值变小, 变小, 变大。

注意,如果pos分数高于超过边缘值的neg分数,则无法优化模型,因为当值为零时,梯度也为零。为了最有效地利用训练数据并防止模型欠拟合,我们还将NLL损失包含在整体损失函数中,即:

1.3模型训练

2.SimCLS: A Simple Framework for Contrastive Learning of Abstractive Summarization(2021ACL会议)

teacher-forcing的方式生成的序列,从概率上说是最高的,但是并不一定是最好的。

因为生成的序列是基于token级别的概率上的预测,然而摘要的好坏的评价指标(通常是ROUGE分数)是比较输出的摘要和参考摘要的整体相似度。这就存在着 目标函数与评价指标不一致的问题。

在文中,作者提出使用一种两阶段的抽象摘要模型:Seq2Seq模型首先通过MLE loss被训练,生成候选摘要,然后用一个参数化的评估模型通过对比学习训练,把生成的候选摘要进行排序。通过监督学习来训练这两个模型,在不同阶段分别优化生成模型和评估模型。

Doc, S, Ref分别表示文档,生成的摘要,参考摘要。第一阶段,Seq2Seq(BART)生成候选摘要。第二阶段,打分模型(RoBERTa)基于源文档预测候选摘要的表现。打分模型通过对比学习训练,训练样本由Seq2Seq模型提供。

2.1阶段一:候选摘要生成

生成模型g是seq2seq模型,基于源文档D,生成多个候选摘要,...,,抽样策略可以使用beam search。n是被采样的候选摘要的数量。

2.2阶段二:无参考评估

对于源文档D来说,越好的候选摘要应该得到越高的分数。作者定义了一个评价函数h,旨在根据源文档D和候选摘要的相似度,对候选摘要打分,...,=()。最终输出的摘要S是最高分数的候选摘要。

在这里,实例化h为预训练模型Roberta。它分别给候选摘要和源文档D编码,编码器的第一个Token的余弦相似度作为相似度分数

2.3对比学习

对打分模型h引入一个ranking loss。候选摘要之间进行对比训练,候选摘要和参考摘要进行对比训练。

基于分数()按降序排列。在这里,=()*是超参数,M可以是任何自动评估指标或者是人为判断,在本文中是ROUGE。

前一个部分当候选摘要的评分高于真实参考摘要时会产生损失值,在第二个部分当较差的候选摘要的评分高于较好的候选摘要时会产生损失。

3.Bringing Order to Abstractive Summarization(2022ACL会议)

通过MLE方式训练,使得模型生成参考摘要的概率变高。但这样训练,非参考摘要之间的好坏没有能力辨别。

而且在预测阶段,模型生成的摘要不一定是参考摘要,通过beam search生成多个候选摘要时,模型没有能力区分这些候选摘要的好坏(通过生成的概率来区分候选摘要的好坏是没有信服力的)。

所以论文提出增加一个评分模型来评估生成的候选摘要的质量,从而解决训练时的目标函数和评价指标(ROUGE)不一致的问题。

模型

给定一篇文档D,训练一个模型g,使得生成一个合适的摘要序列S。

摘要生成模型g应该具备给更好的候选摘要序列分配更高的概率。为了实现这个想法,我们需要训练一个模型使得g生成的摘要的概率的大小和评价指标M(ROUGE分数)一致,通过对生成的候选摘要按评价指标排序,引入对比损失, 将排序后的候选摘要形成对比样本,对模型进行优化。

模型分为两个部分,即Seq2Seq生成模型(Seq2Seq Generation Model)以及无参考评分模型(Reference-fredd Evaluation Model),前者通过自回归的方式和Diverse Beam Search生成候选摘要,后者针对生成的候选摘要进行评分。生成模型和评分模型的结构是一致的,采用的是相同的预训练语言模型BART或PEGASUS,但生成模型的训练是使用的是标准的MLE损失,而评分模型的训练主要使用的是对比损失(contrastive loss),对比损失的计算基于生成模型生成的多个候选摘要。

损失函数

生成模型的训练使用的是MLE损失针对预训练模型进行微调,该过程并没有什么特殊之处。而评分模型的训练是基于一个多任务学习框架,对应的模型称为BRIO-Mul,该框架采用的是一个一个多任务损失,分别由对比损失和普通的交叉熵损失和构成,由于对比损失是定义在序列级别的,所以这里token级别的交叉熵损失可以起到标准化的辅助作用,以确保评分模型可以在整个序列上分配相对平衡的概率。实际上,直接去除这里的交叉熵损失也不会产生太大的影响,评分模型的关键只在于这个对比损失。

=+表示普通的交叉熵损失,表示对比损失,表示对比损失的权重,通常设置较大的值效果才比较好(比如100)。

对比损失被用来训练模型作为无参考评分模型的能力。典型的对比学习中的对比损失需要显式的构造正样本和样本,但这里没有采用这种方式,而是采用排序损失(ranking loss)来实现对比损失,标题中的Bring Order正源于此。也就是说,论文通过引入排序损失这种对比学习方式,来把评价指标M(通常为Rouge)引入到了评分函数,从而让整体模型在训练过程中不再仅仅依赖于token级别的损失,而能够直接拥有感知序列级别的差异的能力。

=()*是两个不同的候选摘要,ROUGE()>ROUGE(),对于任意的i,j,i<j。

为候选摘要的长度归一化估计对数概率(实际就是候选摘要的评分)。是长度惩罚超参数。

()表示给定先前已经预测出来的序列,预测下一个单词的概率。

比较SimCLS和BRIO,它们都是生成多个候选摘要,然后通过对比学习的方式对摘要进行打分,使得模型具有辨别摘要好坏的能力,迫使模型生成高质量的摘要。不同的是,前者的生成候选摘要(BART)和评分模型(Roberta)采用了两个独立的模型,后者使用的是单一模型(BART)进行候选摘要生成和评分。使用单一模型的好处是评分模型和生成模型的参数可以共享,使得训练更加充分?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/378828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

福特FORD EDI需求分析

福特&#xff08;Ford&#xff09;是世界著名的汽车品牌&#xff0c;为美国福特汽车公司&#xff08;Ford Motor Company&#xff09;旗下的众多品牌之一。福特在其发展史中始终拥有先进的产业观念&#xff0c;从其“福特制”的生产管理模式可见一斑。 EDI是供应链企业信息整合…

实现RecyclerView二级列表

自定义RecyclerView的adapter实现二级列表 图片大于5MB&#xff0c;CSDN不让上传&#xff0c;使用github链接&#xff0c;如果看不到请使用科学上网 https://github.com/nanjolnoSat/PersonalProject/blob/recyclerexpandableadapter/Recyclerexpanableadapter/pic/pic1.gif 源…

解决前端跨域的几种方法

一、跨域报错 在我们实际开发过程中&#xff0c;都有遇到过跨域的问题&#xff0c;跨域报错如下&#xff1a; 二、为什么会报跨域&#xff1f; 跨域的本质是浏览器基于同源策略的一种安全手段&#xff0c;主要是考虑到用户的信息安全。何为同源策略呢&#xff1f;同源策略是一种…

【深入浅出 Yarn 架构与实现】4-5 RM 行为探究 - 启动 ApplicationMaster

本节开始&#xff0c;将对 ResourceManager 中一些常见行为进行分析探究&#xff0c;看某些具体关键的行为&#xff0c;在 RM 中是如何流转的。本节将深入源码探究「启动 ApplicationMaster」的具体流程。 一、整体流程 本小节介绍从应用程序提交到启动 ApplicationMaster 的…

sql学习二

文章目录一、 计算函数1. datediff2. all3. year4. sum二、控制流三、过滤 group by having一、 计算函数 1. datediff datediff(日期1, 日期2)&#xff1a; 得到的结果是日期1与日期2相差的天数。 如果日期1比日期2大&#xff0c;结果为正&#xff1b;如果日期1比日期2小&a…

MySQL 学习笔记(借鉴黑马程序员MySQL)

MySQL视频课链接 MySQL概述 数据库相关概念 数据库是存储数据的仓库&#xff0c;数据是有组织的进行存储&#xff08;DataBase&#xff09; 数据库管理系统是操纵和管理数据库的大型软件&#xff08;DataBase Management System&#xff09; SQL是操作关系型数据库的编程语…

Linux(Centos)安装TDengine

目录1&#xff1a;简介2&#xff1a;前期准备3&#xff1a;安装4&#xff1a;启动5&#xff1a;开机自启动6&#xff1a;安装客户端驱动(如果别的服务器需要链接TD则需要此步操作)7&#xff1a;基础命令1&#xff1a;简介 官网&#xff1a; https://www.taosdata.com/简介&…

webpack配置优化,让你的构建速度飞起

前言 越来越多的项目使用webpack5来构建项目了&#xff0c;今天给大家带来最前沿的webpack5配置&#xff0c;让我们代码在编译/运行时性能更好~ 我们会从以下角度来进行优化&#xff1a; 提升打包构建速度减少代码体积优化代码运行性能 提升打包构建速度 在进行打包速度优化…

Elasticsearch入门之Http操作(索引操作、映射操作、文档操作)

Elasticsearch 基本操作 数据格式&#xff1a; Elasticsearch 是面向文档型数据库&#xff0c;一条数据在这里就是一个文档。为了方便大家理解&#xff0c;我们将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比&#xff0c;如下图&#xff1a…

linux服务器时间同步

Linux服务器时间同步 需求&#xff1a;两台以上服务器之间的时间同步&#xff0c;以其中一台服务器为时间源&#xff0c;其余服务器同步这台时间源服务器的时间 其中&#xff0c;时间源服务器需要有访问外网权限&#xff0c;不然时间源服务器无法同互联网同步最新的时间&#…

Linux Vim 简介

文章目录01. 编辑器 Gedit 介绍02. 什么是 Vi(Vim)03. vim工作模式4.1 命令模式4.2 编辑模式4.3 末行模式04. vim教程05. vim基本操作06. vim实用操作7.1 命令模式下的操作7.2 末行模式下的操作01. 编辑器 Gedit 介绍 gedit 是一个 GNOME 桌面环境下兼容 UTF-8 的 文本编辑器。…

Spike on Flow with Validation Rule

问题 在Flow中如何友好的显示Validation Rule相关的错误信息&#xff1f; 举例 创建account记录&#xff0c;如果industry为finance&#xff0c;validation rule要求revenue必填。 假如你有个flow用来创建account&#xff0c;点击save触发条件&#xff0c; 期望&#xff1a;…

具备“结构化思维”的优势

导读&#xff1a; 在日常工作中&#xff0c;我们时常会碰到这样的情况&#xff0c;有的人讲事情逻辑非常混乱&#xff0c;罗列了很多事项&#xff0c;却把握不到重点&#xff0c;无法把一件事情说清楚。这种思维混乱是典型的缺少结构化思维的表现。结构化思维非常重要&#xff…

实例10:四足机器人运动学逆解可视化与实践

实例10&#xff1a; 四足机器人运动学逆解单腿可视化 实验目的 了解逆运动学的有无解、有无多解情况。了解运动学逆解的求解。熟悉逆运动学中求解的几何法和代数法。熟悉单腿舵机的简单校准。掌握可视化逆向运动学计算结果的方法。 实验要求 拼装一条mini pupper的腿部。运…

【大话面试】- Redis 篇-第一篇

【大话面试】- Redis 篇-第一篇 认识 NoSQL SQL VS NoSQL 1️⃣ 结构化&#xff08;Structured&#xff09; SQL 的存储格式 NoSQL 从其存储的结构上来看&#xff0c;对于 SQL 数据库而言&#xff0c;我们可以给每一个表的属性添加不同的约束&#xff08;主键唯一&#xff…

Java时间获取、格式化详情

Java时间获取详情java.util.Datejava.util.CalendarJava8推荐的时间获取方法LocalDate获取日期LocalTime获取时间LocalDateTime 获取时间和日期这里先附上后面会用到的进行时间格式化的代码&#xff1a;SimpleDateFormat timeSimpleDateFormatter new SimpleDateFormat("…

09_MySQL的子查询

子查询指一个查询语句嵌套在另一个查询语句内部的查询&#xff0c;这个特性从MySQL 4.1开始引入。SQL 中子查询的使用大大增强了 SELECT 查询的能力&#xff0c;因为很多时候查询需要从结果集中获取数据&#xff0c;或者需要从同一个表中先计算得出一个数据结果&#xff0c;然后…

【Node.js】MySQL数据库

数据库数据库的基本概念什么是数据库常见的数据库和分类数据库的数据组织结构实际开发中库&#xff0c;表&#xff0c;行&#xff0c;字段的关系MySQL相关的软件MySQL Workbench创建数据库创建数据表设计表字段字段的特殊标识向表中插入数据使用SQL管理数据库什么是SQLSQL能做什…

springcloud3 Nacos中namespace和group,dataId的联系

一 Namespance和group和dataId的联系 1.1 3者之间的联系 话不多说&#xff0c;上答案&#xff0c;如下图&#xff1a; namespance用于区分部署环境&#xff0c;group和dataId用于逻辑上区分两个目标对象。 二 案例&#xff1a;实现读取注册中心的不同环境下的配置文件 …

IDEA中Maven报错:Failed to read artifact descriptor for解决方案

导入spark-core依赖报错 Failed to read artifact descriptor for com.esotericsoftware:kryo-shaded:jar: 图片忘记报错了&#xff0c;拿一张网友的图&#xff0c;现象是spark-core成功导入&#xff0c;但是pom文件中project处报错 这个原因是因为maven版本不匹配&#xff0c…